summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2011-12-18 17:05:20 +0100
committerBenjamin Otte <otte@redhat.com>2011-12-19 16:17:13 +0100
commite042462674156ae09e07bfd1afcaef54a75f6340 (patch)
treeb0bc486fe9435d66d2480f3fe6cedc5be73de02e
parent23b5f9c06600a38e7e9d968b510b713bf74827ef (diff)
downloadgtk+-e042462674156ae09e07bfd1afcaef54a75f6340.tar.gz
widget: Unset self from accessible
-rw-r--r--gtk/gtkwidget.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index a89275f082..909b32a71e 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -10101,11 +10101,14 @@ gtk_widget_real_destroy (GtkWidget *object)
/* gtk_object_destroy() will already hold a refcount on object */
GtkWidget *widget = GTK_WIDGET (object);
GtkWidgetPrivate *priv = widget->priv;
- GtkAccessible *accessible;
- accessible = g_object_steal_qdata (G_OBJECT (widget), quark_accessible_object);
- if (GTK_IS_ACCESSIBLE (accessible))
- gtk_accessible_set_widget (accessible, NULL);
+ if (GTK_WIDGET_GET_CLASS (widget)->priv->accessible_type != GTK_TYPE_ACCESSIBLE)
+ {
+ GtkAccessible *accessible = g_object_steal_qdata (G_OBJECT (widget), quark_accessible_object);
+
+ if (accessible)
+ gtk_accessible_set_widget (accessible, NULL);
+ }
/* wipe accelerator closures (keep order) */
g_object_set_qdata (G_OBJECT (widget), quark_accel_path, NULL);