diff options
author | Ted Gould <ted@canonical.com> | 2009-06-25 15:24:54 -0500 |
---|---|---|
committer | Ted Gould <ted@canonical.com> | 2009-06-25 15:24:54 -0500 |
commit | 1e11dbfb9f51114ae1f1fe9fc2d25a507f54738a (patch) | |
tree | d7d2460c9eec18bcb7a989aecab7b6185bbd51be | |
parent | 7dca1c307d2fecb14308f4f31a7bec4c86cc38cc (diff) | |
download | libdbusmenu-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.c | 13 |
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!"); |