#include "gtkcolumnviewcellprivate.h"
#include "gtkcolumnviewcolumnprivate.h"
-#include "gtkprivate.h"
-#include "gtklistitemwidgetprivate.h"
-#include "gtkwidgetprivate.h"
+#include "gtkcolumnviewrowwidgetprivate.h"
#include "gtkcssnodeprivate.h"
#include "gtkcssnumbervalueprivate.h"
+#include "gtklistitemwidgetprivate.h"
+#include "gtkprivate.h"
+#include "gtkwidgetprivate.h"
struct _GtkColumnViewCell
{
GtkWidget *widget = GTK_WIDGET (self);
- gtk_list_item_widget_remove_child (GTK_LIST_ITEM_WIDGET (gtk_widget_get_parent (widget)), widget);
+ gtk_column_view_row_widget_remove_child (GTK_COLUMN_VIEW_ROW_WIDGET (gtk_widget_get_parent (widget)), widget);
}
GtkColumnViewCell *
if (self->child == child)
return;
- if (self->child && self->owner)
- gtk_list_item_widget_remove_child (self->owner, self->child);
-
g_clear_object (&self->child);
if (child)
{
g_object_ref_sink (child);
self->child = child;
-
- if (self->owner)
- gtk_list_item_widget_add_child (self->owner, child);
}
+ if (self->owner)
+ gtk_list_item_widget_set_child (self->owner, child);
+
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ITEM]);
}
list_item->owner = self;
- if (list_item->child)
- gtk_list_item_widget_add_child (self, list_item->child);
+ gtk_list_item_widget_set_child (self, list_item->child);
gtk_list_factory_widget_set_activatable (fw, list_item->activatable);
gtk_list_factory_widget_set_selectable (fw, list_item->selectable);
list_item->owner = NULL;
- if (list_item->child)
- gtk_list_item_widget_remove_child (self, list_item->child);
+ gtk_list_item_widget_set_child (self, NULL);
gtk_list_factory_widget_set_activatable (fw, FALSE);
gtk_list_factory_widget_set_selectable (fw, FALSE);
}
void
-gtk_list_item_widget_add_child (GtkListItemWidget *self,
+gtk_list_item_widget_set_child (GtkListItemWidget *self,
GtkWidget *child)
{
- gtk_widget_set_parent (child, GTK_WIDGET (self));
-}
+ GtkWidget *cur_child = gtk_widget_get_first_child (GTK_WIDGET (self));
-void
-gtk_list_item_widget_reorder_child (GtkListItemWidget *self,
- GtkWidget *child,
- guint position)
-{
- GtkWidget *widget = GTK_WIDGET (self);
- GtkWidget *sibling = NULL;
+ if (cur_child == child)
+ return;
- if (position > 0)
- {
- GtkWidget *c;
- guint i;
-
- for (c = gtk_widget_get_first_child (widget), i = 0;
- c;
- c = gtk_widget_get_next_sibling (c), i++)
- {
- if (i + 1 == position)
- {
- sibling = c;
- break;
- }
- }
- }
+ g_clear_pointer (&cur_child, gtk_widget_unparent);
- if (child != sibling)
- gtk_widget_insert_after (child, widget, sibling);
-}
-
-void
-gtk_list_item_widget_remove_child (GtkListItemWidget *self,
- GtkWidget *child)
-{
- gtk_widget_unparent (child);
+ if (child)
+ gtk_widget_set_parent (child, GTK_WIDGET (self));
}
const char *css_name,
GtkAccessibleRole role);
-void gtk_list_item_widget_add_child (GtkListItemWidget *self,
- GtkWidget *child);
-void gtk_list_item_widget_reorder_child (GtkListItemWidget *self,
- GtkWidget *child,
- guint position);
-void gtk_list_item_widget_remove_child (GtkListItemWidget *self,
+void gtk_list_item_widget_set_child (GtkListItemWidget *self,
GtkWidget *child);
G_END_DECLS