]> Pileus Git - ~andy/gtk/blobdiff - modules/other/gail/gailtreeview.c
gail: GtkTreeViewColumn doesn't have a destroy signal anymore
[~andy/gtk] / modules / other / gail / gailtreeview.c
index 44a6337d40dca0c015b2cd86315870f745b719ad..a9c50fdf5ff02019161e41d11478a5c59f0d2350 100644 (file)
@@ -193,8 +193,8 @@ static void             gail_tree_view_changed_gtk      (GtkTreeSelection
 static void             columns_changed                 (GtkTreeView            *tree_view);
 static void             cursor_changed                  (GtkTreeView            *tree_view);
 static gint             idle_cursor_changed             (gpointer               data);
-static void             focus_in                        (GtkWidget             *widget);
-static void             focus_out                       (GtkWidget              *widget);
+static gboolean         focus_in                        (GtkWidget             *widget);
+static gboolean         focus_out                       (GtkWidget              *widget);
 
 static void             model_row_changed               (GtkTreeModel           *tree_model,
                                                          GtkTreePath            *path,
@@ -203,7 +203,6 @@ static void             model_row_changed               (GtkTreeModel
 static void             column_visibility_changed       (GObject                *object,
                                                          GParamSpec             *param,
                                                          gpointer               user_data);
-static void             column_destroy                  (GtkObject              *obj); 
 static void             model_row_inserted              (GtkTreeModel           *tree_model,
                                                          GtkTreePath            *path,
                                                          GtkTreeIter            *iter,
@@ -481,10 +480,10 @@ gail_tree_view_real_initialize (AtkObject *obj,
       g_object_add_weak_pointer (G_OBJECT (view->tree_model), (gpointer *)&view->tree_model);
       connect_model_signals (tree_view, view);
 
-      if (GTK_IS_TREE_STORE (tree_model))
-        obj->role = ATK_ROLE_TREE_TABLE;
-      else
+      if (gtk_tree_model_get_flags (tree_model) & GTK_TREE_MODEL_LIST_ONLY)
         obj->role = ATK_ROLE_TABLE;
+      else
+        obj->role = ATK_ROLE_TREE_TABLE;
     }
   else
     {
@@ -523,9 +522,6 @@ gail_tree_view_real_initialize (AtkObject *obj,
       g_signal_connect_data (tmp_list->data, "notify::visible",
        (GCallback)column_visibility_changed, 
         tree_view, NULL, FALSE);
-      g_signal_connect_data (tmp_list->data, "destroy",
-       (GCallback)column_destroy, 
-        NULL, NULL, FALSE);
       g_array_append_val (view->col_data, tmp_list->data);
     }
 
@@ -568,10 +564,10 @@ gail_tree_view_real_notify_gtk (GObject             *obj,
           g_object_add_weak_pointer (G_OBJECT (gailview->tree_model), (gpointer *)&gailview->tree_model);
           connect_model_signals (tree_view, gailview);
 
-          if (GTK_IS_TREE_STORE (tree_model))
-            role = ATK_ROLE_TREE_TABLE;
-          else
+          if (gtk_tree_model_get_flags (tree_model) & GTK_TREE_MODEL_LIST_ONLY)
             role = ATK_ROLE_TABLE;
+          else
+            role = ATK_ROLE_TREE_TABLE;
         }
       else
         {
@@ -654,9 +650,12 @@ gail_tree_view_finalize (GObject       *object)
 static void
 gail_tree_view_connect_widget_destroyed (GtkAccessible *accessible)
 {
-  if (accessible->widget)
+  GtkWidget *widget;
+
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible));
+  if (widget)
     {
-      g_signal_connect_after (accessible->widget,
+      g_signal_connect_after (widget,
                               "destroy",
                               G_CALLBACK (gail_tree_view_destroyed),
                               accessible);
@@ -757,7 +756,7 @@ gail_tree_view_get_n_children (AtkObject *obj)
 
   gail_return_val_if_fail (GAIL_IS_TREE_VIEW (obj), 0);
 
-  widget = GTK_ACCESSIBLE (obj)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
   if (widget == NULL)
     /*
      * State is defunct
@@ -808,7 +807,7 @@ gail_tree_view_ref_child (AtkObject *obj,
   g_return_val_if_fail (GAIL_IS_TREE_VIEW (obj), NULL);
   g_return_val_if_fail (i >= 0, NULL);
 
-  widget = GTK_ACCESSIBLE (obj)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
   if (widget == NULL)
     /*
      * State is defunct
@@ -906,7 +905,7 @@ gail_tree_view_ref_child (AtkObject *obj,
     fake_renderer = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, NULL);
     default_registry = atk_get_default_registry ();
     factory = atk_registry_get_factory (default_registry,
-                                        GTK_OBJECT_TYPE (fake_renderer));
+                                        G_OBJECT_TYPE (fake_renderer));
     child = atk_object_factory_create_accessible (factory,
                                                   G_OBJECT (fake_renderer));
     gail_return_val_if_fail (GAIL_IS_RENDERER_CELL (child), NULL);
@@ -942,7 +941,7 @@ gail_tree_view_ref_child (AtkObject *obj,
 
         default_registry = atk_get_default_registry ();
         factory = atk_registry_get_factory (default_registry,
-                                            GTK_OBJECT_TYPE (renderer));
+                                            G_OBJECT_TYPE (renderer));
         child = atk_object_factory_create_accessible (factory,
                                                       G_OBJECT (renderer));
         gail_return_val_if_fail (GAIL_IS_RENDERER_CELL (child), NULL);
@@ -1049,7 +1048,7 @@ gail_tree_view_ref_state_set (AtkObject *obj)
   GtkWidget *widget;
 
   state_set = ATK_OBJECT_CLASS (gail_tree_view_parent_class)->ref_state_set (obj);
-  widget = GTK_ACCESSIBLE (obj)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
 
   if (widget != NULL)
     atk_state_set_add_state (state_set, ATK_STATE_MANAGES_DESCENDANTS);
@@ -1079,7 +1078,7 @@ gail_tree_view_ref_accessible_at_point (AtkComponent           *component,
   gint bx, by;
   gboolean ret_val;
 
-  widget = GTK_ACCESSIBLE (component)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (component));
   if (widget == NULL)
     /* State is defunct */
     return NULL;
@@ -1160,7 +1159,7 @@ gail_tree_view_get_index_at (AtkTable *table,
       column >= n_cols)
     return -1;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return -1;
@@ -1185,7 +1184,7 @@ gail_tree_view_get_column_at_index (AtkTable *table,
   GtkTreeView *tree_view;
   gint n_columns;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return -1;
@@ -1208,7 +1207,7 @@ gail_tree_view_get_row_at_index (AtkTable *table,
   GtkTreeView *tree_view;
   GtkTreePath *path;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return -1;
@@ -1246,7 +1245,7 @@ gail_tree_view_get_n_rows (AtkTable *table)
   GtkTreeModel *tree_model;
   gint n_rows;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return 0;
@@ -1299,7 +1298,7 @@ gail_tree_view_get_n_columns (AtkTable *table)
   gint n_cols = 0;
   gint i = 0;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return 0;
@@ -1328,7 +1327,7 @@ gail_tree_view_is_row_selected (AtkTable *table,
   GtkTreeSelection *selection;
   GtkTreeIter iter;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return FALSE;
@@ -1365,7 +1364,7 @@ gail_tree_view_get_selected_rows (AtkTable *table,
   GtkTreePath *tree_path;
   gint ret_val = 0;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return 0;
@@ -1441,7 +1440,7 @@ gail_tree_view_add_row_selection (AtkTable *table,
   GtkTreePath *tree_path;
   GtkTreeIter iter_to_row;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return FALSE;
@@ -1480,7 +1479,7 @@ gail_tree_view_remove_row_selection (AtkTable *table,
   GtkTreeView *tree_view;
   GtkTreeSelection *selection;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return FALSE;
@@ -1526,7 +1525,7 @@ gail_tree_view_get_column_header (AtkTable *table,
   GtkTreeView *tree_view;
   GtkTreeViewColumn *tv_col;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return NULL;
@@ -1544,10 +1543,9 @@ gail_tree_view_set_column_header (AtkTable  *table,
   GtkWidget *widget;
   GtkTreeView *tree_view;
   GtkTreeViewColumn *tv_col;
-  AtkObject *rc;
   AtkPropertyValues values = { NULL };
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return;
@@ -1557,14 +1555,10 @@ gail_tree_view_set_column_header (AtkTable  *table,
   if (tv_col == NULL)
      return;
 
-  rc = g_object_get_qdata (G_OBJECT (tv_col),
-                          quark_column_header_object);
-  if (rc)
-    g_object_unref (rc);
-
-  g_object_set_qdata (G_OBJECT (tv_col),
-                       quark_column_header_object,
-                       header);
+  g_object_set_qdata_full (G_OBJECT (tv_col),
+                           quark_column_header_object,
+                           header,
+                           g_object_unref);
   if (header)
     g_object_ref (header);
   g_value_init (&values.new_value, G_TYPE_INT);
@@ -1618,7 +1612,7 @@ gail_tree_view_get_column_description (AtkTable     *table,
   GtkTreeViewColumn *tv_col;
   gchar *rc;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return NULL;
@@ -1652,7 +1646,7 @@ gail_tree_view_set_column_description (AtkTable      *table,
   GtkTreeViewColumn *tv_col;
   AtkPropertyValues values = { NULL };
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return;
@@ -1662,9 +1656,10 @@ gail_tree_view_set_column_description (AtkTable     *table,
   if (tv_col == NULL)
      return;
 
-  g_object_set_qdata (G_OBJECT (tv_col),
-                      quark_column_desc_object,
-                      g_strdup (description));
+  g_object_set_qdata_full (G_OBJECT (tv_col),
+                           quark_column_desc_object,
+                           g_strdup (description),
+                           g_free);
   g_value_init (&values.new_value, G_TYPE_INT);
   g_value_set_int (&values.new_value, in_col);
 
@@ -1748,7 +1743,7 @@ set_row_data (AtkTable    *table,
   AtkPropertyValues values = { NULL };
   gchar *signal_name;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return;
@@ -1852,7 +1847,7 @@ get_row_info (AtkTable    *table,
   GArray *array;
   GailTreeViewRowInfo *rc = NULL;
 
-  widget = GTK_ACCESSIBLE (table)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     /* State is defunct */
     return NULL;
@@ -1925,7 +1920,7 @@ gail_tree_view_clear_selection (AtkSelection *selection)
   GtkTreeView *tree_view;
   GtkTreeSelection *tree_selection;
 
-  widget = GTK_ACCESSIBLE (selection)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection));
   if (widget == NULL)
     /* State is defunct */
     return FALSE;
@@ -1980,7 +1975,7 @@ gail_tree_view_is_child_selected (AtkSelection *selection,
   GtkWidget *widget;
   gint row;
 
-  widget = GTK_ACCESSIBLE (selection)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection));
   if (widget == NULL)
     /* State is defunct */
     return FALSE;
@@ -2013,7 +2008,7 @@ gail_tree_view_get_cell_extents (GailCellParent *parent,
   GdkRectangle cell_rect;
   gint w_x, w_y;
 
-  widget = GTK_ACCESSIBLE (parent)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (parent));
   if (widget == NULL)
     /* State is defunct */
     return;
@@ -2064,7 +2059,7 @@ gail_tree_view_get_cell_area (GailCellParent *parent,
   GailTreeViewCellInfo *cell_info;
   GailCell *top_cell;
 
-  widget = GTK_ACCESSIBLE (parent)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (parent));
   if (widget == NULL)
     /* State is defunct */
     return;
@@ -2159,7 +2154,7 @@ gail_tree_view_grab_cell_focus  (GailCellParent *parent,
   GtkWidget *toplevel;
   gint index;
 
-  widget = GTK_ACCESSIBLE (parent)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (parent));
   if (widget == NULL)
     /* State is defunct */
     return FALSE;
@@ -2200,10 +2195,11 @@ gail_tree_view_grab_cell_focus  (GailCellParent *parent,
       gtk_tree_path_free (path);
       gtk_widget_grab_focus (widget);
       toplevel = gtk_widget_get_toplevel (widget);
-      if (GTK_WIDGET_TOPLEVEL (toplevel))
+      if (gtk_widget_is_toplevel (toplevel))
        {
 #ifdef GDK_WINDOWING_X11
-         gtk_window_present_with_time (GTK_WINDOW (toplevel), gdk_x11_get_server_time (widget->window));
+         gtk_window_present_with_time (GTK_WINDOW (toplevel),
+                                        gdk_x11_get_server_time (gtk_widget_get_window (widget)));
 #else
          gtk_window_present (GTK_WINDOW (toplevel));
 #endif
@@ -2258,7 +2254,7 @@ idle_expand_row (gpointer data)
   gailview->idle_expand_id = 0;
 
   path = gailview->idle_expand_path;
-  tree_view = GTK_TREE_VIEW (GTK_ACCESSIBLE (gailview)->widget);
+  tree_view = GTK_TREE_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (gailview)));
 
   g_assert (GTK_IS_TREE_VIEW (tree_view));
 
@@ -2416,7 +2412,7 @@ gail_tree_view_changed_gtk (GtkTreeSelection *selection,
 
   gailview = GAIL_TREE_VIEW (data);
   cell_list = gailview->cell_data;
-  widget = GTK_ACCESSIBLE (gailview)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (gailview));
   if (widget == NULL)
     /*
      * destroy signal emitted for widget
@@ -2442,7 +2438,7 @@ gail_tree_view_changed_gtk (GtkTreeSelection *selection,
          gtk_tree_path_free (path);
       }
     }
-  if (GTK_WIDGET_REALIZED (widget))
+  if (gtk_widget_get_realized (widget))
     g_signal_emit_by_name (gailview, "selection_changed");
 }
 
@@ -2622,7 +2618,7 @@ idle_cursor_changed (gpointer data)
 
   gail_tree_view->idle_cursor_changed_id = 0;
 
-  widget = GTK_ACCESSIBLE (gail_tree_view)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (gail_tree_view));
   /*
    * Widget has been deleted
    */
@@ -2644,7 +2640,7 @@ idle_cursor_changed (gpointer data)
             }
           gail_tree_view->focus_cell = cell;
 
-          if (GTK_WIDGET_HAS_FOCUS (widget))
+          if (gtk_widget_has_focus (widget))
             {
               gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_ACTIVE, FALSE);
               gail_cell_add_state (GAIL_CELL (cell), ATK_STATE_FOCUSED, FALSE);
@@ -2660,7 +2656,7 @@ idle_cursor_changed (gpointer data)
   return FALSE;
 }
 
-static void
+static gboolean
 focus_in (GtkWidget *widget)
 {
   GtkTreeView *tree_view;
@@ -2692,9 +2688,10 @@ focus_in (GtkWidget *widget)
             }
         }
     }
+  return FALSE;
 }
 
-static void
+static gboolean
 focus_out (GtkWidget *widget)
 {
   GailTreeView *gail_tree_view;
@@ -2707,6 +2704,7 @@ focus_out (GtkWidget *widget)
     g_object_unref (gail_tree_view->focus_cell);
     gail_tree_view->focus_cell = NULL;
   }
+  return FALSE;
 }
 
 static void
@@ -2803,28 +2801,6 @@ column_visibility_changed (GObject    *object,
     }
 }
 
-/*
- * This is the signal handler for the "destroy" signal for a GtkTreeViewColumn
- *
- * We check whether we have stored column description or column header
- * and if so we get rid of it.
- */
-static void
-column_destroy (GtkObject *obj)
-{
-  GtkTreeViewColumn *tv_col = GTK_TREE_VIEW_COLUMN (obj);
-  AtkObject *header;
-  gchar *desc;
-
-  header = g_object_get_qdata (G_OBJECT (tv_col),
-                          quark_column_header_object);
-  if (header)
-    g_object_unref (header);
-  desc = g_object_get_qdata (G_OBJECT (tv_col),
-                           quark_column_desc_object);
-  g_free (desc); 
-}
-
 static void
 model_row_inserted (GtkTreeModel *tree_model,
                     GtkTreePath  *path, 
@@ -3049,7 +3025,7 @@ set_cell_visibility (GtkTreeView       *tree_view,
   GdkRectangle cell_rect;
 
   /* Get these three values in tree coords */
-  if (GTK_WIDGET_REALIZED (GTK_WIDGET (tree_view)))
+  if (gtk_widget_get_realized (GTK_WIDGET (tree_view)))
     gtk_tree_view_get_cell_area (tree_view, tree_path, tv_col, &cell_rect);
   else
     cell_rect.height = 0;
@@ -3155,7 +3131,7 @@ update_cell_value (GailRendererCell *renderer_cell,
 
   if (emit_change_signal && cell_info->in_use)
     {
-      tree_view = GTK_TREE_VIEW (GTK_ACCESSIBLE (gailview)->widget);
+      tree_view = GTK_TREE_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (gailview)));
       tree_model = gtk_tree_view_get_model (tree_view);
       path = gtk_tree_row_reference_get_path (cell_info->cell_row_ref);
       if (path == NULL)
@@ -3737,7 +3713,7 @@ traverse_cells (GailTreeView *tree_view,
 
       g_assert (GTK_IS_ACCESSIBLE (tree_view));
 
-      widget = GTK_ACCESSIBLE (tree_view)->widget;
+      widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (tree_view));
       if (!widget)
         /* Widget is being deleted */
         return;
@@ -3961,7 +3937,7 @@ toggle_cell_expanded (GailCell *cell)
   gail_return_if_fail (cell_info->cell_col_ref);
   gail_return_if_fail (cell_info->cell_row_ref);
 
-  tree_view = GTK_TREE_VIEW (GTK_ACCESSIBLE (parent)->widget);
+  tree_view = GTK_TREE_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (parent)));
   path = gtk_tree_row_reference_get_path (cell_info->cell_row_ref);
   gail_return_if_fail (path);
 
@@ -3998,7 +3974,7 @@ toggle_cell_toggled (GailCell *cell)
   gail_return_if_fail (cell_info->cell_col_ref);
   gail_return_if_fail (cell_info->cell_row_ref);
 
-  tree_view = GTK_TREE_VIEW (GTK_ACCESSIBLE (parent)->widget);
+  tree_view = GTK_TREE_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (parent)));
   path = gtk_tree_row_reference_get_path (cell_info->cell_row_ref);
   gail_return_if_fail (path);
   pathstring = gtk_tree_path_to_string (path);
@@ -4051,7 +4027,7 @@ edit_cell (GailCell *cell)
   gail_return_if_fail (cell_info->cell_col_ref);
   gail_return_if_fail (cell_info->cell_row_ref);
 
-  tree_view = GTK_TREE_VIEW (GTK_ACCESSIBLE (parent)->widget);
+  tree_view = GTK_TREE_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (parent)));
   path = gtk_tree_row_reference_get_path (cell_info->cell_row_ref);
   gail_return_if_fail (path);
   gtk_tree_view_set_cursor (tree_view, path, cell_info->cell_col_ref, TRUE);
@@ -4081,7 +4057,7 @@ activate_cell (GailCell *cell)
   gail_return_if_fail (cell_info->cell_col_ref);
   gail_return_if_fail (cell_info->cell_row_ref);
 
-  tree_view = GTK_TREE_VIEW (GTK_ACCESSIBLE (parent)->widget);
+  tree_view = GTK_TREE_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (parent)));
   path = gtk_tree_row_reference_get_path (cell_info->cell_row_ref);
   gail_return_if_fail (path);
   gtk_tree_view_row_activated (tree_view, path, cell_info->cell_col_ref);
@@ -4180,7 +4156,7 @@ find_cell (GailTreeView *gailview,
   gboolean needs_cleaning = FALSE;
   GailCell *retval = NULL;
 
-  tree_view = GTK_TREE_VIEW (GTK_ACCESSIBLE (gailview)->widget);
+  tree_view = GTK_TREE_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (gailview)));
   cell_list = gailview->cell_data;
 
   for (l = cell_list; l; l = l->next)
@@ -4217,7 +4193,7 @@ refresh_cell_index (GailCell *cell)
   parent = atk_object_get_parent (ATK_OBJECT (cell));
   gail_return_if_fail (GAIL_IS_TREE_VIEW (parent));
 
-  tree_view = GTK_TREE_VIEW (GTK_ACCESSIBLE (parent)->widget);
+  tree_view = GTK_TREE_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (parent)));
 
   /* Find this cell in the GailTreeView's cache */
 
@@ -4266,7 +4242,7 @@ disconnect_model_signals (GailTreeView *view)
   GtkWidget *widget;
 
   obj = G_OBJECT (view->tree_model);
-  widget = GTK_ACCESSIBLE (view)->widget;
+  widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (view));
   g_signal_handlers_disconnect_by_func (obj, (gpointer) model_row_changed, widget);
   g_signal_handlers_disconnect_by_func (obj, (gpointer) model_row_inserted, widget);
   g_signal_handlers_disconnect_by_func (obj, (gpointer) model_row_deleted, widget);