aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.me.uk>2019-05-10 23:32:22 +0200
committerThomas White <taw@bitwiz.me.uk>2019-08-13 21:30:56 +0200
commitd1089423bd69517513913e0d7d38acf30c44b757 (patch)
treec16ea0c45c806a2c8ce2b6c05999aeddaca720e6 /src
parente3ee9aa8ffa5f75707316627940c3dfe96c94ece (diff)
Implement end of presentation marker
Diffstat (limited to 'src')
-rw-r--r--src/narrative_window.c26
1 files changed, 13 insertions, 13 deletions
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);
}