aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libdbusmenu-glib/client.c7
-rw-r--r--libdbusmenu-glib/menuitem.h4
-rw-r--r--libdbusmenu-gtk/client.c8
-rw-r--r--tests/test-glib-layout-client.c4
-rw-r--r--tests/test-glib-layout-server.c17
-rw-r--r--tests/test-gtk-label.json6
6 files changed, 34 insertions, 12 deletions
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index 59494a3..01dfed7 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -367,8 +367,9 @@ static void
dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, const gchar * new, DbusmenuClient * client)
{
DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
+ /* g_debug("Owner change: %s %s %s", name, prev, new); */
- if (!(new != NULL && prev == NULL)) {
+ if (!(new[0] != '\0' && prev[0] == '\0')) {
/* If it's not someone new getting on the bus, sorry we
simply just don't care. It's not that your service isn't
important to someone, just not us. You'll find the right
@@ -376,7 +377,7 @@ dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, c
return;
}
- if (g_strcmp0(new, priv->dbus_name)) {
+ if (g_strcmp0(name, priv->dbus_name)) {
/* Again, someone else's service. */
return;
}
@@ -471,6 +472,7 @@ build_proxies (DbusmenuClient * client)
if (error != NULL) {
g_warning("Unable to get property proxy for %s on %s: %s", priv->dbus_name, priv->dbus_object, error->message);
g_error_free(error);
+ build_dbus_proxy(client);
return;
}
g_object_add_weak_pointer(G_OBJECT(priv->propproxy), (gpointer *)&priv->propproxy);
@@ -484,6 +486,7 @@ build_proxies (DbusmenuClient * client)
if (error != NULL) {
g_warning("Unable to get dbusmenu proxy for %s on %s: %s", priv->dbus_name, priv->dbus_object, error->message);
g_error_free(error);
+ build_dbus_proxy(client);
return;
}
g_object_add_weak_pointer(G_OBJECT(priv->menuproxy), (gpointer *)&priv->menuproxy);
diff --git a/libdbusmenu-glib/menuitem.h b/libdbusmenu-glib/menuitem.h
index fc9e410..aaafe17 100644
--- a/libdbusmenu-glib/menuitem.h
+++ b/libdbusmenu-glib/menuitem.h
@@ -62,6 +62,10 @@ G_BEGIN_DECLS
#define DBUSMENU_MENUITEM_TOGGLE_CHECK "checkmark"
#define DBUSMENU_MENUITEM_TOGGLE_RADIO "radio"
+#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED "unchecked"
+#define DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED "checked"
+#define DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN "indeterminate"
+
/**
DbusmenuMenuitem:
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c
index 27ac4dc..4a8637a 100644
--- a/libdbusmenu-gtk/client.c
+++ b/libdbusmenu-gtk/client.c
@@ -153,9 +153,9 @@ process_toggle_type (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * va
if (value != NULL && G_VALUE_TYPE(value) == G_TYPE_STRING) {
const gchar * strval = g_value_get_string(value);
- if (!g_strcmp0(strval, "checkbox")) {
+ if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_CHECK)) {
type = GENERICMENUITEM_CHECK_TYPE_CHECKBOX;
- } else if (!g_strcmp0(strval, "radio")) {
+ } else if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_RADIO)) {
type = GENERICMENUITEM_CHECK_TYPE_RADIO;
}
}
@@ -176,9 +176,9 @@ process_toggle_checked (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue *
if (value != NULL && G_VALUE_TYPE(value) == G_TYPE_STRING) {
const gchar * strval = g_value_get_string(value);
- if (!g_strcmp0(strval, "checked")) {
+ if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED)) {
state = GENERICMENUITEM_STATE_CHECKED;
- } else if (!g_strcmp0(strval, "indeterminate")) {
+ } else if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN)) {
state = GENERICMENUITEM_STATE_INDETERMINATE;
}
}
diff --git a/tests/test-glib-layout-client.c b/tests/test-glib-layout-client.c
index a7dd683..bb2d13a 100644
--- a/tests/test-glib-layout-client.c
+++ b/tests/test-glib-layout-client.c
@@ -109,9 +109,7 @@ main (int argc, char ** argv)
{
g_type_init();
- g_usleep(500000);
-
- DbusmenuClient * client = dbusmenu_client_new(":1.0", "/org/test");
+ DbusmenuClient * client = dbusmenu_client_new("org.dbusmenu.test", "/org/test");
g_signal_connect(G_OBJECT(client), DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED, G_CALLBACK(layout_updated), NULL);
g_timeout_add_seconds(10, timer_func, client);
diff --git a/tests/test-glib-layout-server.c b/tests/test-glib-layout-server.c
index cc9b8e7..40dd048 100644
--- a/tests/test-glib-layout-server.c
+++ b/tests/test-glib-layout-server.c
@@ -24,6 +24,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <dbus/dbus.h>
#include <dbus/dbus-glib.h>
#include <dbus/dbus-glib-lowlevel.h>
+#include <dbus/dbus-glib-bindings.h>
#include <libdbusmenu-glib/server.h>
#include <libdbusmenu-glib/menuitem.h>
@@ -74,10 +75,26 @@ timer_func (gpointer data)
int
main (int argc, char ** argv)
{
+ GError * error = NULL;
+
g_type_init();
+ DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL))));
+ DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
+ guint nameret = 0;
+
+ if (!org_freedesktop_DBus_request_name(bus_proxy, "org.dbusmenu.test", 0, &nameret, &error)) {
+ g_error("Unable to call to request name");
+ return 1;
+ }
+
+ if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
+ g_error("Unable to get name");
+ return 1;
+ }
+
server = dbusmenu_server_new("/org/test");
timer_func(NULL);
diff --git a/tests/test-gtk-label.json b/tests/test-gtk-label.json
index 464dc2d..4bd666a 100644
--- a/tests/test-gtk-label.json
+++ b/tests/test-gtk-label.json
@@ -338,17 +338,17 @@ QmCC",
},
{"id": 33,
"label": "Check (empty)",
- "toggle-type": "checkbox",
+ "toggle-type": "checkmark",
"toggle-checked": "unchecked"
},
{"id": 34,
"label": "Check (checked)",
- "toggle-type": "checkbox",
+ "toggle-type": "checkmark",
"toggle-checked": "checked"
},
{"id": 35,
"label": "Check (?????)",
- "toggle-type": "checkbox",
+ "toggle-type": "checkmark",
"toggle-checked": "indeterminate"
},
{"id": 36,