← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~bratsche/appmenu-gtk/duplicate-separators into lp:appmenu-gtk

 

Cody Russell has proposed merging lp:~bratsche/appmenu-gtk/duplicate-separators into lp:appmenu-gtk.

Requested reviews:
  Canonical Desktop Experience Team (canonical-dx-team)
Related bugs:
  #594867 Duplicate separator items in app menus
  https://bugs.launchpad.net/bugs/594867

-- 
https://code.launchpad.net/~bratsche/appmenu-gtk/duplicate-separators/+merge/28217
Your team ayatana-commits is subscribed to branch lp:appmenu-gtk.
=== modified file 'src/bridge.c'
--- src/bridge.c	2010-06-22 16:06:51 +0000
+++ src/bridge.c	2010-06-22 17:16:26 +0000
@@ -485,22 +485,40 @@
   if (GTK_IS_CONTAINER (widget))
     {
       gboolean increment = GTK_IS_MENU_BAR (widget) || GTK_IS_MENU_ITEM (widget);
+      gboolean skip = FALSE;
 
       if (increment)
         recurse->count++;
 
       if (recurse->count > -1 && increment)
         {
-          recurse->stack[recurse->count] = construct_dbusmenu_for_widget (widget);
-
-          if (recurse->count > 0)
-            {
-              if (recurse->count == 1)
-                dbusmenu_menuitem_child_append (recurse->stack[recurse->count - 1],
-                                                recurse->stack[recurse->count]);
-              else
-                dbusmenu_menuitem_child_prepend (recurse->stack[recurse->count - 1],
-                                                 recurse->stack[recurse->count]);
+          if (GTK_IS_SEPARATOR_MENU_ITEM (widget))
+            {
+              if (recurse->stack[recurse->count] != NULL)
+                {
+                  const gchar *type = dbusmenu_menuitem_property_get (recurse->stack[recurse->count],
+                                                                      DBUSMENU_MENUITEM_PROP_TYPE);
+
+                  if (g_strcmp0 (type, "separator") == 0)
+                    {
+                      skip = TRUE;
+                    }
+                }
+            }
+
+          if (!skip)
+            {
+              recurse->stack[recurse->count] = construct_dbusmenu_for_widget (widget);
+
+              if (recurse->count > 0)
+                {
+                  if (recurse->count == 1)
+                    dbusmenu_menuitem_child_append (recurse->stack[recurse->count - 1],
+                                                    recurse->stack[recurse->count]);
+                  else
+                    dbusmenu_menuitem_child_prepend (recurse->stack[recurse->count - 1],
+                                                     recurse->stack[recurse->count]);
+                }
             }
         }
 


Follow ups