diff options
author | Thomas White <taw@bitwiz.me.uk> | 2019-05-01 15:47:19 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.me.uk> | 2019-05-01 15:47:19 +0200 |
commit | 62dba2de99eff687a74c328b485f70802e8d5bfa (patch) | |
tree | 48328406147f2ef45b579978a73107fc3f8bb63a | |
parent | 693a3af7be9173ea67c911ed99ff0570762c6641 (diff) |
Remove slide windows from narrative window's record when they are closed
-rw-r--r-- | src/narrative_window.c | 22 | ||||
-rw-r--r-- | src/slide_window.c | 2 |
2 files changed, 23 insertions, 1 deletions
diff --git a/src/narrative_window.c b/src/narrative_window.c index b8792c0..cd67706 100644 --- a/src/narrative_window.c +++ b/src/narrative_window.c @@ -111,6 +111,26 @@ static void update_titlebar(NarrativeWindow *nw) } } + +void narrative_window_sw_closed(NarrativeWindow *nw, SlideWindow *sw) +{ + int i; + int found = 0; + + for ( i=0; i<nw->n_slidewindows; i++ ) { + if ( nw->slidewindows[i] == sw ) { + int j; + for ( j=i; j<nw->n_slidewindows-1; j++ ) { + nw->slidewindows[j] = nw->slidewindows[j+1]; + } + nw->n_slidewindows--; + found = 1; + } + } + + if ( !found ) { + fprintf(stderr, "Couldn't find slide window in narrative record\n"); + } } @@ -499,6 +519,8 @@ static gboolean nw_double_click_sig(GtkWidget *da, gpointer *pslide, if ( nw->n_slidewindows < 16 ) { nw->slidewindows[nw->n_slidewindows++] = slide_window_open(nw->n, slide, nw, nw->app); + } else { + fprintf(stderr, _("Too many slide windows\n")); } } else { sc_slideshow_set_slide(nw->show, slide); diff --git a/src/slide_window.c b/src/slide_window.c index ca84b90..5bf9f52 100644 --- a/src/slide_window.c +++ b/src/slide_window.c @@ -163,7 +163,7 @@ static void last_slide_sig(GSimpleAction *action, GVariant *parameter, static gboolean sw_close_sig(GtkWidget *w, SlideWindow *sw) { - //narrative_window_sw_closed(sw->n->narrative_window, sw); + narrative_window_sw_closed(sw->parent, sw); return FALSE; } |