From 035f56558cccf52c5c2052bb1f80a4b7519ed4c5 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sat, 6 Feb 2010 11:55:50 -0800 Subject: Changing the type of the property and setting it with boxed --- src/libappindicator/app-indicator.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c index 908684f..2befb34 100644 --- a/src/libappindicator/app-indicator.c +++ b/src/libappindicator/app-indicator.c @@ -215,10 +215,10 @@ app_indicator_class_init (AppIndicatorClass *klass) g_object_class_install_property(object_class, PROP_MENU, - g_param_spec_string (PROP_MENU_S, + g_param_spec_boxed (PROP_MENU_S, "The object path of the menu on DBus.", "A method for getting the menu path as a string for DBus.", - NULL, + DBUS_TYPE_G_OBJECT_PATH, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, @@ -541,14 +541,14 @@ app_indicator_get_property (GObject * object, guint prop_id, GValue * value, GPa break; case PROP_MENU: - if (G_VALUE_HOLDS_STRING(value)) { - if (priv->menuservice != NULL) { - g_object_get_property (G_OBJECT (priv->menuservice), DBUSMENU_SERVER_PROP_DBUS_OBJECT, value); - } - } else { - WARN_BAD_TYPE(PROP_MENU_S, value); - } - break; + if (priv->menuservice != NULL) { + GValue strval = {0}; + g_value_init(&strval, G_TYPE_STRING); + g_object_get_property (G_OBJECT (priv->menuservice), DBUSMENU_SERVER_PROP_DBUS_OBJECT, &strvalue); + g_value_set_boxed(value, g_value_get_string(&strvalue)); + g_value_unset(&strvalue); + } + break; case PROP_CONNECTED: g_value_set_boolean (value, priv->watcher_proxy != NULL ? TRUE : FALSE); -- cgit v1.2.3 From 28b0ba50227548758db097d0c6097b1a394e413f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Sat, 6 Feb 2010 11:58:19 -0800 Subject: Ready to recieve the boxed type on the other side. --- src/application-service-appstore.c | 5 ++++- src/libappindicator/app-indicator.c | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index 70fab18..5e0c601 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -222,7 +222,10 @@ get_all_properties_cb (DBusGProxy * proxy, GHashTable * properties, GError * err app_lru_file_touch(priv->lrufile, app->id, app->category); app->icon = g_value_dup_string(g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_ICON_NAME)); - app->menu = g_value_dup_string(g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_MENU)); + + GValue * menuval = (GValue *)g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_MENU); + app->menu = g_strdup((gchar *)g_value_get_boxed(menuval)); + if (g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_AICON_NAME) != NULL) { app->aicon = g_value_dup_string(g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_ICON_NAME)); } diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c index 2befb34..19b4fd9 100644 --- a/src/libappindicator/app-indicator.c +++ b/src/libappindicator/app-indicator.c @@ -544,9 +544,9 @@ app_indicator_get_property (GObject * object, guint prop_id, GValue * value, GPa if (priv->menuservice != NULL) { GValue strval = {0}; g_value_init(&strval, G_TYPE_STRING); - g_object_get_property (G_OBJECT (priv->menuservice), DBUSMENU_SERVER_PROP_DBUS_OBJECT, &strvalue); - g_value_set_boxed(value, g_value_get_string(&strvalue)); - g_value_unset(&strvalue); + g_object_get_property (G_OBJECT (priv->menuservice), DBUSMENU_SERVER_PROP_DBUS_OBJECT, &strval); + g_value_set_boxed(value, g_value_get_string(&strval)); + g_value_unset(&strval); } break; -- cgit v1.2.3 From 8be6fe7ae76d822cc8737f60b3c0ad930f371eb0 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 10 Feb 2010 08:30:42 -0600 Subject: Falling back on string if that's what we get. Makes things compatible. --- src/application-service-appstore.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index 5e0c601..5e6a356 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -224,7 +224,13 @@ get_all_properties_cb (DBusGProxy * proxy, GHashTable * properties, GError * err app->icon = g_value_dup_string(g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_ICON_NAME)); GValue * menuval = (GValue *)g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_MENU); - app->menu = g_strdup((gchar *)g_value_get_boxed(menuval)); + if (G_VALUE_TYPE(menuval) == G_TYPE_STRING) { + /* This is here to support an older version where we + were using strings instea of object paths. */ + app->menu = g_value_dup_string(menuval); + } else { + app->menu = g_strdup((gchar *)g_value_get_boxed(menuval)); + } if (g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_AICON_NAME) != NULL) { app->aicon = g_value_dup_string(g_hash_table_lookup(properties, NOTIFICATION_ITEM_PROP_ICON_NAME)); -- cgit v1.2.3