diff options
author | Benjamin Otte <otte@redhat.com> | 2013-04-09 12:06:51 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2013-04-09 12:09:12 +0200 |
commit | 70dbb14f8985fda34e3c78a743b9de656614fbcc (patch) | |
tree | b5f3ac46908548cc86f532e8c34c3c3dcab0085a | |
parent | 33f1210f7218aa85399a3376850c900cfe106f05 (diff) | |
download | gtk+-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.c | 21 |
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) |