← Back to team overview

ayatana-commits team mailing list archive

[Branch ~dbusmenu-team/dbusmenu/trunk] Rev 177: Adding an about-to-show signal to the menuitem

 

Merge authors:
  Chris Coulson (chrisccoulson)
Related merge proposals:
  https://code.launchpad.net/~chrisccoulson/dbusmenu/ffox-fixes/+merge/43810
  proposed by: David Barth (dbarth)
  review: Approve - Ted Gould (ted)
  review: Needs Information - Karl Lattimer (karl-qdh)
------------------------------------------------------------
revno: 177 [merge]
committer: Ted Gould <ted@xxxxxxxx>
branch nick: trunk
timestamp: Thu 2011-01-06 23:25:02 -0600
message:
  Adding an about-to-show signal to the menuitem
modified:
  libdbusmenu-glib/menuitem.c
  libdbusmenu-glib/menuitem.h
  libdbusmenu-glib/server.c
  libdbusmenu-gtk/menuitem.h


--
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 'libdbusmenu-glib/menuitem.c'
--- libdbusmenu-glib/menuitem.c	2011-01-06 02:53:27 +0000
+++ libdbusmenu-glib/menuitem.c	2011-01-07 05:25:02 +0000
@@ -70,6 +70,7 @@
 	CHILD_MOVED,
 	REALIZED,
 	SHOW_TO_USER,
+	ABOUT_TO_SHOW,
 	LAST_SIGNAL
 };
 
@@ -229,6 +230,21 @@
 	                                           g_cclosure_marshal_VOID__UINT,
 	                                           G_TYPE_NONE, 1, G_TYPE_UINT, G_TYPE_NONE);
 
+	/**
+		DbusmenuMenuitem::about-to-show:
+		@arg0: The #DbusmenuMenuitem object.
+
+		Emitted when the submenu for this item
+		is about to be shown
+	*/
+	signals[ABOUT_TO_SHOW] =     g_signal_new(DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW,
+	                                          G_TYPE_FROM_CLASS(klass),
+	                                          G_SIGNAL_RUN_LAST,
+	                                          G_STRUCT_OFFSET(DbusmenuMenuitemClass, about_to_show),
+	                                          NULL, NULL,
+	                                          _dbusmenu_menuitem_marshal_VOID__VOID,
+	                                          G_TYPE_BOOLEAN, 0, G_TYPE_NONE);
+
 	g_object_class_install_property (object_class, PROP_ID,
 	                                 g_param_spec_int(PROP_ID_S, "ID for the menu item",
 	                                              "This is a unique indentifier for the menu item.",
@@ -398,7 +414,8 @@
 	if (dbusmenu_menuitem_get_children(mi) == NULL) {
 		g_warning("About to Show called on an item wihtout submenus.  We're ignoring it.");
 	} else {
-		g_signal_emit(G_OBJECT(mi), signals[ITEM_ACTIVATED], 0, 0 /* timestamp */, TRUE);
+		gboolean dummy;
+		g_signal_emit(G_OBJECT(mi), signals[ABOUT_TO_SHOW], 0, &dummy);
 	}
 
 	if (cb != NULL) {

=== modified file 'libdbusmenu-glib/menuitem.h'
--- libdbusmenu-glib/menuitem.h	2010-11-18 02:50:45 +0000
+++ libdbusmenu-glib/menuitem.h	2011-01-07 05:25:02 +0000
@@ -50,6 +50,7 @@
 #define DBUSMENU_MENUITEM_SIGNAL_REALIZED            "realized"
 #define DBUSMENU_MENUITEM_SIGNAL_REALIZED_ID         (g_signal_lookup(DBUSMENU_MENUITEM_SIGNAL_REALIZED, DBUSMENU_TYPE_MENUITEM))
 #define DBUSMENU_MENUITEM_SIGNAL_SHOW_TO_USER        "show-to-user"
+#define DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW       "about-to-show"
 
 #define DBUSMENU_MENUITEM_PROP_TYPE                  "type"
 #define DBUSMENU_MENUITEM_PROP_VISIBLE               "visible"
@@ -127,6 +128,7 @@
  * @child_removed: Slot for #DbusmenuMenuitem::child-removed.
  * @child_moved: Slot for #DbusmenuMenuitem::child-moved.
  * @realized: Slot for #DbusmenuMenuitem::realized.
+ * @about_to_show: Slot for #DbusmenuMenuitem::about-to-show.
  * @buildxml: Virtual function that appends the strings required to represent this menu item in the menu XML file.
  * @handle_event: This function is to override how events are handled by subclasses.  Look at #dbusmenu_menuitem_handle_event for lots of good information.
  * @send_about_to_show: Virtual function that notifies server that the client is about to show a menu.
@@ -158,6 +160,7 @@
 	void (*send_about_to_show) (DbusmenuMenuitem * mi, void (*cb) (DbusmenuMenuitem * mi, gpointer user_data), gpointer cb_data);
 
 	void (*show_to_user) (DbusmenuMenuitem * mi, guint timestamp, gpointer cb_data);
+	gboolean (*about_to_show) (void);
 
 	/*< Private >*/
 	void (*reserved1) (void);

=== modified file 'libdbusmenu-glib/server.c'
--- libdbusmenu-glib/server.c	2010-11-29 21:19:52 +0000
+++ libdbusmenu-glib/server.c	2010-12-13 13:45:05 +0000
@@ -1079,6 +1079,8 @@
 		return;
 	}
 
+	dbusmenu_menuitem_send_about_to_show(mi, NULL, NULL);
+
 	/* GTK+ does not support about-to-show concept for now */
 	g_dbus_method_invocation_return_value(invocation,
 	                                      g_variant_new("(b)", FALSE));

=== modified file 'libdbusmenu-gtk/menuitem.h'
--- libdbusmenu-gtk/menuitem.h	2010-06-14 15:58:21 +0000
+++ libdbusmenu-gtk/menuitem.h	2010-12-13 13:40:01 +0000
@@ -35,6 +35,8 @@
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
 
+G_BEGIN_DECLS
+
 gboolean dbusmenu_menuitem_property_set_image (DbusmenuMenuitem * menuitem, const gchar * property, const GdkPixbuf * data);
 GdkPixbuf * dbusmenu_menuitem_property_get_image (DbusmenuMenuitem * menuitem, const gchar * property);
 
@@ -43,4 +45,6 @@
 gboolean dbusmenu_menuitem_property_set_shortcut_menuitem (DbusmenuMenuitem * menuitem, const GtkMenuItem * gmi);
 void dbusmenu_menuitem_property_get_shortcut (DbusmenuMenuitem * menuitem, guint * key, GdkModifierType * modifiers);
 
+G_END_DECLS
+
 #endif