From 5df32cfef33e538e774eda1912d613e2fec0e155 Mon Sep 17 00:00:00 2001 From: Claudio Saavedra Date: Tue, 8 Sep 2009 18:42:30 +0300 Subject: [PATCH] Set a special window property for windows with menus * hildon/hildon-window-private.h: Add private hildon_window_set_menu_flag() * hildon/hildon-window.c: (+do_set_has_menu), (+hildon_window_set_menu_flag): set "_HILDON_WM_WINDOW_MENU_INDICATOR" to 1 in the window or remove the property. (hildon_window_set_main_menu), (hildon_window_set_app_menu): call above methods to set or remove the property when a menu is added or removed from the window. Partially fixes: NB#137814 (Indicator for view menu in app title area) --- ChangeLog | 16 ++++++++++++++++ hildon/hildon-window-private.h | 3 +++ hildon/hildon-window.c | 24 ++++++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/ChangeLog b/ChangeLog index 22bb7dc..6d41b2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,21 @@ 2009-09-08 Claudio Saavedra + Set a special window property for windows with menus + + * hildon/hildon-window-private.h: Add private + hildon_window_set_menu_flag() + * hildon/hildon-window.c: (+do_set_has_menu), + (+hildon_window_set_menu_flag): set + "_HILDON_WM_WINDOW_MENU_INDICATOR" to 1 in the window + or remove the property. + (hildon_window_set_main_menu), + (hildon_window_set_app_menu): call above methods to set or remove + the property when a menu is added or removed from the window. + + Partially fixes: NB#137814 (Indicator for view menu in app title area) + +2009-09-08 Claudio Saavedra + Rename and move the methods to set flags to hildon-private.h * hildon/hildon-gtk.c: (do_set_progress_indicator), diff --git a/hildon/hildon-window-private.h b/hildon/hildon-window-private.h index 97034a6..c9f3368 100644 --- a/hildon/hildon-window-private.h +++ b/hildon/hildon-window-private.h @@ -84,6 +84,9 @@ hildon_window_get_active_window (void); void G_GNUC_INTERNAL hildon_window_update_title (HildonWindow *window); +void G_GNUC_INTERNAL +hildon_window_set_menu_flag (HildonWindow *window, + gboolean has_menu); G_END_DECLS #endif /* __HILDON_WINDOW_PRIVATE_H__ */ diff --git a/hildon/hildon-window.c b/hildon/hildon-window.c index e61c920..990a2bd 100644 --- a/hildon/hildon-window.c +++ b/hildon/hildon-window.c @@ -95,6 +95,7 @@ #include "hildon-app-menu-private.h" #include "hildon-find-toolbar.h" #include "hildon-defines.h" +#include "hildon-private.h" #define _(String) gettext(String) @@ -1958,6 +1959,25 @@ hildon_window_add_accel_group (HildonWindow *self, gtk_window_add_accel_group (GTK_WINDOW (self), accel_group); } +static void +do_set_has_menu (GtkWindow *window, + gpointer boolptr) +{ + gboolean has_menu = GPOINTER_TO_INT (boolptr); + hildon_gtk_window_set_clear_window_flag (window, "_HILDON_WM_WINDOW_MENU_INDICATOR", + XA_INTEGER, has_menu); + g_signal_handlers_disconnect_matched (window, G_SIGNAL_MATCH_FUNC, + 0, 0, NULL, do_set_has_menu, NULL); +} + +void +hildon_window_set_menu_flag (HildonWindow *window, + gboolean has_menu) +{ + hildon_gtk_window_set_flag (GTK_WINDOW (window), (HildonFlagFunc) do_set_has_menu, + GUINT_TO_POINTER (has_menu)); +} + /** * hildon_window_set_main_menu: * @self: A #HildonWindow @@ -1983,6 +2003,8 @@ hildon_window_set_main_menu (HildonWindow* self, priv = HILDON_WINDOW_GET_PRIVATE (self); + hildon_window_set_menu_flag (self, menu != NULL); + if (priv->menu != NULL) { accel_group = gtk_menu_get_accel_group (priv->menu); @@ -2088,6 +2110,8 @@ hildon_window_set_app_menu (HildonWindow *self, old_menu = priv->app_menu; + hildon_window_set_menu_flag (self, menu != NULL); + /* Add new menu */ priv->app_menu = menu; if (menu) -- 1.7.9.5