aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.me.uk>2019-05-01 15:29:52 +0200
committerThomas White <taw@bitwiz.me.uk>2019-05-01 15:29:52 +0200
commit693a3af7be9173ea67c911ed99ff0570762c6641 (patch)
treea20ef88d4dccd2a2b7b391ddc3473b82403d1302
parentcb978cae87ab7897717818fc1a25d99216a55854 (diff)
Set title bar of slide window properly
-rw-r--r--src/narrative_window.c39
-rw-r--r--src/narrative_window.h6
-rw-r--r--src/slide_window.c26
-rw-r--r--src/slide_window.h5
4 files changed, 51 insertions, 25 deletions
diff --git a/src/narrative_window.c b/src/narrative_window.c
index 1a7d11d..b8792c0 100644
--- a/src/narrative_window.c
+++ b/src/narrative_window.c
@@ -81,41 +81,36 @@ static void show_error(NarrativeWindow *nw, const char *err)
}
-static char *get_titlebar_string(NarrativeWindow *nw)
+char *narrative_window_get_filename(NarrativeWindow *nw)
{
+ char *filename;
if ( nw == NULL || nw->file == NULL ) {
- return strdup(_("(untitled)"));
+ filename = strdup(_("(untitled)"));
} else {
- char *bn = g_file_get_basename(nw->file);
- return bn;
+ filename = g_file_get_basename(nw->file);
}
+ return filename;
}
-
static void update_titlebar(NarrativeWindow *nw)
{
- char *title;
- char *title_new;
+ char title[1026];
+ char *filename;
+ int i;
- title = get_titlebar_string(nw);
- title_new = realloc(title, strlen(title)+16);
- if ( title_new == NULL ) {
- free(title);
- return;
- } else {
- title = title_new;
- }
+ filename = narrative_window_get_filename(nw);
+ snprintf(title, 1024, "%s - Colloquium", filename);
+ if ( narrative_get_unsaved(nw->n) ) strcat(title, " *");
+ free(filename);
- strcat(title, " - Colloquium");
- if ( narrative_get_unsaved(nw->n) ) {
- strcat(title, " *");
- }
gtk_window_set_title(GTK_WINDOW(nw->window), title);
- /* FIXME: Update all slide windows belonging to this NW */
+ for ( i=0; i<nw->n_slidewindows; i++ ) {
+ slide_window_update_titlebar(nw->slidewindows[i]);
+ }
+}
- free(title);
}
@@ -503,7 +498,7 @@ static gboolean nw_double_click_sig(GtkWidget *da, gpointer *pslide,
if ( nw->show == NULL ) {
if ( nw->n_slidewindows < 16 ) {
nw->slidewindows[nw->n_slidewindows++] = slide_window_open(nw->n, slide,
- nw->app);
+ nw, nw->app);
}
} else {
sc_slideshow_set_slide(nw->show, slide);
diff --git a/src/narrative_window.h b/src/narrative_window.h
index 5a7646d..1df4c7f 100644
--- a/src/narrative_window.h
+++ b/src/narrative_window.h
@@ -29,7 +29,13 @@
typedef struct _narrative_window NarrativeWindow;
+#include "slide_window.h"
+
extern NarrativeWindow *narrative_window_new(Narrative *n, GFile *file,
GApplication *papp);
+extern void narrative_window_sw_closed(NarrativeWindow *nw, SlideWindow *sw);
+
+extern char *narrative_window_get_filename(NarrativeWindow *nw);
+
#endif /* NARRATIVE_WINDOW_H */
diff --git a/src/slide_window.c b/src/slide_window.c
index 879501a..ca84b90 100644
--- a/src/slide_window.c
+++ b/src/slide_window.c
@@ -1,7 +1,7 @@
/*
* slide_window.c
*
- * Copyright © 2013-2018 Thomas White <taw@bitwiz.org.uk>
+ * Copyright © 2013-2019 Thomas White <taw@bitwiz.org.uk>
*
* This file is part of Colloquium.
*
@@ -39,6 +39,7 @@
#include "colloquium.h"
#include "slide_window.h"
+#include "narrative_window.h"
struct _slidewindow
@@ -47,6 +48,7 @@ struct _slidewindow
Narrative *n;
Slide *slide;
GtkWidget *sv;
+ NarrativeWindow *parent;
};
@@ -90,6 +92,7 @@ static void change_edit_slide(SlideWindow *sw, Slide *np)
{
gtk_slide_view_set_slide(sw->sv, np);
sw->slide = np;
+ slide_window_update_titlebar(sw);
}
@@ -205,8 +208,8 @@ GActionEntry sw_entries[] = {
};
-extern SlideWindow *slide_window_open(Narrative *n, Slide *slide,
- GApplication *papp)
+SlideWindow *slide_window_open(Narrative *n, Slide *slide,
+ NarrativeWindow *nw, GApplication *papp)
{
GtkWidget *window;
SlideWindow *sw;
@@ -221,6 +224,9 @@ extern SlideWindow *slide_window_open(Narrative *n, Slide *slide,
sw->window = window;
sw->n = n;
sw->slide = slide;
+ sw->parent = nw;
+
+ slide_window_update_titlebar(sw);
g_action_map_add_action_entries(G_ACTION_MAP(window), sw_entries,
G_N_ELEMENTS(sw_entries), sw);
@@ -253,3 +259,17 @@ void slide_window_update(SlideWindow *sw)
h = gtk_widget_get_allocated_height(GTK_WIDGET(sw->sv));
gtk_widget_queue_draw_area(GTK_WIDGET(sw->sv), 0, 0, w, h);
}
+
+
+void slide_window_update_titlebar(SlideWindow *sw)
+{
+ char title[1026];
+ char *filename;
+
+ filename = narrative_window_get_filename(sw->parent);
+ snprintf(title, 1024, "%s (slide %i) - Colloquium", filename,
+ 1+narrative_get_slide_number_for_slide(sw->n, sw->slide));
+ if ( narrative_get_unsaved(sw->n) ) strcat(title, " *");
+
+ gtk_window_set_title(GTK_WINDOW(sw->window), title);
+}
diff --git a/src/slide_window.h b/src/slide_window.h
index c67d05b..f7394fa 100644
--- a/src/slide_window.h
+++ b/src/slide_window.h
@@ -29,9 +29,14 @@
typedef struct _slidewindow SlideWindow;
+#include "narrative_window.h"
+
extern SlideWindow *slide_window_open(Narrative *n, Slide *slide,
+ NarrativeWindow *parent,
GApplication *papp);
extern void slide_window_update(SlideWindow *sw);
+extern void slide_window_update_titlebar(SlideWindow *sw);
+
#endif /* SLIDEWINDOW_H */