From e1e382f6adfac5dfdfd2c5cc9dceefe4754951ac Mon Sep 17 00:00:00 2001 From: Thomas White Date: Thu, 2 May 2019 23:00:03 +0200 Subject: Implement deletion of items --- libstorycode/gtk/gtkslideview.c | 18 ++++++++++++++++++ libstorycode/gtk/gtkslideview.h | 1 + src/slide_window.c | 4 ++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/libstorycode/gtk/gtkslideview.c b/libstorycode/gtk/gtkslideview.c index 0990a6f..c0c0d9e 100644 --- a/libstorycode/gtk/gtkslideview.c +++ b/libstorycode/gtk/gtkslideview.c @@ -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) { diff --git a/libstorycode/gtk/gtkslideview.h b/libstorycode/gtk/gtkslideview.h index 9f8fa25..4b891a7 100644 --- a/libstorycode/gtk/gtkslideview.h +++ b/libstorycode/gtk/gtkslideview.h @@ -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 */ diff --git a/src/slide_window.c b/src/slide_window.c index f291ed6..d81aab3 100644 --- a/src/slide_window.c +++ b/src/slide_window.c @@ -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)); } -- cgit v1.2.3