summaryrefslogtreecommitdiff
path: root/gtk/gtkpaned.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2016-05-02 07:38:26 -0400
committerMatthias Clasen <mclasen@redhat.com>2016-05-02 07:42:06 -0400
commit9a03fc906affbe509959b36dcef0eb179876d56b (patch)
treef6455a27bd730d21225125833d3573d97c0a23b4 /gtk/gtkpaned.c
parent264b2b78cd52a1e87d0090876d589b9ddbb8bc60 (diff)
downloadgtk+-9a03fc906affbe509959b36dcef0eb179876d56b.tar.gz
Fix gtk_paned_set_position to set position_set consistently
As pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=765676, we were failing to set position_set if the position did not change.
Diffstat (limited to 'gtk/gtkpaned.c')
-rw-r--r--gtk/gtkpaned.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c
index 0c7bc30a56..dbde5bdaae 100644
--- a/gtk/gtkpaned.c
+++ b/gtk/gtkpaned.c
@@ -2355,17 +2355,13 @@ gtk_paned_set_position (GtkPaned *paned,
gint position)
{
GtkPanedPrivate *priv;
- GObject *object;
g_return_if_fail (GTK_IS_PANED (paned));
priv = paned->priv;
- if (priv->child1_size == position)
- return;
+ g_object_freeze_notify (G_OBJECT (paned));
- object = G_OBJECT (paned);
-
if (position >= 0)
{
/* We don't clamp here - the assumption is that
@@ -2375,20 +2371,27 @@ gtk_paned_set_position (GtkPaned *paned,
* then clamping will occur in gtk_paned_calc_position()
*/
+ if (!priv->position_set)
+ g_object_notify (G_OBJECT (paned), "position-set");
+
+ if (priv->child1_size != position)
+ {
+ g_object_notify (G_OBJECT (paned), "position");
+ gtk_widget_queue_resize_no_redraw (GTK_WIDGET (paned));
+ }
+
priv->child1_size = position;
priv->position_set = TRUE;
}
else
{
+ if (priv->position_set)
+ g_object_notify (G_OBJECT (paned), "position-set");
+
priv->position_set = FALSE;
}
- g_object_freeze_notify (object);
- g_object_notify (object, "position");
- g_object_notify (object, "position-set");
- g_object_thaw_notify (object);
-
- gtk_widget_queue_resize_no_redraw (GTK_WIDGET (paned));
+ g_object_thaw_notify (G_OBJECT (paned));
#ifdef G_OS_WIN32
/* Hacky work-around for bug #144269 */