aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib
diff options
context:
space:
mode:
authorKen VanDine <ken.vandine@canonical.com>2010-07-30 13:44:33 -0400
committerKen VanDine <ken.vandine@canonical.com>2010-07-30 13:44:33 -0400
commitb16ca914ae9a5511f1e1b07dbb647fdde57f4027 (patch)
tree917fe3e7c0bed2984718d0f570ffae863a6ed71c /libdbusmenu-glib
parent598b0b51ee4b12d51a47a0bd7b595503041f037d (diff)
parent9b82146e224aa02bc77d1a5a57cf931cadd86438 (diff)
downloadlibdbusmenu-b16ca914ae9a5511f1e1b07dbb647fdde57f4027.tar.gz
libdbusmenu-b16ca914ae9a5511f1e1b07dbb647fdde57f4027.tar.bz2
libdbusmenu-b16ca914ae9a5511f1e1b07dbb647fdde57f4027.zip
Import upstream version 0.3.8
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r--libdbusmenu-glib/dbus-menu.xml14
-rw-r--r--libdbusmenu-glib/dbusmenu-server.h2
-rw-r--r--libdbusmenu-glib/server-marshal.c37
-rw-r--r--libdbusmenu-glib/server-marshal.h8
-rw-r--r--libdbusmenu-glib/server-marshal.list1
-rw-r--r--libdbusmenu-glib/server.c27
-rw-r--r--libdbusmenu-glib/server.h5
7 files changed, 91 insertions, 3 deletions
diff --git a/libdbusmenu-glib/dbus-menu.xml b/libdbusmenu-glib/dbus-menu.xml
index 53b67de..9e8013c 100644
--- a/libdbusmenu-glib/dbus-menu.xml
+++ b/libdbusmenu-glib/dbus-menu.xml
@@ -344,6 +344,20 @@ License version 3 and version 2.1 along with this program. If not, see
</dox:d>
</arg>
</signal>
+ <signal name="ItemActivationRequested">
+ <dox:d>
+ The server is requesting that all clients displaying this
+ menu open it to the user. This would be for things like
+ hotkeys that when the user presses them the menu should
+ open and display itself to the user.
+ </dox:d>
+ <arg type="i" name="id" direction="out" >
+ <dox:d>ID of the menu that should be activated</dox:d>
+ </arg>
+ <arg type="u" name="timestamp" direction="out" >
+ <dox:d>The time that the event occured</dox:d>
+ </arg>
+ </signal>
<!-- End of interesting stuff -->
diff --git a/libdbusmenu-glib/dbusmenu-server.h b/libdbusmenu-glib/dbusmenu-server.h
index dcc65a3..905c3f6 100644
--- a/libdbusmenu-glib/dbusmenu-server.h
+++ b/libdbusmenu-glib/dbusmenu-server.h
@@ -381,7 +381,7 @@ const DBusGObjectInfo dbus_glib__dbusmenu_server_object_info = {
dbus_glib__dbusmenu_server_methods,
7,
"org.ayatana.dbusmenu\0GetLayout\0S\0parentId\0I\0i\0revision\0O\0F\0N\0u\0layout\0O\0F\0N\0s\0\0org.ayatana.dbusmenu\0GetGroupProperties\0S\0ids\0I\0ai\0propertyNames\0I\0as\0properties\0O\0F\0N\0a(ia{sv})\0\0org.ayatana.dbusmenu\0GetChildren\0S\0id\0I\0i\0propertyNames\0I\0as\0properties\0O\0F\0N\0a(ia{sv})\0\0org.ayatana.dbusmenu\0GetProperty\0S\0id\0I\0i\0name\0I\0s\0value\0O\0F\0N\0v\0\0org.ayatana.dbusmenu\0GetProperties\0S\0id\0I\0i\0propertyNames\0I\0as\0properties\0O\0F\0N\0a{sv}\0\0org.ayatana.dbusmenu\0Event\0S\0id\0I\0i\0eventId\0I\0s\0data\0I\0v\0timestamp\0I\0u\0\0org.ayatana.dbusmenu\0AboutToShow\0S\0id\0I\0i\0needUpdate\0O\0F\0N\0b\0\0\0",
-"org.ayatana.dbusmenu\0ItemPropertyUpdated\0org.ayatana.dbusmenu\0ItemUpdated\0org.ayatana.dbusmenu\0LayoutUpdated\0\0",
+"org.ayatana.dbusmenu\0ItemPropertyUpdated\0org.ayatana.dbusmenu\0ItemUpdated\0org.ayatana.dbusmenu\0LayoutUpdated\0org.ayatana.dbusmenu\0ItemActivationRequested\0\0",
"org.ayatana.dbusmenu\0version\0\0"
};
diff --git a/libdbusmenu-glib/server-marshal.c b/libdbusmenu-glib/server-marshal.c
index 6730b16..68552f6 100644
--- a/libdbusmenu-glib/server-marshal.c
+++ b/libdbusmenu-glib/server-marshal.c
@@ -125,3 +125,40 @@ _dbusmenu_server_marshal_VOID__UINT_INT (GClosure *closure,
data2);
}
+/* VOID:INT,UINT (./server-marshal.list:3) */
+void
+_dbusmenu_server_marshal_VOID__INT_UINT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__INT_UINT) (gpointer data1,
+ gint arg_1,
+ guint arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__INT_UINT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__INT_UINT) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_int (param_values + 1),
+ g_marshal_value_peek_uint (param_values + 2),
+ data2);
+}
+
diff --git a/libdbusmenu-glib/server-marshal.h b/libdbusmenu-glib/server-marshal.h
index 3a5a4d0..a561738 100644
--- a/libdbusmenu-glib/server-marshal.h
+++ b/libdbusmenu-glib/server-marshal.h
@@ -22,6 +22,14 @@ extern void _dbusmenu_server_marshal_VOID__UINT_INT (GClosure *closure,
gpointer invocation_hint,
gpointer marshal_data);
+/* VOID:INT,UINT (./server-marshal.list:3) */
+extern void _dbusmenu_server_marshal_VOID__INT_UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
G_END_DECLS
#endif /* ___dbusmenu_server_marshal_MARSHAL_H__ */
diff --git a/libdbusmenu-glib/server-marshal.list b/libdbusmenu-glib/server-marshal.list
index 1689a05..0d68c4e 100644
--- a/libdbusmenu-glib/server-marshal.list
+++ b/libdbusmenu-glib/server-marshal.list
@@ -1,2 +1,3 @@
VOID: INT, STRING, POINTER
VOID: UINT, INT
+VOID: INT, UINT
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c
index 13c2843..aa8dfac 100644
--- a/libdbusmenu-glib/server.c
+++ b/libdbusmenu-glib/server.c
@@ -65,6 +65,7 @@ enum {
ID_PROP_UPDATE,
ID_UPDATE,
LAYOUT_UPDATED,
+ ITEM_ACTIVATION,
LAST_SIGNAL
};
@@ -165,6 +166,22 @@ dbusmenu_server_class_init (DbusmenuServerClass *class)
NULL, NULL,
_dbusmenu_server_marshal_VOID__UINT_INT,
G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_INT);
+ /**
+ DbusmenuServer::item-activation-requested:
+ @arg0: The #DbusmenuServer emitting the signal.
+ @arg1: The ID of the parent for this update.
+ @arg2: The timestamp of when the event happened
+
+ This is signaled when a menuitem under this server
+ sends it's activate signal.
+ */
+ signals[ITEM_ACTIVATION] = g_signal_new(DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION,
+ G_TYPE_FROM_CLASS(class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(DbusmenuServerClass, item_activation),
+ NULL, NULL,
+ _dbusmenu_server_marshal_VOID__INT_UINT,
+ G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_UINT);
g_object_class_install_property (object_class, PROP_DBUS_OBJECT,
@@ -359,6 +376,15 @@ menuitem_child_moved (DbusmenuMenuitem * parent, DbusmenuMenuitem * child, guint
return;
}
+/* Called when a menu item emits its activated signal so it
+ gets passed across the bus. */
+static void
+menuitem_activated (DbusmenuMenuitem * mi, guint timestamp, DbusmenuServer * server)
+{
+ g_signal_emit(G_OBJECT(server), signals[ITEM_ACTIVATION], 0, dbusmenu_menuitem_get_id(mi), timestamp, TRUE);
+ return;
+}
+
/* Connects all the signals that we're interested in
coming from a menuitem */
static void
@@ -368,6 +394,7 @@ menuitem_signals_create (DbusmenuMenuitem * mi, gpointer data)
g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_CHILD_REMOVED, G_CALLBACK(menuitem_child_removed), data);
g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_CHILD_MOVED, G_CALLBACK(menuitem_child_moved), data);
g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK(menuitem_property_changed), data);
+ g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(menuitem_activated), data);
return;
}
diff --git a/libdbusmenu-glib/server.h b/libdbusmenu-glib/server.h
index f4e3527..a9bf213 100644
--- a/libdbusmenu-glib/server.h
+++ b/libdbusmenu-glib/server.h
@@ -46,6 +46,7 @@ G_BEGIN_DECLS
#define DBUSMENU_SERVER_SIGNAL_ID_PROP_UPDATE "item-property-updated"
#define DBUSMENU_SERVER_SIGNAL_ID_UPDATE "item-updated"
#define DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED "layout-updated"
+#define DBUSMENU_SERVER_SIGNAL_ITEM_ACTIVATION "item-activation-requested"
#define DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATE DBUSMENU_SERVER_SIGNAL_LAYOUT_UPDATED
#define DBUSMENU_SERVER_PROP_DBUS_OBJECT "dbus-object"
@@ -58,10 +59,10 @@ G_BEGIN_DECLS
@id_prop_update: Slot for #DbusmenuServer::id-prop-update.
@id_update: Slot for #DbusmenuServer::id-update.
@layout_updated: Slot for #DbusmenuServer::layout-update.
+ @item_activation_requested: Slot for #DbusmenuServer::item-activation-requested.
@dbusmenu_server_reserved1: Reserved for future use.
@dbusmenu_server_reserved2: Reserved for future use.
@dbusmenu_server_reserved3: Reserved for future use.
- @dbusmenu_server_reserved4: Reserved for future use.
The class implementing the virtual functions for #DbusmenuServer.
*/
@@ -73,12 +74,12 @@ struct _DbusmenuServerClass {
void (*id_prop_update)(gint id, gchar * property, gchar * value);
void (*id_update)(gint id);
void (*layout_updated)(gint revision);
+ void (*item_activation)(gint id, guint timestamp);
/* Reserved */
void (*dbusmenu_server_reserved1)(void);
void (*dbusmenu_server_reserved2)(void);
void (*dbusmenu_server_reserved3)(void);
- void (*dbusmenu_server_reserved4)(void);
};
/**