summaryrefslogtreecommitdiff
path: root/gtk/gtksizegroup.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-11-02 00:44:30 +0100
committerBenjamin Otte <otte@redhat.com>2012-11-04 15:24:17 +0100
commitbe1bde91112c80ddc475547db0d5cfabdff7f046 (patch)
tree6fa7020764637da5c2b3a1892692e4f7db2f9047 /gtk/gtksizegroup.c
parent48ff2fc7ed1f418002def55fc496a7f86f9e7ef7 (diff)
downloadgtk+-be1bde91112c80ddc475547db0d5cfabdff7f046.tar.gz
sizegroups: Use is_visible() instead of get_mapped() for visibility
The current approach of using gtk_widget_get_mapped() is broken: The usual steps taken when showing a window are: (1) request the sizes (2) allocate the sizes (3) show the window in the allocated size Showing the window with a random size between steps (1) and (2) would of course result in extra work and potential flickering when the widgets get resized to their proper sizes. However, as GtkSizeGroup::ignore-hidden uses gtk_widget_get_mapped() to determine visibility for a widget, the following will happen: (1) the widget will request a 0 size (2) the widget will be allocated a 0 size (3) the widget will be too small when it is shown gtk_widget_get_visible() however is set in advance. Note that toggling visibility also causes a gtk-widget_queue_resize() call already so we take care of changes in here automatically.
Diffstat (limited to 'gtk/gtksizegroup.c')
-rw-r--r--gtk/gtksizegroup.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gtk/gtksizegroup.c b/gtk/gtksizegroup.c
index 3385e04131..b9e2ac36a3 100644
--- a/gtk/gtksizegroup.c
+++ b/gtk/gtksizegroup.c
@@ -165,7 +165,7 @@ add_widget_to_closure (GtkWidget *widget,
*widgets = g_slist_prepend (*widgets, widget);
_gtk_widget_set_sizegroup_visited (widget, TRUE);
- hidden = !gtk_widget_get_mapped (widget);
+ hidden = !gtk_widget_is_visible (widget);
for (tmp_groups = _gtk_widget_get_sizegroups (widget); tmp_groups; tmp_groups = tmp_groups->next)
{