summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Lane <iain@orangesquash.org.uk>2015-05-26 13:51:55 +0100
committerDavid King <amigadave@amigadave.com>2015-06-22 15:41:11 +0100
commitb479f660d607312f713a1896253dbcf409e9f53b (patch)
treebef63f4d8235183b07d05321415a3bbd290ce2a6
parentc4add313b9e6c40a3eba039d798e71565be0ee57 (diff)
downloadyelp-b479f660d607312f713a1896253dbcf409e9f53b.tar.gz
YelpWindow: In Unity, use the header bar as a toolbar
Unity prefers not to use headerbars. Ours is suitable for use as a toolbar, so use it as such. https://bugzilla.gnome.org/show_bug.cgi?id=749903
-rw-r--r--src/yelp-window.c45
1 files changed, 35 insertions, 10 deletions
diff --git a/src/yelp-window.c b/src/yelp-window.c
index 1ab1464f..45faaf4b 100644
--- a/src/yelp-window.c
+++ b/src/yelp-window.c
@@ -184,6 +184,8 @@ struct _YelpWindowPrivate {
gint height;
gboolean configured;
+
+ gboolean use_header;
};
static void
@@ -294,6 +296,7 @@ window_construct (YelpWindow *window)
GtkSizeGroup *size_group;
GMenu *menu, *section;
YelpWindowPrivate *priv = GET_PRIV (window);
+ GtkStyleContext *headerbar_context;
const GActionEntry entries[] = {
{ "yelp-window-new", action_new_window, NULL, NULL, NULL },
@@ -305,6 +308,11 @@ window_construct (YelpWindow *window)
};
gtk_window_set_icon_name (GTK_WINDOW (window), "help-browser");
+
+ g_object_get (gtk_settings_get_default (),
+ "gtk-dialogs-use-header", &priv->use_header,
+ NULL);
+
priv->view = (YelpView *) yelp_view_new ();
g_action_map_add_action_entries (G_ACTION_MAP (window),
@@ -315,8 +323,16 @@ window_construct (YelpWindow *window)
gtk_container_add (GTK_CONTAINER (window), priv->vbox_full);
priv->header = gtk_header_bar_new ();
- gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (priv->header), TRUE);
- gtk_window_set_titlebar (GTK_WINDOW (window), priv->header);
+ if (priv->use_header) {
+ gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (priv->header), TRUE);
+ gtk_window_set_titlebar (GTK_WINDOW (window), priv->header);
+ } else {
+ headerbar_context = gtk_widget_get_style_context (GTK_WIDGET (priv->header));
+ gtk_container_add (GTK_CONTAINER (priv->vbox_full), GTK_WIDGET (priv->header));
+ gtk_style_context_remove_class (headerbar_context, "header-bar");
+ gtk_style_context_add_class (headerbar_context, GTK_STYLE_CLASS_TOOLBAR);
+ gtk_style_context_add_class (headerbar_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
+ }
/** Back/Forward **/
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
@@ -1157,19 +1173,28 @@ view_root_title (YelpView *view,
gchar *root_title, *page_title;
g_object_get (view, "root-title", &root_title, "page-title", &page_title, NULL);
- if (page_title) {
+ if (!priv->use_header) {
+ if (root_title)
+ gtk_window_set_title (GTK_WINDOW (window), root_title);
+ else
+ gtk_window_set_title (GTK_WINDOW (window), _("Help"));
+
+ goto out;
+ }
+
+ if (page_title)
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->header), page_title);
- g_free (page_title);
- } else {
+ else
gtk_header_bar_set_title (GTK_HEADER_BAR (priv->header), _("Help"));
- }
- if (root_title) {
+ if (root_title)
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->header), root_title);
- g_free (root_title);
- } else {
+ else
gtk_header_bar_set_subtitle (GTK_HEADER_BAR (priv->header), NULL);
- }
+
+out:
+ g_free (root_title);
+ g_free (page_title);
}
static void