From 72ccbb44a4d05515e7e29f23ff3e438352d84821 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 21 Jan 2010 17:16:50 -0600 Subject: Removing looking for the revision on the XML --- libdbusmenu-glib/client.c | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) (limited to 'libdbusmenu-glib/client.c') diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index 01dfed7..c4e9860 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -514,34 +514,6 @@ build_proxies (DbusmenuClient * client) return; } -/* Get the "revision" attribute of the node, parse it and - return it. Also we're checking to ensure the node - is a 'menu' here. */ -static gint -parse_node_get_revision (xmlNodePtr node) -{ - if (g_strcmp0((gchar *)node->name, "menu") != 0) { - /* This kills some nodes early */ - g_warning("XML Node is not 'menu' it is '%s'", node->name); - return 0; - } - - xmlAttrPtr attrib; - for (attrib = node->properties; attrib != NULL; attrib = attrib->next) { - if (g_strcmp0((gchar *)attrib->name, "revision") == 0) { - if (attrib->children != NULL) { - guint revision = (guint)g_ascii_strtoull((gchar *)attrib->children->content, NULL, 10); - /* g_debug ("Found ID: %d", id); */ - return revision; - } - break; - } - } - - g_warning("Unable to find a revision on the node"); - return 0; -} - /* Get the ID attribute of the node, parse it and return it. Also we're checking to ensure the node is a 'menu' here. */ @@ -764,7 +736,6 @@ parse_layout (DbusmenuClient * client, const gchar * layout) xmldoc = xmlReadMemory(layout, g_utf8_strlen(layout, 16*1024), "dbusmenu.xml", NULL, 0); xmlNodePtr root = xmlDocGetRootElement(xmldoc); - gint revision = parse_node_get_revision(root); DbusmenuMenuitem * oldroot = priv->root; priv->root = parse_layout_xml(client, root, priv->root, NULL, priv->menuproxy); @@ -781,7 +752,7 @@ parse_layout (DbusmenuClient * client, const gchar * layout) g_signal_emit(G_OBJECT(client), signals[ROOT_CHANGED], 0, priv->root, TRUE); } - return revision; + return 1; } /* When the layout property returns, here's where we take care of that. */ -- cgit v1.2.3 From 40cf6ac5286893b98c75df1a56e4455f888301e6 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 22 Jan 2010 10:47:29 -0600 Subject: Adding in a 0 to make a clean prototype. --- libdbusmenu-glib/client.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libdbusmenu-glib/client.c') diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index 01dfed7..8b8d6e6 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -661,7 +661,7 @@ menuitem_activate (DbusmenuMenuitem * mi, DbusmenuClient * client) GValue value = {0}; g_value_init(&value, G_TYPE_INT); g_value_set_int(&value, 0); - org_ayatana_dbusmenu_event_async (priv->menuproxy, dbusmenu_menuitem_get_id(mi), "clicked", &value, menuitem_call_cb, mi); + org_ayatana_dbusmenu_event_async (priv->menuproxy, dbusmenu_menuitem_get_id(mi), "clicked", &value, 0, menuitem_call_cb, mi); return; } -- cgit v1.2.3 From 3844bcd1fb2d8ad129a842dcee8ee1b3ec214275 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 22 Jan 2010 15:22:54 -0600 Subject: Changing all instances of 'LayoutUpdate' to 'LayoutUpdated' as discussed on the dbusmenu list. --- libdbusmenu-glib/client.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libdbusmenu-glib/client.c') diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index c4e9860..e0879d4 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -499,8 +499,8 @@ build_proxies (DbusmenuClient * client) } dbus_g_object_register_marshaller(_dbusmenu_server_marshal_VOID__INT_UINT, G_TYPE_NONE, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INVALID); - dbus_g_proxy_add_signal(priv->menuproxy, "LayoutUpdate", G_TYPE_INT, G_TYPE_UINT, G_TYPE_INVALID); - dbus_g_proxy_connect_signal(priv->menuproxy, "LayoutUpdate", G_CALLBACK(layout_update), client, NULL); + dbus_g_proxy_add_signal(priv->menuproxy, "LayoutUpdated", G_TYPE_INT, G_TYPE_UINT, G_TYPE_INVALID); + dbus_g_proxy_connect_signal(priv->menuproxy, "LayoutUpdated", G_CALLBACK(layout_update), client, NULL); dbus_g_object_register_marshaller(_dbusmenu_server_marshal_VOID__UINT_STRING_POINTER, G_TYPE_NONE, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); dbus_g_proxy_add_signal(priv->menuproxy, "ItemPropertyUpdated", G_TYPE_UINT, G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); -- cgit v1.2.3 From 1604731c2d68d1a56a4ab87d08ee1867a25eb25a Mon Sep 17 00:00:00 2001 From: Aurelien Gateau Date: Tue, 2 Feb 2010 16:32:49 -0800 Subject: Turn id into an int --- libdbusmenu-glib/client.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'libdbusmenu-glib/client.c') diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index 720c8e2..5d07fc6 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -96,8 +96,8 @@ static void set_property (GObject * obj, guint id, const GValue * value, GParamS static void get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec); /* Private Funcs */ static void layout_update (DBusGProxy * proxy, gint revision, guint parent, DbusmenuClient * client); -static void id_prop_update (DBusGProxy * proxy, guint id, gchar * property, GValue * value, DbusmenuClient * client); -static void id_update (DBusGProxy * proxy, guint id, DbusmenuClient * client); +static void id_prop_update (DBusGProxy * proxy, gint id, gchar * property, GValue * value, DbusmenuClient * client); +static void id_update (DBusGProxy * proxy, gint id, DbusmenuClient * client); static void build_proxies (DbusmenuClient * client); static guint parse_node_get_id (xmlNodePtr node); static DbusmenuMenuitem * parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * item, DbusmenuMenuitem * parent, DBusGProxy * proxy); @@ -321,7 +321,7 @@ layout_update (DBusGProxy * proxy, gint revision, guint parent, DbusmenuClient * /* Signal from the server that a property has changed on one of our menuitems */ static void -id_prop_update (DBusGProxy * proxy, guint id, gchar * property, GValue * value, DbusmenuClient * client) +id_prop_update (DBusGProxy * proxy, gint id, gchar * property, GValue * value, DbusmenuClient * client) { #ifdef MASSIVEDEBUGGING GValue valstr = {0}; @@ -344,7 +344,7 @@ id_prop_update (DBusGProxy * proxy, guint id, gchar * property, GValue * value, /* Oh, lots of updates now. That silly server, they want to change all kinds of stuff! */ static void -id_update (DBusGProxy * proxy, guint id, DbusmenuClient * client) +id_update (DBusGProxy * proxy, gint id, DbusmenuClient * client) { #ifdef MASSIVEDEBUGGING g_debug("Client side ID update: %d", id); @@ -530,7 +530,7 @@ parse_node_get_id (xmlNodePtr node) for (attrib = node->properties; attrib != NULL; attrib = attrib->next) { if (g_strcmp0((gchar *)attrib->name, "id") == 0) { if (attrib->children != NULL) { - guint id = (guint)g_ascii_strtoull((gchar *)attrib->children->content, NULL, 10); + gint id = (guint)g_ascii_strtoull((gchar *)attrib->children->content, NULL, 10); /* g_debug ("Found ID: %d", id); */ return id; } @@ -642,7 +642,7 @@ menuitem_activate (DbusmenuMenuitem * mi, DbusmenuClient * client) static DbusmenuMenuitem * parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * item, DbusmenuMenuitem * parent, DBusGProxy * proxy) { - guint id = parse_node_get_id(node); + gint id = parse_node_get_id(node); #ifdef MASSIVEDEBUGGING g_debug("Client looking at node with id: %d", id); #endif -- cgit v1.2.3 From 96512c9c06438eb32d8af0e29229f84455fffc64 Mon Sep 17 00:00:00 2001 From: Aurelien Gateau Date: Tue, 2 Feb 2010 19:02:34 -0800 Subject: - Allow id to be 0. - Fix default item type. --- libdbusmenu-glib/client.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'libdbusmenu-glib/client.c') diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index 5d07fc6..66984e2 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -99,7 +99,7 @@ static void layout_update (DBusGProxy * proxy, gint revision, guint parent, Dbus static void id_prop_update (DBusGProxy * proxy, gint id, gchar * property, GValue * value, DbusmenuClient * client); static void id_update (DBusGProxy * proxy, gint id, DbusmenuClient * client); static void build_proxies (DbusmenuClient * client); -static guint parse_node_get_id (xmlNodePtr node); +static gint parse_node_get_id (xmlNodePtr node); static DbusmenuMenuitem * parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * item, DbusmenuMenuitem * parent, DBusGProxy * proxy); static gint parse_layout (DbusmenuClient * client, const gchar * layout); static void update_layout_cb (DBusGProxy * proxy, guint rev, gchar * xml, GError * in_error, void * data); @@ -517,20 +517,20 @@ build_proxies (DbusmenuClient * client) /* Get the ID attribute of the node, parse it and return it. Also we're checking to ensure the node is a 'menu' here. */ -static guint +static gint parse_node_get_id (xmlNodePtr node) { if (g_strcmp0((gchar *)node->name, "menu") != 0) { /* This kills some nodes early */ g_warning("XML Node is not 'menu' it is '%s'", node->name); - return 0; + return -1; } xmlAttrPtr attrib; for (attrib = node->properties; attrib != NULL; attrib = attrib->next) { if (g_strcmp0((gchar *)attrib->name, "id") == 0) { if (attrib->children != NULL) { - gint id = (guint)g_ascii_strtoull((gchar *)attrib->children->content, NULL, 10); + gint id = (guint)g_ascii_strtoll((gchar *)attrib->children->content, NULL, 10); /* g_debug ("Found ID: %d", id); */ return id; } @@ -539,7 +539,7 @@ parse_node_get_id (xmlNodePtr node) } g_warning("Unable to find an ID on the node"); - return 0; + return -1; } /* A small helper that calls _property_set on each hash table @@ -643,10 +643,13 @@ static DbusmenuMenuitem * parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * item, DbusmenuMenuitem * parent, DBusGProxy * proxy) { gint id = parse_node_get_id(node); + if (id < 0) { + return NULL; + } #ifdef MASSIVEDEBUGGING g_debug("Client looking at node with id: %d", id); #endif - if (item == NULL || dbusmenu_menuitem_get_id(item) != id || id == 0) { + if (item == NULL || dbusmenu_menuitem_get_id(item) != id) { if (item != NULL) { if (parent != NULL) { dbusmenu_menuitem_child_delete(parent, item); @@ -655,11 +658,6 @@ parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * it item = NULL; } - if (id == 0) { - g_warning("ID from XML file is zero"); - return NULL; - } - /* Build a new item */ item = dbusmenu_menuitem_new_with_id(id); if (parent == NULL) { @@ -689,7 +687,10 @@ parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * it for (children = node->children, position = 0; children != NULL; children = children->next, position++) { /* g_debug("Looking at child: %d", position); */ - guint childid = parse_node_get_id(children); + gint childid = parse_node_get_id(children); + if (childid < 0) { + continue; + } DbusmenuMenuitem * childmi = NULL; GList * childsearch = NULL; -- cgit v1.2.3 From dce7fafe92e88badb2d43ac8bca80f176073767a Mon Sep 17 00:00:00 2001 From: Aurelien Gateau Date: Wed, 3 Feb 2010 10:33:58 -0800 Subject: Fix types of signal params --- libdbusmenu-glib/client.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'libdbusmenu-glib/client.c') diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index 66984e2..9eb684f 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -498,15 +498,15 @@ build_proxies (DbusmenuClient * client) priv->dbusproxy = NULL; } - dbus_g_object_register_marshaller(_dbusmenu_server_marshal_VOID__INT_UINT, G_TYPE_NONE, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INVALID); - dbus_g_proxy_add_signal(priv->menuproxy, "LayoutUpdated", G_TYPE_INT, G_TYPE_UINT, G_TYPE_INVALID); + dbus_g_object_register_marshaller(_dbusmenu_server_marshal_VOID__UINT_INT, G_TYPE_NONE, G_TYPE_UINT, G_TYPE_INT, G_TYPE_INVALID); + dbus_g_proxy_add_signal(priv->menuproxy, "LayoutUpdated", G_TYPE_UINT, G_TYPE_INT, G_TYPE_INVALID); dbus_g_proxy_connect_signal(priv->menuproxy, "LayoutUpdated", G_CALLBACK(layout_update), client, NULL); dbus_g_object_register_marshaller(_dbusmenu_server_marshal_VOID__UINT_STRING_POINTER, G_TYPE_NONE, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); dbus_g_proxy_add_signal(priv->menuproxy, "ItemPropertyUpdated", G_TYPE_UINT, G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); dbus_g_proxy_connect_signal(priv->menuproxy, "ItemPropertyUpdated", G_CALLBACK(id_prop_update), client, NULL); - dbus_g_proxy_add_signal(priv->menuproxy, "ItemUpdated", G_TYPE_UINT, G_TYPE_INVALID); + dbus_g_proxy_add_signal(priv->menuproxy, "ItemUpdated", G_TYPE_INT, G_TYPE_INVALID); dbus_g_proxy_connect_signal(priv->menuproxy, "ItemUpdated", G_CALLBACK(id_update), client, NULL); update_layout(client); -- cgit v1.2.3 From 20416aa05b0ddcf0a6077ec6049a39c1cefea7b9 Mon Sep 17 00:00:00 2001 From: Aurelien Gateau Date: Wed, 3 Feb 2010 17:24:07 -0800 Subject: Add timestamp to activate prototype. --- libdbusmenu-glib/client.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libdbusmenu-glib/client.c') diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index 9eb684f..dbe7b3c 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -627,7 +627,7 @@ menuitem_call_cb (DBusGProxy * proxy, GError * error, gpointer userdata) } static void -menuitem_activate (DbusmenuMenuitem * mi, DbusmenuClient * client) +menuitem_activate (DbusmenuMenuitem * mi, uint timestamp, DbusmenuClient * client) { DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client); GValue value = {0}; -- cgit v1.2.3 From 167062acbd9cddb34596328404fe648f68cc6999 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 3 Feb 2010 18:09:57 -0800 Subject: Bringing through the handling of events through the local subclass of the item. --- libdbusmenu-glib/client.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'libdbusmenu-glib/client.c') diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c index 720c8e2..f5ebbd1 100644 --- a/libdbusmenu-glib/client.c +++ b/libdbusmenu-glib/client.c @@ -35,6 +35,7 @@ License version 3 and version 2.1 along with this program. If not, see #include "client.h" #include "menuitem.h" +#include "client-menuitem.h" #include "dbusmenu-client.h" #include "server-marshal.h" @@ -626,14 +627,11 @@ menuitem_call_cb (DBusGProxy * proxy, GError * error, gpointer userdata) return; } -static void -menuitem_activate (DbusmenuMenuitem * mi, DbusmenuClient * client) +void +dbusmenu_client_send_event (DbusmenuClient * client, gint id, const gchar * name, const GValue * value, guint timestamp) { DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client); - GValue value = {0}; - g_value_init(&value, G_TYPE_INT); - g_value_set_int(&value, 0); - org_ayatana_dbusmenu_event_async (priv->menuproxy, dbusmenu_menuitem_get_id(mi), "clicked", &value, 0, menuitem_call_cb, mi); + org_ayatana_dbusmenu_event_async (priv->menuproxy, id, name, value, timestamp, menuitem_call_cb, GINT_TO_POINTER(id)); return; } @@ -661,11 +659,10 @@ parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * it } /* Build a new item */ - item = dbusmenu_menuitem_new_with_id(id); + item = DBUSMENU_MENUITEM(dbusmenu_client_menuitem_new(id, client)); if (parent == NULL) { dbusmenu_menuitem_set_root(item, TRUE); } - g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(menuitem_activate), client); /* Get the properties queued up for this item */ /* Not happy about this, but I need these :( */ -- cgit v1.2.3