columnviewcell: Remove root/unroot stuff
authorBenjamin Otte <otte@redhat.com>
Mon, 27 Mar 2023 19:43:20 +0000 (21:43 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 27 Mar 2023 21:37:01 +0000 (23:37 +0200)
Instead, do that work on creation/dispose.

This is a followup to 3fb10ff2d8cdffdc5e026f9b57c4d5580a36d308.

gtk/gtkcolumnviewcell.c

index 772303006dc67486a3da6c3bc6e8d292836344fd..97f153a09b3ab4ba05b403e8394eb0e24d33060f 100644 (file)
@@ -138,43 +138,24 @@ gtk_column_view_cell_size_allocate (GtkWidget *widget,
 }
 
 static void
-gtk_column_view_cell_root (GtkWidget *widget)
-{
-  GtkColumnViewCell *self = GTK_COLUMN_VIEW_CELL (widget);
-
-  GTK_WIDGET_CLASS (gtk_column_view_cell_parent_class)->root (widget);
-
-  self->next_cell = gtk_column_view_column_get_first_cell (self->column);
-  if (self->next_cell)
-    self->next_cell->prev_cell = self;
-
-  gtk_column_view_column_add_cell (self->column, self);
-}
-
-static void
-gtk_column_view_cell_unroot (GtkWidget *widget)
+gtk_column_view_cell_dispose (GObject *object)
 {
-  GtkColumnViewCell *self = GTK_COLUMN_VIEW_CELL (widget);
-
-  gtk_column_view_column_remove_cell (self->column, self);
-
-  if (self->prev_cell)
-    self->prev_cell->next_cell = self->next_cell;
-  if (self->next_cell)
-    self->next_cell->prev_cell = self->prev_cell;
+  GtkColumnViewCell *self = GTK_COLUMN_VIEW_CELL (object);
 
-  self->prev_cell = NULL;
-  self->next_cell = NULL;
+  if (self->column)
+    {
+      gtk_column_view_column_remove_cell (self->column, self);
 
-  GTK_WIDGET_CLASS (gtk_column_view_cell_parent_class)->unroot (widget);
-}
+      if (self->prev_cell)
+        self->prev_cell->next_cell = self->next_cell;
+      if (self->next_cell)
+        self->next_cell->prev_cell = self->prev_cell;
 
-static void
-gtk_column_view_cell_dispose (GObject *object)
-{
-  GtkColumnViewCell *self = GTK_COLUMN_VIEW_CELL (object);
+      self->prev_cell = NULL;
+      self->next_cell = NULL;
 
-  g_clear_object (&self->column);
+      g_clear_object (&self->column);
+    }
 
   G_OBJECT_CLASS (gtk_column_view_cell_parent_class)->dispose (object);
 }
@@ -196,8 +177,6 @@ gtk_column_view_cell_class_init (GtkColumnViewCellClass *klass)
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  widget_class->root = gtk_column_view_cell_root;
-  widget_class->unroot = gtk_column_view_cell_unroot;
   widget_class->measure = gtk_column_view_cell_measure;
   widget_class->size_allocate = gtk_column_view_cell_size_allocate;
   widget_class->get_request_mode = gtk_column_view_cell_get_request_mode;
@@ -232,15 +211,21 @@ gtk_column_view_cell_init (GtkColumnViewCell *self)
 GtkWidget *
 gtk_column_view_cell_new (GtkColumnViewColumn *column)
 {
-  GtkColumnViewCell *cell;
+  GtkColumnViewCell *self;
 
-  cell = g_object_new (GTK_TYPE_COLUMN_VIEW_CELL,
+  self = g_object_new (GTK_TYPE_COLUMN_VIEW_CELL,
                        "factory", gtk_column_view_column_get_factory (column),
                        NULL);
 
-  cell->column = g_object_ref (column);
+  self->column = g_object_ref (column);
+
+  self->next_cell = gtk_column_view_column_get_first_cell (self->column);
+  if (self->next_cell)
+    self->next_cell->prev_cell = self;
+
+  gtk_column_view_column_add_cell (self->column, self);
 
-  return GTK_WIDGET (cell);
+  return GTK_WIDGET (self);
 }
 
 void