summaryrefslogtreecommitdiff
path: root/gtk/gtkpaned.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-03-30 17:32:38 -0400
committerMatthias Clasen <mclasen@redhat.com>2023-03-30 17:32:38 -0400
commit577195a243686a50f0a06d7b6b2ec598db3d2d1e (patch)
treed0d550629879c1cc8f23ed9a9ce252298cd55812 /gtk/gtkpaned.c
parent2650c4e974cdeefff3656f9e9cbd2df2eb9725a9 (diff)
downloadgtk+-577195a243686a50f0a06d7b6b2ec598db3d2d1e.tar.gz
Make widget property setters behave
We want to allow setting a property to its current value, while still having a precondition for widget->parent being NULL otherwise.
Diffstat (limited to 'gtk/gtkpaned.c')
-rw-r--r--gtk/gtkpaned.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c
index 1d5aebe5bf..88aed6675e 100644
--- a/gtk/gtkpaned.c
+++ b/gtk/gtkpaned.c
@@ -1574,11 +1574,14 @@ gtk_paned_new (GtkOrientation orientation)
* If @child is `NULL`, the existing child will be removed.
*/
void
-gtk_paned_set_start_child (GtkPaned *paned,
+gtk_paned_set_start_child (GtkPaned *paned,
GtkWidget *child)
{
g_return_if_fail (GTK_IS_PANED (paned));
- g_return_if_fail (child == NULL || GTK_IS_WIDGET (child));
+ g_return_if_fail (child == NULL || paned->start_child == child || gtk_widget_get_parent (child) == NULL);
+
+ if (paned->start_child == child)
+ return;
g_clear_pointer (&paned->start_child, gtk_widget_unparent);
@@ -1691,11 +1694,14 @@ gtk_paned_get_shrink_start_child (GtkPaned *paned)
* If @child is `NULL`, the existing child will be removed.
*/
void
-gtk_paned_set_end_child (GtkPaned *paned,
+gtk_paned_set_end_child (GtkPaned *paned,
GtkWidget *child)
{
g_return_if_fail (GTK_IS_PANED (paned));
- g_return_if_fail (child == NULL || GTK_IS_WIDGET (child));
+ g_return_if_fail (child == NULL || paned->end_child == child || gtk_widget_get_parent (child) == NULL);
+
+ if (paned->end_child == child)
+ return;
g_clear_pointer (&paned->end_child, gtk_widget_unparent);