From 0c7ae9d686674986e1a5304dde25aa9e92010bd6 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 26 Apr 2011 21:39:06 -0500 Subject: Dropping the serializable menu item. Not a bad idea, but we can do better. --- libdbusmenu-gtk/parser.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'libdbusmenu-gtk/parser.c') diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c index 4708a64..a304511 100644 --- a/libdbusmenu-gtk/parser.c +++ b/libdbusmenu-gtk/parser.c @@ -28,7 +28,7 @@ License version 3 and version 2.1 along with this program. If not, see #include "parser.h" #include "menuitem.h" -#include "serializablemenuitem.h" +#include "client.h" #define CACHED_MENUITEM "dbusmenu-gtk-parser-cached-item" #define PARSER_DATA "dbusmenu-gtk-parser-data" @@ -473,13 +473,6 @@ sanitize_label (GtkLabel * label) static DbusmenuMenuitem * construct_dbusmenu_for_widget (GtkWidget * widget) { - /* If it's a subclass of our serializable menu item then we can - use its own build function */ - if (DBUSMENU_IS_GTK_SERIALIZABLE_MENU_ITEM(widget)) { - DbusmenuGtkSerializableMenuItem * smi = DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM(widget); - return dbusmenu_gtk_serializable_menu_item_build_menuitem(smi); - } - /* If it's a standard GTK Menu Item we need to do some of our own work */ if (GTK_IS_MENU_ITEM (widget)) { -- cgit v1.2.3 From 7ac87e8939eabab399c33bada6ab29c48ad9b986 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Wed, 27 Apr 2011 15:20:10 -0400 Subject: toggle visibility of menus to fix Eclipse RCP apps --- libdbusmenu-gtk/parser.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libdbusmenu-gtk/parser.c') diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c index 4708a64..b6423ca 100644 --- a/libdbusmenu-gtk/parser.c +++ b/libdbusmenu-gtk/parser.c @@ -270,6 +270,15 @@ new_menuitem (GtkWidget * widget) return item; } +static gboolean +toggle_widget_visibility (GtkWidget * widget) +{ + gboolean vis = gtk_widget_get_visible (widget); + gtk_widget_set_visible (widget, !vis); + gtk_widget_set_visible (widget, vis); + return FALSE; +} + static void watch_submenu(DbusmenuMenuitem * mi, GtkWidget * menu) { @@ -285,6 +294,13 @@ watch_submenu(DbusmenuMenuitem * mi, GtkWidget * menu) G_CALLBACK (child_removed_cb), mi); g_object_add_weak_pointer(G_OBJECT (menu), (gpointer*)&pdata->shell); + + /* Some apps (notably Eclipse RCP apps) don't fill contents of submenus + until the menu is shown. So we fake that by toggling the visibility of + any submenus we come across. Further, these apps need it done with a + delay while they finish initializing, so we put the call in the idle + queue. */ + g_idle_add((GSourceFunc)toggle_widget_visibility, menu); } static void -- cgit v1.2.3 From d75107a47c7fbf87f370cca0134a848d35c60eae Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Wed, 18 May 2011 14:19:49 -0400 Subject: ref menu until we're done toggling its visibility --- libdbusmenu-gtk/parser.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libdbusmenu-gtk/parser.c') diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c index b6423ca..7b27f4f 100644 --- a/libdbusmenu-gtk/parser.c +++ b/libdbusmenu-gtk/parser.c @@ -276,6 +276,7 @@ toggle_widget_visibility (GtkWidget * widget) gboolean vis = gtk_widget_get_visible (widget); gtk_widget_set_visible (widget, !vis); gtk_widget_set_visible (widget, vis); + g_object_unref (G_OBJECT (widget)); return FALSE; } @@ -300,7 +301,8 @@ watch_submenu(DbusmenuMenuitem * mi, GtkWidget * menu) any submenus we come across. Further, these apps need it done with a delay while they finish initializing, so we put the call in the idle queue. */ - g_idle_add((GSourceFunc)toggle_widget_visibility, menu); + g_idle_add((GSourceFunc)toggle_widget_visibility, + g_object_ref (G_OBJECT (menu))); } static void -- cgit v1.2.3 From 47c80383b15dd57e2a386f2d4020214dda1eabe2 Mon Sep 17 00:00:00 2001 From: Jonathan Landis Date: Thu, 16 Jun 2011 22:10:47 -0500 Subject: Unset the value as specified in bug 785828 --- libdbusmenu-gtk/parser.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'libdbusmenu-gtk/parser.c') diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c index 7b27f4f..0443df5 100644 --- a/libdbusmenu-gtk/parser.c +++ b/libdbusmenu-gtk/parser.c @@ -880,6 +880,9 @@ label_notify_cb (GtkWidget *widget, g_idle_add ((GSourceFunc)recreate_menu_item_in_idle_cb, child); } } + + g_value_unset(&prop_value); + return; } static void -- cgit v1.2.3