[gtk+] window: Split out a function



commit 70dbb14f8985fda34e3c78a743b9de656614fbcc
Author: Benjamin Otte <otte redhat com>
Date:   Tue Apr 9 12:06:51 2013 +0200

    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.

 gtk/gtkwindow.c |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index a25ce75..d929164 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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]