diff options
author | Iain Lane <iain@orangesquash.org.uk> | 2015-05-26 13:51:55 +0100 |
---|---|---|
committer | David King <amigadave@amigadave.com> | 2015-06-22 15:41:11 +0100 |
commit | b479f660d607312f713a1896253dbcf409e9f53b (patch) | |
tree | bef63f4d8235183b07d05321415a3bbd290ce2a6 /src | |
parent | c4add313b9e6c40a3eba039d798e71565be0ee57 (diff) | |
download | yelp-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
Diffstat (limited to 'src')
-rw-r--r-- | src/yelp-window.c | 45 |
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 |