diff options
-rw-r--r-- | libdbusmenu-glib/client.c | 7 | ||||
-rw-r--r-- | libdbusmenu-glib/menuitem.h | 4 | ||||
-rw-r--r-- | libdbusmenu-gtk/client.c | 8 | ||||
-rw-r--r-- | tests/test-glib-layout-client.c | 4 | ||||
-rw-r--r-- | tests/test-glib-layout-server.c | 17 | ||||
-rw-r--r-- | tests/test-gtk-label.json | 6 |
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, |