[gtk/columnview-reorder-cells: 2/4] listitemwidget: Add api to reorder children
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/columnview-reorder-cells: 2/4] listitemwidget: Add api to reorder children
- Date: Fri, 5 Jun 2020 17:29:33 +0000 (UTC)
commit 15c6ad88c09f63c737c45254f5d544c1f2114d22
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Jun 5 12:39:00 2020 -0400
listitemwidget: Add api to reorder children
We need this to keep the rows in sync with the columns
when they are reordered.
gtk/gtklistitemwidget.c | 31 +++++++++++++++++++++++++++++++
gtk/gtklistitemwidgetprivate.h | 3 +++
2 files changed, 34 insertions(+)
---
diff --git a/gtk/gtklistitemwidget.c b/gtk/gtklistitemwidget.c
index 2d71720c28..f700269823 100644
--- a/gtk/gtklistitemwidget.c
+++ b/gtk/gtklistitemwidget.c
@@ -609,6 +609,37 @@ gtk_list_item_widget_add_child (GtkListItemWidget *self,
gtk_widget_set_parent (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 (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;
+ }
+ }
+ }
+
+ gtk_widget_insert_after (child, widget, sibling);
+ gtk_css_node_insert_after (gtk_widget_get_css_node (widget),
+ gtk_widget_get_css_node (child),
+ sibling ? gtk_widget_get_css_node (sibling) : NULL);
+}
+
void
gtk_list_item_widget_remove_child (GtkListItemWidget *self,
GtkWidget *child)
diff --git a/gtk/gtklistitemwidgetprivate.h b/gtk/gtklistitemwidgetprivate.h
index f3c7fdbdc9..3042d08789 100644
--- a/gtk/gtklistitemwidgetprivate.h
+++ b/gtk/gtklistitemwidgetprivate.h
@@ -75,6 +75,9 @@ void gtk_list_item_widget_set_single_click_activate
gboolean
single_click_activate);
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,
GtkWidget *child);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]