summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2013-04-09 12:06:51 +0200
committerBenjamin Otte <otte@redhat.com>2013-04-09 12:09:12 +0200
commit70dbb14f8985fda34e3c78a743b9de656614fbcc (patch)
treeb5f3ac46908548cc86f532e8c34c3c3dcab0085a
parent33f1210f7218aa85399a3376850c900cfe106f05 (diff)
downloadgtk+-70dbb14f8985fda34e3c78a743b9de656614fbcc.tar.gz
window: Split out a function
We don't want to remember sizes in the not resizable case. Also a function named "guess_default_size" should not look at previous sizes, it should guess.
-rw-r--r--gtk/gtkwindow.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index a25ce752d6..d92916407a 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -5558,7 +5558,6 @@ gtk_window_guess_default_size (GtkWindow *window,
gint *width,
gint *height)
{
- GtkWindowGeometryInfo *info;
GtkWidget *widget;
GdkScreen *screen;
int minimum, natural;
@@ -5598,11 +5597,21 @@ gtk_window_guess_default_size (GtkWindow *window,
gtk_widget_get_preferred_height_for_width (widget, *width, &minimum, &natural);
*height = MAX (minimum, MIN (*height, natural));
}
+}
+
+static void
+gtk_window_get_remembered_size (GtkWindow *window,
+ int *width,
+ int *height)
+{
+ GtkWindowGeometryInfo *info;
+
+ *width = 0;
+ *height = 0;
info = gtk_window_get_geometry_info (window, FALSE);
if (info)
{
- g_print ("last geometry info was %d %d\n", info->last.configure_request.width, info->last.configure_request.height);
/* MAX() works even if the last request is unset with -1 */
*width = MAX (*width, info->last.configure_request.width);
*height = MAX (*height, info->last.configure_request.height);
@@ -5674,11 +5683,15 @@ gtk_window_realize (GtkWidget *widget)
allocation.width == 1 &&
allocation.height == 1)
{
+ gint w, h;
allocation.x = 0;
allocation.y = 0;
gtk_window_guess_default_size (window, &allocation.width, &allocation.height);
+ gtk_window_get_remembered_size (window, &w, &h);
+ allocation.width = MAX (allocation.width, w);
+ allocation.height = MAX (allocation.height, h);
if (allocation.width == 0 || allocation.height == 0)
{
/* non-empty window */
@@ -7978,6 +7991,7 @@ gtk_window_compute_configure_request_size (GtkWindow *window,
gint *height)
{
GtkWindowGeometryInfo *info;
+ int w, h;
/* Preconditions:
* - we've done a size request
@@ -7986,6 +8000,9 @@ gtk_window_compute_configure_request_size (GtkWindow *window,
info = gtk_window_get_geometry_info (window, FALSE);
gtk_window_guess_default_size (window, width, height);
+ gtk_window_get_remembered_size (window, &w, &h);
+ *width = MAX (*width, w);
+ *height = MAX (*height, h);
/* If window is empty so requests 0, default to random nonzero size */
if (*width == 0 && *height == 0)