Make app menu fallback a bit more reliable

If the theme has no 'menu' control in the window decorations,
show the menubar after all.
This commit is contained in:
Matthias Clasen
2013-12-13 01:19:12 -05:00
parent cf8fb209e3
commit f3d22d2a9b
3 changed files with 17 additions and 4 deletions

View File

@@ -486,11 +486,24 @@ _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
}
gboolean
_gtk_header_bar_get_shows_app_menu (GtkHeaderBar *bar)
_gtk_header_bar_shows_app_menu (GtkHeaderBar *bar)
{
GtkHeaderBarPrivate *priv = gtk_header_bar_get_instance_private (bar);
GtkWindow *window;
gchar *layout_desc;
gboolean ret;
return (priv->titlebar_menu_button != NULL);
window = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (bar)));
gtk_widget_style_get (GTK_WIDGET (window),
"decoration-button-layout", &layout_desc,
NULL);
ret = priv->shows_wm_decorations &&
(layout_desc && strstr (layout_desc, "menu"));
g_free (layout_desc);
return ret;
}
static void

View File

@@ -20,7 +20,7 @@
#ifndef __GTK_HEADER_BAR_PRIVATE_H__
#define __GTK_HEADER_BAR_PRIVATE_H__
gboolean _gtk_header_bar_get_shows_app_menu (GtkHeaderBar *bar);
gboolean _gtk_header_bar_shows_app_menu (GtkHeaderBar *bar);
void _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar);
gboolean _gtk_header_bar_update_window_icon (GtkHeaderBar *bar,
GtkWindow *window);

View File

@@ -3619,7 +3619,7 @@ _gtk_window_titlebar_shows_app_menu (GtkWindow *window)
GtkWindowPrivate *priv = window->priv;
if (GTK_IS_HEADER_BAR (priv->title_box))
return gtk_header_bar_get_show_close_button (GTK_HEADER_BAR (priv->title_box));
return _gtk_header_bar_shows_app_menu (GTK_HEADER_BAR (priv->title_box));
return FALSE;
}