aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-06-24 09:21:02 -0500
committerTed Gould <ted@gould.cx>2010-06-24 09:21:02 -0500
commit1a54d0070d99cca1322995bb74ab6027ee1dc434 (patch)
treefabe24cc1446812e9a8691098f634d89f889a6c5 /libdbusmenu-glib
parent849f700ec70b1b92cb49d736e2b3148de20053ed (diff)
parentda2663f744d60ab4ffcc0a798448a48266532d3d (diff)
downloadlibdbusmenu-1a54d0070d99cca1322995bb74ab6027ee1dc434.tar.gz
libdbusmenu-1a54d0070d99cca1322995bb74ab6027ee1dc434.tar.bz2
libdbusmenu-1a54d0070d99cca1322995bb74ab6027ee1dc434.zip
Import upstream version 0.3.3
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r--libdbusmenu-glib/client.c28
-rw-r--r--libdbusmenu-glib/menuitem.h8
2 files changed, 35 insertions, 1 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index c0d3b7a..fa233a4 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -30,6 +30,8 @@ License version 3 and version 2.1 along with this program. If not, see
#include "config.h"
#endif
+#include <dbus/dbus-glib-bindings.h>
+
#include <libxml/parser.h>
#include <libxml/tree.h>
@@ -397,6 +399,25 @@ dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, c
return build_proxies(client);
}
+/* This is the response to see if the name has an owner. If
+ it does, then we should build the proxies here. Race condition
+ check. */
+static void
+name_owner_check (DBusGProxy *proxy, gboolean has_owner, GError *error, gpointer userdata)
+{
+ if (error != NULL) {
+ return;
+ }
+
+ if (!has_owner) {
+ return;
+ }
+
+ DbusmenuClient * client = DBUSMENU_CLIENT(userdata);
+ build_proxies(client);
+ return;
+}
+
/* This function builds the DBus proxy which will look out for
the service coming up. */
static void
@@ -426,6 +447,13 @@ build_dbus_proxy (DbusmenuClient * client)
dbus_g_proxy_connect_signal(priv->dbusproxy, "NameOwnerChanged",
G_CALLBACK(dbus_owner_change), client, NULL);
+ /* Now let's check to make sure we're not in some race
+ condition case. */
+ org_freedesktop_DBus_name_has_owner_async(priv->dbusproxy,
+ priv->dbus_name,
+ name_owner_check,
+ client);
+
return;
}
diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h
index 39d257e..e17d851 100644
--- a/libdbusmenu-glib/menuitem.h
+++ b/libdbusmenu-glib/menuitem.h
@@ -58,7 +58,8 @@ G_BEGIN_DECLS
#define DBUSMENU_MENUITEM_PROP_ICON_DATA "icon-data"
#define DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE "toggle-type"
#define DBUSMENU_MENUITEM_PROP_TOGGLE_STATE "toggle-state"
-#define DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY "child-display"
+#define DBUSMENU_MENUITEM_PROP_SHORTCUT "shortcut"
+#define DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY "children-display"
#define DBUSMENU_MENUITEM_TOGGLE_CHECK "checkmark"
#define DBUSMENU_MENUITEM_TOGGLE_RADIO "radio"
@@ -69,6 +70,11 @@ G_BEGIN_DECLS
#define DBUSMENU_MENUITEM_ICON_NAME_BLANK "blank-icon"
+#define DBUSMENU_MENUITEM_SHORTCUT_CONTROL "Control"
+#define DBUSMENU_MENUITEM_SHORTCUT_ALT "Alt"
+#define DBUSMENU_MENUITEM_SHORTCUT_SHIFT "Shift"
+#define DBUSMENU_MENUITEM_SHORTCUT_SUPER "Super"
+
#define DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU "submenu"
/**