← Back to team overview

ayatana-commits team mailing list archive

[Branch ~dbusmenu-team/dbusmenu/trunk] Rev 230: Adding an 'event' signal for generic event handling

 

Merge authors:
  Ted Gould (ted)
Related merge proposals:
  https://code.launchpad.net/~ted/dbusmenu/handle-event-signal/+merge/50785
  proposed by: Ted Gould (ted)
  review: Approve - Mikkel Kamstrup Erlandsen (kamstrup)
  review: Resubmit - Ted Gould (ted)
------------------------------------------------------------
revno: 230 [merge]
committer: Ted Gould <ted@xxxxxxxx>
branch nick: trunk
timestamp: Thu 2011-02-24 09:44:53 -0600
message:
  Adding an 'event' signal for generic event handling
modified:
  libdbusmenu-glib/menuitem-marshal.list
  libdbusmenu-glib/menuitem.c
  libdbusmenu-glib/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-marshal.list'
--- libdbusmenu-glib/menuitem-marshal.list	2010-11-18 03:11:40 +0000
+++ libdbusmenu-glib/menuitem-marshal.list	2011-02-23 15:36:15 +0000
@@ -4,3 +4,4 @@
 VOID: OBJECT
 VOID: VOID
 VOID: UINT
+BOOLEAN: STRING, VARIANT, UINT

=== modified file 'libdbusmenu-glib/menuitem.c'
--- libdbusmenu-glib/menuitem.c	2011-02-24 14:34:48 +0000
+++ libdbusmenu-glib/menuitem.c	2011-02-24 15:44:53 +0000
@@ -74,6 +74,7 @@
 	REALIZED,
 	SHOW_TO_USER,
 	ABOUT_TO_SHOW,
+	EVENT,
 	LAST_SIGNAL
 };
 
@@ -247,6 +248,23 @@
 	                                          NULL, NULL,
 	                                          _dbusmenu_menuitem_marshal_VOID__VOID,
 	                                          G_TYPE_BOOLEAN, 0, G_TYPE_NONE);
+	/**
+		DbusmenuMenuitem::event:
+		@arg0: The #DbusmenuMenuitem object.
+		@arg1: Name of the event
+		@arg2: Information passed along with the event
+		@arg3: X11 timestamp of when the event happened
+
+		Emitted when an event is passed through.  The event is signalled
+		after handle_event is called.
+	*/
+	signals[EVENT] =             g_signal_new(DBUSMENU_MENUITEM_SIGNAL_EVENT,
+	                                          G_TYPE_FROM_CLASS(klass),
+	                                          G_SIGNAL_RUN_LAST,
+	                                          G_STRUCT_OFFSET(DbusmenuMenuitemClass, event),
+	                                          g_signal_accumulator_true_handled, NULL,
+	                                          _dbusmenu_menuitem_marshal_BOOLEAN__STRING_VARIANT_UINT,
+	                                          G_TYPE_BOOLEAN, 3, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_UINT);
 
 	g_object_class_install_property (object_class, PROP_ID,
 	                                 g_param_spec_int(PROP_ID_S, "ID for the menu item",
@@ -1549,9 +1567,13 @@
 	#endif
 	DbusmenuMenuitemClass * class = DBUSMENU_MENUITEM_GET_CLASS(mi);
 
-	if (class->handle_event != NULL) {
+	gboolean handled = FALSE;
+	g_signal_emit(G_OBJECT(mi), EVENT, g_quark_from_string(name), name, variant, timestamp, &handled);
+
+	if (!handled && class->handle_event != NULL) {
 		return class->handle_event(mi, name, variant, timestamp);
 	}
+
 	return;
 }
 

=== modified file 'libdbusmenu-glib/menuitem.h'
--- libdbusmenu-glib/menuitem.h	2011-02-21 20:14:56 +0000
+++ libdbusmenu-glib/menuitem.h	2011-02-24 15:44:53 +0000
@@ -96,6 +96,7 @@
  * String to attach to signal #DbusmenuServer::about-to-show
  */
 #define DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW       "about-to-show"
+#define DBUSMENU_MENUITEM_SIGNAL_EVENT               "event"
 
 /**
  * DBUSMENU_MENUITEM_PROP_TYPE:
@@ -320,12 +321,12 @@
  * @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.
  * @show_to_user: Slot for #DbusmenuMenuitem::show-to-user.
+ * @event: Slot for #DbsumenuMenuitem::event.
  * @reserved1: Reserved for future use.
  * @reserved2: Reserved for future use.
  * @reserved3: Reserved for future use.
  * @reserved4: Reserved for future use.
  * @reserved5: Reserved for future use.
- * @reserved6: Reserved for future use.
  *
  * Functions and signals that every menuitem should know something 
  * about.
@@ -351,13 +352,14 @@
 	void (*show_to_user) (DbusmenuMenuitem * mi, guint timestamp, gpointer cb_data);
 	gboolean (*about_to_show) (void);
 
+	void (*event) (const gchar * name, GVariant * value, guint timestamp);
+
 	/*< Private >*/
 	void (*reserved1) (void);
 	void (*reserved2) (void);
 	void (*reserved3) (void);
 	void (*reserved4) (void);
 	void (*reserved5) (void);
-	void (*reserved6) (void);
 };
 
 GType dbusmenu_menuitem_get_type (void);