]> Pileus Git - ~andy/gtk/commitdiff
a11y: Fix crash in notebook
authorBenjamin Otte <otte@redhat.com>
Sun, 18 Dec 2011 16:14:47 +0000 (17:14 +0100)
committerBenjamin Otte <otte@redhat.com>
Mon, 19 Dec 2011 15:17:13 +0000 (16:17 +0100)
When the accessible was disposed before the notebook it referenced, the
weak ref could still trigger. This works around it.

gtk/a11y/gtknotebookaccessible.c

index c4e5b26c94800ff0ebda18ef591e9467b718f8bd..96e9cfe59162dd0b30b804ece4b8f8092351657d 100644 (file)
@@ -42,6 +42,8 @@ check_focus_tab (gpointer data)
   atk_obj = ATK_OBJECT (data);
   accessible = GTK_NOTEBOOK_ACCESSIBLE (atk_obj);
   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (atk_obj));
+  if (widget == NULL)
+    return FALSE;
   notebook = GTK_NOTEBOOK (widget);
 
   accessible->idle_focus_id = 0;
@@ -132,17 +134,6 @@ page_removed_cb (GtkNotebook *notebook,
 }
 
 
-static void
-accessible_destroyed (gpointer data)
-{
-  GtkNotebookAccessible *accessible = GTK_NOTEBOOK_ACCESSIBLE (data);
-
-  if (accessible->idle_focus_id)
-    {
-      g_source_remove (accessible->idle_focus_id);
-      accessible->idle_focus_id = 0;
-    }
-}
 static void
 gtk_notebook_accessible_initialize (AtkObject *obj,
                                     gpointer   data)
@@ -171,8 +162,6 @@ gtk_notebook_accessible_initialize (AtkObject *obj,
   g_signal_connect (notebook, "page-removed",
                     G_CALLBACK (page_removed_cb), NULL);
 
-  g_object_weak_ref (G_OBJECT (notebook), (GWeakNotify)accessible_destroyed, obj);
-
   obj->role = ATK_ROLE_PAGE_TAB_LIST;
 }