← Back to team overview

ayatana-commits team mailing list archive

[Branch ~dbusmenu-team/dbusmenu/trunk] Rev 198: Making the parser recognize when it hits serializable menu items

 

Merge authors:
  Ted Gould (ted)
Related merge proposals:
  https://code.launchpad.net/~ted/dbusmenu/parse-serializable-menuitem/+merge/47710
  proposed by: Ted Gould (ted)
------------------------------------------------------------
revno: 198 [merge]
committer: Ted Gould <ted@xxxxxxxx>
branch nick: trunk
timestamp: Thu 2011-01-27 13:54:18 -0600
message:
  Making the parser recognize when it hits serializable menu items
modified:
  .bzrignore
  libdbusmenu-gtk/parser.c


--
lp:dbusmenu
https://code.launchpad.net/~dbusmenu-team/dbusmenu/trunk

Your team ayatana-commits is subscribed to branch lp:dbusmenu.
To unsubscribe from this branch go to https://code.launchpad.net/~dbusmenu-team/dbusmenu/trunk/+edit-subscription
=== modified file '.bzrignore'
--- .bzrignore	2011-01-27 19:49:40 +0000
+++ .bzrignore	2011-01-27 19:54:18 +0000
@@ -220,10 +220,10 @@
 libdbusmenu-gtk/DbusmenuGtk-0.4.vapi
 libdbusmenu-gtk/dbusmenu-gtk-0.4.pc
 libdbusmenu-gtk/dbusmenu-gtk3-0.4.pc
+libdbusmenu-gtk/libdbusmenu_gtk_la-serializablemenuitem.lo
+docs/libdbusmenu-gtk/reference/html/DbusmenuGtkSerializableMenuItem.html
+docs/libdbusmenu-gtk/reference/tmpl/serializablemenuitem.sgml
 libdbusmenu-gtk/libdbusmenu_gtk_la-parser.lo
 test-gtk-parser
 test-gtk-parser-test
 test-gtk-parser.xml
-libdbusmenu-gtk/libdbusmenu_gtk_la-serializablemenuitem.lo
-docs/libdbusmenu-gtk/reference/html/DbusmenuGtkSerializableMenuItem.html
-docs/libdbusmenu-gtk/reference/tmpl/serializablemenuitem.sgml

=== modified file 'libdbusmenu-gtk/parser.c'
--- libdbusmenu-gtk/parser.c	2011-01-27 14:50:24 +0000
+++ libdbusmenu-gtk/parser.c	2011-01-27 19:54:18 +0000
@@ -28,6 +28,7 @@
 
 #include "parser.h"
 #include "menuitem.h"
+#include "serializablemenuitem.h"
 
 #define CACHED_MENUITEM  "dbusmenu-gtk-parser-cached-item"
 
@@ -221,13 +222,23 @@
 	return;
 }
 
+/* Turn a widget into a dbusmenu item depending on the type of GTK
+   object that it is. */
 static DbusmenuMenuitem *
 construct_dbusmenu_for_widget (GtkWidget * widget)
 {
-  DbusmenuMenuitem *mi = dbusmenu_menuitem_new ();
+	/* If it's a subclass of our serializable menu item then we can
+	   use its own build function */
+	if (DBUSMENU_IS_GTK_SERIALIZABLE_MENU_ITEM(widget)) {
+		DbusmenuGtkSerializableMenuItem * smi = DBUSMENU_GTK_SERIALIZABLE_MENU_ITEM(widget);
+		return dbusmenu_gtk_serializable_menu_item_build_menuitem(smi);
+	}
 
+  /* If it's a standard GTK Menu Item we need to do some of our own work */
   if (GTK_IS_MENU_ITEM (widget))
     {
+      DbusmenuMenuitem *mi = dbusmenu_menuitem_new ();
+
       gboolean visible = FALSE;
       gboolean sensitive = FALSE;
       if (GTK_IS_SEPARATOR_MENU_ITEM (widget))
@@ -360,11 +371,12 @@
                         "notify",
                         G_CALLBACK (widget_notify_cb),
                         mi);
+      return mi;
     }
 
-  return mi;
-
-	return NULL;
+	/* If it's none of those we're going to just create a
+	   generic menuitem as a place holder for it. */
+	return dbusmenu_menuitem_new();
 }
 
 static void