From 6370d6cb2780350ed9e8638e375d560dc821b194 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Wed, 24 Feb 2016 12:00:46 -0800 Subject: [PATCH] boxgadget: add APIs to insert gadgets next to siblings --- gtk/gtkboxgadget.c | 34 ++++++++++++++++++++++++++++++++++ gtk/gtkboxgadgetprivate.h | 13 +++++++++++++ 2 files changed, 47 insertions(+) diff --git a/gtk/gtkboxgadget.c b/gtk/gtkboxgadget.c index 9f72d543b1..2380236500 100644 --- a/gtk/gtkboxgadget.c +++ b/gtk/gtkboxgadget.c @@ -690,6 +690,40 @@ expand_func_from_flags (gboolean hexpand, : (vexpand ? only_vertical : (ComputeExpandFunc) gtk_false); } +void +gtk_box_gadget_insert_gadget_before (GtkBoxGadget *gadget, + GtkCssGadget *sibling, + GtkCssGadget *cssgadget, + gboolean hexpand, + gboolean vexpand, + GtkAlign align) +{ + /* Insert at the end if no sibling specified */ + int pos = -1; + + if (sibling) + gtk_box_gadget_find_object (gadget, G_OBJECT (sibling), &pos); + + gtk_box_gadget_insert_gadget (gadget, pos, cssgadget, hexpand, vexpand, align); +} + +void +gtk_box_gadget_insert_gadget_after (GtkBoxGadget *gadget, + GtkCssGadget *sibling, + GtkCssGadget *cssgadget, + gboolean hexpand, + gboolean vexpand, + GtkAlign align) +{ + /* Insert at the beginning if no sibling specified */ + int pos = 0; + + if (sibling && gtk_box_gadget_find_object (gadget, G_OBJECT (sibling), &pos)) + pos++; + + gtk_box_gadget_insert_gadget (gadget, pos, cssgadget, hexpand, vexpand, align); +} + void gtk_box_gadget_insert_gadget (GtkBoxGadget *gadget, int pos, diff --git a/gtk/gtkboxgadgetprivate.h b/gtk/gtkboxgadgetprivate.h index 8979f70e9d..c970a3be49 100644 --- a/gtk/gtkboxgadgetprivate.h +++ b/gtk/gtkboxgadgetprivate.h @@ -72,6 +72,19 @@ void gtk_box_gadget_insert_gadget (GtkBoxGadget gboolean hexpand, gboolean vexpand, GtkAlign align); +void gtk_box_gadget_insert_gadget_before (GtkBoxGadget *gadget, + GtkCssGadget *sibling, + GtkCssGadget *cssgadget, + gboolean hexpand, + gboolean vexpand, + GtkAlign align); +void gtk_box_gadget_insert_gadget_after (GtkBoxGadget *gadget, + GtkCssGadget *sibling, + GtkCssGadget *cssgadget, + gboolean hexpand, + gboolean vexpand, + GtkAlign align); + void gtk_box_gadget_remove_gadget (GtkBoxGadget *gadget, GtkCssGadget *cssgadget); void gtk_box_gadget_reverse_children (GtkBoxGadget *gadget);