Implement deletion of items
authorThomas White <taw@bitwiz.me.uk>
Thu, 2 May 2019 21:00:03 +0000 (23:00 +0200)
committerThomas White <taw@bitwiz.me.uk>
Thu, 2 May 2019 21:04:23 +0000 (23:04 +0200)
libstorycode/gtk/gtkslideview.c
libstorycode/gtk/gtkslideview.h
src/slide_window.c

index 0990a6f..c0c0d9e 100644 (file)
@@ -1021,6 +1021,11 @@ static void do_backspace(GtkSlideView *e, signed int dir)
        struct slide_pos p1, p2;
        size_t o1, o2;
 
+       if ( e->cursor_frame->type == SLIDE_ITEM_IMAGE ) {
+               gtk_slide_view_delete_selected_frame(e);
+               return;
+       }
+
        if ( !slide_positions_equal(e->sel_start, e->sel_end) ) {
 
                /* Block delete */
@@ -1118,6 +1123,8 @@ static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event,
                                           event);
        if ( r ) return FALSE;  /* IM ate it */
 
+       if ( e->cursor_frame == NULL ) return FALSE;
+
        switch ( event->keyval ) {
 
                case GDK_KEY_Left :
@@ -1166,6 +1173,17 @@ static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event,
 }
 
 
+void gtk_slide_view_delete_selected_frame(GtkSlideView *e)
+{
+       if ( e->cursor_frame == NULL ) return;
+       slide_delete_item(e->slide, e->cursor_frame);
+       unset_selection(e);
+       e->cursor_frame = NULL;
+       emit_change_sig(e);
+       redraw(e);
+}
+
+
 static gboolean dnd_motion(GtkWidget *widget, GdkDragContext *drag_context,
                            gint x, gint y, guint time, GtkSlideView *e)
 {
index 9f8fa25..4b891a7 100644 (file)
@@ -151,5 +151,6 @@ extern GType gtk_slide_view_get_type(void);
 
 extern GtkWidget *gtk_slide_view_new(Narrative *n, Slide *slide);
 extern void gtk_slide_view_set_slide(GtkWidget *sv, Slide *slide);
+extern void gtk_slide_view_delete_selected_frame(GtkSlideView *e);
 
 #endif  /* GTK_SLIDE_VIEW_H */
index f291ed6..d81aab3 100644 (file)
@@ -170,8 +170,8 @@ static void copy_frame_sig(GSimpleAction *action, GVariant *parameter,
 static void delete_frame_sig(GSimpleAction *action, GVariant *parameter,
                              gpointer vp)
 {
-       //SlideWindow *sw = vp;
-       //sc_editor_delete_selected_frame(sw->sceditor);
+       SlideWindow *sw = vp;
+       gtk_slide_view_delete_selected_frame(GTK_SLIDE_VIEW(sw->sv));
 }