summaryrefslogtreecommitdiff
path: root/gtk/gtksizerequest.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2010-12-15 10:33:02 +0100
committerBenjamin Otte <otte@redhat.com>2010-12-15 10:41:20 +0100
commit544146b9be4078009c35695b1744431c98a81a40 (patch)
treeec31ff00dbbf89daebb3a42ccc0c4367af47213a /gtk/gtksizerequest.c
parent208d717fefb7d1d1faa0dada132a290036b458d0 (diff)
downloadgtk+-544146b9be4078009c35695b1744431c98a81a40.tar.gz
size-request: Clamp size requests to screen size
Size requests should only ever need to return the screen's width/height and max. This way, potentially large widgets (tree view or icon view) don't need to do so many computations, but can stop when their computed size has reached the screen size.
Diffstat (limited to 'gtk/gtksizerequest.c')
-rw-r--r--gtk/gtksizerequest.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gtk/gtksizerequest.c b/gtk/gtksizerequest.c
index c5e49e7db3..41ec2599f4 100644
--- a/gtk/gtksizerequest.c
+++ b/gtk/gtksizerequest.c
@@ -239,6 +239,14 @@ compute_size_for_orientation (GtkWidget *widget,
&min_size, &nat_size);
pop_recursion_check (widget, orientation);
}
+#ifndef G_DISABLE_CHECKS
+ if (gtk_widget_get_screen (widget))
+ {
+ guint screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget));
+ min_size = MIN (min_size, screen_width);
+ nat_size = MIN (nat_size, screen_width);
+ }
+#endif
}
else
{
@@ -272,6 +280,14 @@ compute_size_for_orientation (GtkWidget *widget,
&min_size, &nat_size);
pop_recursion_check (widget, orientation);
}
+#ifndef G_DISABLE_CHECKS
+ if (gtk_widget_get_screen (widget))
+ {
+ guint screen_height = gdk_screen_get_height (gtk_widget_get_screen (widget));
+ min_size = MIN (min_size, screen_height);
+ nat_size = MIN (nat_size, screen_height);
+ }
+#endif
}
if (min_size > nat_size)