diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-03-30 17:32:38 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-03-30 17:32:38 -0400 |
commit | 577195a243686a50f0a06d7b6b2ec598db3d2d1e (patch) | |
tree | d0d550629879c1cc8f23ed9a9ce252298cd55812 /gtk/gtkpaned.c | |
parent | 2650c4e974cdeefff3656f9e9cbd2df2eb9725a9 (diff) | |
download | gtk+-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.c | 14 |
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); |