aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-06-25 15:24:54 -0500
committerTed Gould <ted@canonical.com>2009-06-25 15:24:54 -0500
commit1e11dbfb9f51114ae1f1fe9fc2d25a507f54738a (patch)
treed7d2460c9eec18bcb7a989aecab7b6185bbd51be
parent7dca1c307d2fecb14308f4f31a7bec4c86cc38cc (diff)
downloadlibdbusmenu-1e11dbfb9f51114ae1f1fe9fc2d25a507f54738a.tar.gz
libdbusmenu-1e11dbfb9f51114ae1f1fe9fc2d25a507f54738a.tar.bz2
libdbusmenu-1e11dbfb9f51114ae1f1fe9fc2d25a507f54738a.zip
Making it so that we don't have any gtk events or handling of the root node. It's a special node, we need to leave it alone.
-rw-r--r--libdbusmenu-gtk/client.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c
index 7ba710f..64cb709 100644
--- a/libdbusmenu-gtk/client.c
+++ b/libdbusmenu-gtk/client.c
@@ -154,9 +154,17 @@ new_menuitem (DbusmenuClient * client, DbusmenuMenuitem * mi, gpointer userdata)
return;
}
+static gboolean
+is_root (DbusmenuGtkClient * gtkclient, DbusmenuMenuitem * mi)
+{
+ return mi == dbusmenu_client_get_root(DBUSMENU_CLIENT(gtkclient));
+}
+
static void
new_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position, DbusmenuGtkClient * gtkclient)
{
+ if (is_root(gtkclient, mi)) { return; }
+
gpointer ann_menu = g_object_get_data(G_OBJECT(mi), data_menu);
GtkMenu * menu = GTK_MENU(ann_menu);
if (menu == NULL) {
@@ -170,6 +178,7 @@ new_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position, Dbus
GtkMenuItem * childmi = dbusmenu_gtkclient_menuitem_get (child);
gtk_menu_shell_insert(GTK_MENU_SHELL(menu), GTK_WIDGET(childmi), position);
+ gtk_widget_show(GTK_WIDGET(menu));
return;
}
@@ -177,6 +186,8 @@ new_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position, Dbus
static void
delete_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, DbusmenuGtkClient * gtkclient)
{
+ if (is_root(gtkclient, mi)) { return; }
+
if (g_list_length(dbusmenu_menuitem_get_children(mi)) == 0) {
gpointer ann_menu = g_object_get_data(G_OBJECT(mi), data_menu);
GtkMenu * menu = GTK_MENU(ann_menu);
@@ -193,6 +204,8 @@ delete_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, DbusmenuGtkClient
static void
move_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint new, guint old, DbusmenuGtkClient * gtkclient)
{
+ if (is_root(gtkclient, mi)) { return; }
+
gpointer ann_menu = g_object_get_data(G_OBJECT(mi), data_menu);
if (ann_menu == NULL) {
g_warning("Moving a child when we don't have a submenu!");