aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-10-15 13:48:05 -0500
committerTed Gould <ted@gould.cx>2010-10-15 13:48:05 -0500
commit5c07a374c78a73fee4030a61c74ab3a99fc8bcc5 (patch)
treea25d3399e0771e7524ea14bc61a461f36b018f5b
parent41df5ff0de7c2b9391acf93b58a5f1c803878a05 (diff)
downloadlibdbusmenu-5c07a374c78a73fee4030a61c74ab3a99fc8bcc5.tar.gz
libdbusmenu-5c07a374c78a73fee4030a61c74ab3a99fc8bcc5.tar.bz2
libdbusmenu-5c07a374c78a73fee4030a61c74ab3a99fc8bcc5.zip
Porting over AboutToShow
-rw-r--r--libdbusmenu-glib/server.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c
index 2fdc1ef..42463a9 100644
--- a/libdbusmenu-glib/server.c
+++ b/libdbusmenu-glib/server.c
@@ -38,9 +38,6 @@ License version 3 and version 2.1 along with this program. If not, see
#include "dbus-menu.xml.h"
-/* DBus Prototypes */
-static gboolean _dbusmenu_server_about_to_show (DbusmenuServer * server, gint id, gboolean * need_update, GError ** error);
-
static void layout_update_signal (DbusmenuServer * server);
#define DBUSMENU_VERSION_NUMBER 2
@@ -105,6 +102,7 @@ enum {
METHOD_GET_PROPERTY,
METHOD_GET_PROPERTIES,
METHOD_EVENT,
+ METHOD_ABOUT_TO_SHOW,
/* Counter, do not remove! */
METHOD_COUNT
};
@@ -175,6 +173,9 @@ static void bus_get_properties (DbusmenuServer * server,
static void bus_event (DbusmenuServer * server,
GVariant * params,
GDBusMethodInvocation * invocation);
+static void bus_about_to_show (DbusmenuServer * server,
+ GVariant * params,
+ GDBusMethodInvocation * invocation);
/* Globals */
static GDBusNodeInfo * dbusmenu_node_info = NULL;
@@ -321,6 +322,9 @@ dbusmenu_server_class_init (DbusmenuServerClass *class)
dbusmenu_method_table[METHOD_EVENT].interned_name = g_intern_static_string("Event");
dbusmenu_method_table[METHOD_EVENT].func = bus_event;
+ dbusmenu_method_table[METHOD_ABOUT_TO_SHOW].interned_name = g_intern_static_string("AboutToShow");
+ dbusmenu_method_table[METHOD_ABOUT_TO_SHOW].func = bus_about_to_show;
+
return;
}
@@ -950,26 +954,26 @@ bus_event (DbusmenuServer * server, GVariant * params, GDBusMethodInvocation * i
}
/* Recieve the About To Show function. Pass it to our menu item. */
-static gboolean
-_dbusmenu_server_about_to_show (DbusmenuServer * server, gint id, gboolean * need_update, GError ** error)
+static void
+bus_about_to_show (DbusmenuServer * server, GVariant * params, GDBusMethodInvocation * invocation)
{
DbusmenuServerPrivate * priv = DBUSMENU_SERVER_GET_PRIVATE(server);
+ gint id = g_variant_get_int32(g_variant_get_child_value(params, 0));
DbusmenuMenuitem * mi = dbusmenu_menuitem_find_id(priv->root, id);
if (mi == NULL) {
- if (error != NULL) {
- g_set_error(error,
- error_quark(),
- INVALID_MENUITEM_ID,
- "The ID supplied %d does not refer to a menu item we have",
- id);
- }
- return FALSE;
+ g_dbus_method_invocation_return_error(invocation,
+ error_quark(),
+ INVALID_MENUITEM_ID,
+ "The ID supplied %d does not refer to a menu item we have",
+ id);
+ return;
}
/* GTK+ does not support about-to-show concept for now */
- *need_update = FALSE;
- return TRUE;
+ g_dbus_method_invocation_return_value(invocation,
+ g_variant_new_boolean(FALSE));
+ return;
}
/* Public Interface */