From d1089423bd69517513913e0d7d38acf30c44b757 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Fri, 10 May 2019 23:32:22 +0200 Subject: Implement end of presentation marker --- src/narrative_window.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/narrative_window.c b/src/narrative_window.c index d90913b..7eed8ca 100644 --- a/src/narrative_window.c +++ b/src/narrative_window.c @@ -327,15 +327,21 @@ static void add_slide_sig(GSimpleAction *action, GVariant *parameter, } +static void set_clock_pos(NarrativeWindow *nw) +{ + int pos = gtk_narrative_view_get_cursor_para(GTK_NARRATIVE_VIEW(nw->nv)); + int end = narrative_get_num_items_to_eop(nw->n); + if ( pos >= end ) pos = end-1; + pr_clock_set_pos(nw->pr_clock, pos, end); +} + + static void first_para_sig(GSimpleAction *action, GVariant *parameter, gpointer vp) { NarrativeWindow *nw = vp; - int n_paras = narrative_get_num_items(nw->n); gtk_narrative_view_set_cursor_para(GTK_NARRATIVE_VIEW(nw->nv), 0); - pr_clock_set_pos(nw->pr_clock, - gtk_narrative_view_get_cursor_para(GTK_NARRATIVE_VIEW(nw->nv)), - n_paras); + set_clock_pos(nw); update_toolbar(nw); } @@ -343,13 +349,10 @@ static void first_para_sig(GSimpleAction *action, GVariant *parameter, static void ss_prev_para(SCSlideshow *ss, void *vp) { NarrativeWindow *nw = vp; - int n_paras = narrative_get_num_items(nw->n); if ( gtk_narrative_view_get_cursor_para(GTK_NARRATIVE_VIEW(nw->nv)) == 0 ) return; gtk_narrative_view_set_cursor_para(GTK_NARRATIVE_VIEW(nw->nv), gtk_narrative_view_get_cursor_para(GTK_NARRATIVE_VIEW(nw->nv))-1); - pr_clock_set_pos(nw->pr_clock, - gtk_narrative_view_get_cursor_para(GTK_NARRATIVE_VIEW(nw->nv)), - n_paras); + set_clock_pos(nw); update_toolbar(nw); } @@ -387,7 +390,7 @@ static void ss_next_para(SCSlideshow *ss, void *vp) } } - pr_clock_set_pos(nw->pr_clock, gtk_narrative_view_get_cursor_para(nv), n_paras); + set_clock_pos(nw); ns = narrative_get_slide(nw->n, gtk_narrative_view_get_cursor_para(nv)); if ( nw->show != NULL && ns != NULL ) { sc_slideshow_set_slide(nw->show, ns); @@ -408,11 +411,8 @@ static void last_para_sig(GSimpleAction *action, GVariant *parameter, gpointer vp) { NarrativeWindow *nw = vp; - int n_paras = narrative_get_num_items(nw->n); gtk_narrative_view_set_cursor_para(GTK_NARRATIVE_VIEW(nw->nv), -1); - pr_clock_set_pos(nw->pr_clock, - gtk_narrative_view_get_cursor_para(GTK_NARRATIVE_VIEW(nw->nv)), - n_paras); + set_clock_pos(nw); update_toolbar(nw); } -- cgit v1.2.3