aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.me.uk>2019-05-02 23:00:03 +0200
committerThomas White <taw@bitwiz.me.uk>2019-05-02 23:04:23 +0200
commite1e382f6adfac5dfdfd2c5cc9dceefe4754951ac (patch)
tree8203930950d27021e9c2e15270b042a27374999d
parent5e6942d40f897bf119fef021c45ac2d141189c11 (diff)
Implement deletion of items
-rw-r--r--libstorycode/gtk/gtkslideview.c18
-rw-r--r--libstorycode/gtk/gtkslideview.h1
-rw-r--r--src/slide_window.c4
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));
}