← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~bratsche/appmenu-gtk/deeper-reparenting into lp:appmenu-gtk

 

Cody Russell has proposed merging lp:~bratsche/appmenu-gtk/deeper-reparenting into lp:appmenu-gtk.

Requested reviews:
  Canonical Desktop Experience Team (canonical-dx-team)
Related bugs:
  #601094 There are no menus for baobab
  https://bugs.launchpad.net/bugs/601094

-- 
https://code.launchpad.net/~bratsche/appmenu-gtk/deeper-reparenting/+merge/29095
Your team ayatana-commits is subscribed to branch lp:appmenu-gtk.
=== modified file 'src/bridge.c'
--- src/bridge.c	2010-07-02 05:11:54 +0000
+++ src/bridge.c	2010-07-02 15:12:30 +0000
@@ -281,8 +281,10 @@
 static void
 app_menu_bridge_proxy_vanished (AppMenuBridge *bridge)
 {
+  /*
   if (bridge->priv->online)
     g_print ("VANISH\n");
+  */
 
   bridge->priv->online = FALSE;
 
@@ -292,7 +294,7 @@
 static void
 app_menu_bridge_proxy_appeared (AppMenuBridge *bridge)
 {
-  g_print ("APPEAR\n");
+  /* g_print ("APPEAR\n"); */
 
   bridge->priv->online = TRUE;
 
@@ -418,14 +420,6 @@
       if (context != NULL)
         window = context->window;
 
-      /*
-      g_print ("VISIBLE: %p %s %s, window: %p %s %s, toplevel: %p %s %s\n",
-               widget, G_OBJECT_TYPE_NAME (widget), get_menu_label_text (widget),
-               window, G_OBJECT_TYPE_NAME (window), get_menu_label_text (window),
-               toplevel, G_OBJECT_TYPE_NAME (toplevel), get_menu_label_text (toplevel)
-               );
-      */
-
       if (toplevel == window)
         {
           rebuild (context->bridge, window);
@@ -490,8 +484,6 @@
 
           gint mode = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "gtk-separator-mode"));
 
-          // g_print ("mode == %d, previous_separator == %d\n", mode, previous_separator);
-
           dbusmenu_menuitem_property_set_bool (mi,
                                                DBUSMENU_MENUITEM_PROP_VISIBLE,
                                                mode == SEPARATOR_MODE_SMART && !previous_separator);
@@ -640,8 +632,6 @@
                                 recurse->context);
             }
 
-          // g_print ("%d: %s %s\n", recurse->count, G_OBJECT_TYPE_NAME (widget), get_menu_label_text (widget));
-
           if (GTK_IS_TEAROFF_MENU_ITEM (widget))
             {
               dbusmenu_menuitem_property_set_bool (recurse->stack[recurse->count],
@@ -856,7 +846,23 @@
       GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
       AppMenuBridge *bridge = APP_MENU_BRIDGE (proxy);
 
-      rebuild (bridge, toplevel);
+      if (gtk_widget_get_parent (widget) == NULL)
+        return;
+
+      if (GTK_IS_WINDOW (toplevel))
+        {
+          g_signal_handlers_disconnect_by_func (widget,
+                                                G_CALLBACK (toplevel_notify_cb),
+                                                proxy);
+          rebuild (bridge, toplevel);
+        }
+      else
+        {
+          g_signal_connect (G_OBJECT (toplevel),
+                            "notify",
+                            G_CALLBACK (toplevel_notify_cb),
+                            proxy);
+        }
     }
 }
 
@@ -892,12 +898,6 @@
   bridge = APP_MENU_BRIDGE (proxy);
   priv = bridge->priv;
 
-  /*
-  g_print ("INSERT (parent %s %p, child %s %p %s\n",
-           G_OBJECT_TYPE_NAME (parent), parent,
-           G_OBJECT_TYPE_NAME (child), child, get_menu_label_text (child));
-  */
-
   toplevel = gtk_widget_get_toplevel (parent);
 
   if (GTK_IS_MENU_BAR (parent))


Follow ups