diff options
author | Ken VanDine <ken.vandine@canonical.com> | 2012-03-12 08:55:06 -0400 |
---|---|---|
committer | Ken VanDine <ken.vandine@canonical.com> | 2012-03-12 08:55:06 -0400 |
commit | 4d4103738c4f5419f3c9b675a78e953b8bbcee1d (patch) | |
tree | 3f3002129b1d4ceb4febeb1288d56b917c6810b1 /libdbusmenu-gtk | |
parent | 0d47f67f4fae4c53730f22a849f7a90e6eb5fd5e (diff) | |
parent | 3da0c4f13a47da5cb9378fb14a72961decb6a9e0 (diff) | |
download | libdbusmenu-4d4103738c4f5419f3c9b675a78e953b8bbcee1d.tar.gz libdbusmenu-4d4103738c4f5419f3c9b675a78e953b8bbcee1d.tar.bz2 libdbusmenu-4d4103738c4f5419f3c9b675a78e953b8bbcee1d.zip |
* New upstream release.
* Fixing setting name of ATK objects
* Cleaning up a warning on shutdown (LP: #950762)
Diffstat (limited to 'libdbusmenu-gtk')
-rw-r--r-- | libdbusmenu-gtk/client.c | 26 | ||||
-rw-r--r-- | libdbusmenu-gtk/parser.c | 16 |
2 files changed, 31 insertions, 11 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 830356a..9cb1144 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -735,17 +735,29 @@ process_a11y_desc (DbusmenuMenuitem * mi, GtkMenuItem * gmi, GVariant * variant, return; } - const gchar * setname = NULL; if (variant != NULL) { - setname = g_variant_get_string(variant, NULL); - } - - if (setname == NULL) { - setname = ""; + const gchar * setname = NULL; + setname = g_variant_dup_string(variant, NULL); + atk_object_set_name(aobj, setname); + } else { + /* The atk docs advise to set the name of the atk object to an empty + * string, but GTK doesn't yet do the same, and setting the name to NULL + * causes tests to fail. + */ + gchar * setname = NULL; + const gchar * label = NULL; + /* We don't want the underscore for mnewmonics */ + label = dbusmenu_menuitem_property_get(mi, DBUSMENU_MENUITEM_PROP_LABEL); + + GRegex * regex = g_regex_new ("_", 0, 0, NULL); + setname = g_regex_replace_literal (regex, label, -1, 0, "", 0, NULL); + g_regex_unref(regex); + + atk_object_set_name(aobj, setname); + g_free(setname); } - atk_object_set_name(aobj, setname); return; } diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c index 70ffcea..da1c8fa 100644 --- a/libdbusmenu-gtk/parser.c +++ b/libdbusmenu-gtk/parser.c @@ -229,7 +229,12 @@ parse_data_free (gpointer data) static void widget_freed (gpointer data, GObject * obj) { - g_signal_handlers_disconnect_by_func(gtk_icon_theme_get_default(), G_CALLBACK(theme_changed_cb), obj); + ParserData * pdata = (ParserData *)data; + + if (pdata->theme_changed_sig != 0) { + g_signal_handler_disconnect(gtk_icon_theme_get_default(), pdata->theme_changed_sig); + pdata->theme_changed_sig = 0; + } return; } @@ -242,9 +247,12 @@ dbusmenu_item_freed (gpointer data, GObject * obj) ParserData *pdata = (ParserData *)g_object_get_data(G_OBJECT(obj), PARSER_DATA); if (pdata != NULL && pdata->widget != NULL) { - g_signal_handlers_disconnect_by_func(gtk_icon_theme_get_default(), G_CALLBACK(theme_changed_cb), pdata->widget); + if (pdata->theme_changed_sig != 0) { + g_signal_handler_disconnect(gtk_icon_theme_get_default(), pdata->theme_changed_sig); + pdata->theme_changed_sig = 0; + } g_object_steal_data(G_OBJECT(pdata->widget), CACHED_MENUITEM); - g_object_weak_unref(G_OBJECT(pdata->widget), widget_freed, NULL); + g_object_weak_unref(G_OBJECT(pdata->widget), widget_freed, pdata); } } @@ -286,7 +294,7 @@ new_menuitem (GtkWidget * widget) g_object_set_data_full(G_OBJECT(item), PARSER_DATA, pdata, parse_data_free); g_object_weak_ref(G_OBJECT(item), dbusmenu_item_freed, NULL); - g_object_weak_ref(G_OBJECT(widget), widget_freed, NULL); + g_object_weak_ref(G_OBJECT(widget), widget_freed, pdata); pdata->widget = widget; g_object_add_weak_pointer(G_OBJECT (widget), (gpointer*)&pdata->widget); |