diff options
author | Ken VanDine <ken.vandine@canonical.com> | 2009-10-05 01:38:17 -0400 |
---|---|---|
committer | Ken VanDine <ken.vandine@canonical.com> | 2009-10-05 01:38:17 -0400 |
commit | 2161c05f527d0d8e36410628214a7d920de66044 (patch) | |
tree | 3199325d538b75b07a0083f043573bd0de92a811 /libdbusmenu-gtk/client.c | |
parent | 29a1c8d0b290c9d131f9f22418d93066953b3460 (diff) | |
parent | 3f51b2b3f1550026d7b0af2dbbe007af6e89e302 (diff) | |
download | libdbusmenu-2161c05f527d0d8e36410628214a7d920de66044.tar.gz libdbusmenu-2161c05f527d0d8e36410628214a7d920de66044.tar.bz2 libdbusmenu-2161c05f527d0d8e36410628214a7d920de66044.zip |
* Upstream release 0.1.6 (LP: #442822)
* Managing the life-cycle of the GTK Menu item better to
ensure that it is positioned correctly and dies
appropriately. (LP: #430904) and (LP: #419953)
* Checking returned properties to ensure that there wasn't
DBus errors. (LP: #433719)
Diffstat (limited to 'libdbusmenu-gtk/client.c')
-rw-r--r-- | libdbusmenu-gtk/client.c | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 901d739..8489424 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -159,7 +159,9 @@ menu_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, gchar * value, GtkMenu static void destoryed_dbusmenuitem_cb (gpointer udata, GObject * dbusmenuitem) { - /* g_debug("DbusmenuMenuitem was destroyed"); */ + #ifdef MASSIVEDEBUGGING + g_debug("DbusmenuMenuitem was destroyed"); + #endif gtk_widget_destroy(GTK_WIDGET(udata)); return; } @@ -176,6 +178,15 @@ new_menuitem (DbusmenuClient * client, DbusmenuMenuitem * mi, gpointer userdata) return; } +#ifdef MASSIVEDEBUGGING +static void +destroy_gmi (GtkMenuItem * gmi, DbusmenuMenuitem * mi) +{ + g_debug("Destorying GTK Menuitem for %d", dbusmenu_menuitem_get_id(mi)); + return; +} +#endif + /** dbusmenu_gtkclient_newitem_base: @client: The client handling everything on this connection @@ -195,8 +206,16 @@ new_menuitem (DbusmenuClient * client, DbusmenuMenuitem * mi, gpointer userdata) void dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * item, GtkMenuItem * gmi, DbusmenuMenuitem * parent) { + #ifdef MASSIVEDEBUGGING + g_debug("GTK Client new item base for %d", dbusmenu_menuitem_get_id(item)); + #endif + /* Attach these two */ g_object_set_data(G_OBJECT(item), data_menuitem, gmi); + g_object_ref(G_OBJECT(gmi)); + #ifdef MASSIVEDEBUGGING + g_signal_connect(G_OBJECT(gmi), "destroy", G_CALLBACK(destroy_gmi), item); + #endif /* DbusmenuMenuitem signals */ g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK(menu_prop_change_cb), gmi); @@ -222,6 +241,10 @@ dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * static void new_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position, DbusmenuGtkClient * gtkclient) { + #ifdef MASSIVEDEBUGGING + g_debug("GTK Client new child for %d on %d at %d", dbusmenu_menuitem_get_id(mi), dbusmenu_menuitem_get_id(child), position); + #endif + if (dbusmenu_menuitem_get_root(mi)) { return; } gpointer ann_menu = g_object_get_data(G_OBJECT(mi), data_menu); @@ -316,14 +339,13 @@ dbusmenu_gtkclient_menuitem_get (DbusmenuGtkClient * client, DbusmenuMenuitem * g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), NULL); g_return_val_if_fail(DBUSMENU_IS_MENUITEM(item), NULL); - GtkMenuItem * mi = GTK_MENU_ITEM(g_object_get_data(G_OBJECT(item), data_menuitem)); - if (mi == NULL) { - // new_menuitem(DBUSMENU_CLIENT(client), item, NULL); + gpointer data = g_object_get_data(G_OBJECT(item), data_menuitem); + if (data == NULL) { g_warning("GTK not updated"); - mi = GTK_MENU_ITEM(g_object_get_data(G_OBJECT(item), data_menuitem)); + return NULL; } - return mi; + return GTK_MENU_ITEM(data); } /* The base type handler that builds a plain ol' |