aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-gtk
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2012-03-09 14:25:35 -0600
committerTed Gould <ted@gould.cx>2012-03-09 14:25:35 -0600
commit5f817c2496b1384ef731fec619fe23103c9e8abf (patch)
tree7e9c1f1271086e6dc2f571ca343d065d0d375fb5 /libdbusmenu-gtk
parent466446b76e6f4512ea3eb2ab9d78d0615569eeac (diff)
parent890165c74783d1771e0a391987630481885cbe4a (diff)
downloadlibdbusmenu-5f817c2496b1384ef731fec619fe23103c9e8abf.tar.gz
libdbusmenu-5f817c2496b1384ef731fec619fe23103c9e8abf.tar.bz2
libdbusmenu-5f817c2496b1384ef731fec619fe23103c9e8abf.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.c26
-rw-r--r--libdbusmenu-gtk/parser.c16
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);