[nautilus/wip/antoniof/gnome-42: 35/72] Revert "window: Simplify save_geometry()"




commit 3c09d1faec9bb3a224dcbb99df48cdf8d4731be0
Author: António Fernandes <antoniof gnome org>
Date:   Fri Feb 11 19:01:46 2022 +0000

    Revert "window: Simplify save_geometry()"
    
    This reverts commit 212f7efc61a77cf0e7f3cc5b25eeedf604b5b73e.

 src/nautilus-window.c | 41 +++++++++++++++++++++++++++++------------
 1 file changed, 29 insertions(+), 12 deletions(-)
---
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 7c09fb51d..2a8ac417b 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -2303,32 +2303,49 @@ nautilus_window_save_geometry (NautilusWindow *window)
 {
     GdkWindow *gdk_window;
     GdkWindowState window_state;
-    gint width;
-    gint height;
-    GVariant *initial_size;
+    gboolean is_maximized;
 
     g_assert (NAUTILUS_IS_WINDOW (window));
 
     gdk_window = gtk_widget_get_window (GTK_WIDGET (window));
+
     if (!gdk_window)
     {
         return;
     }
+
     window_state = gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window)));
-    if (window_state & (GDK_WINDOW_STATE_TILED | GDK_WINDOW_STATE_MAXIMIZED))
+
+    /* Don't save the window state for tiled windows. This is a special case,
+     * where the geometry only makes sense in combination with other tiled
+     * windows, that we can't possibly restore. */
+    if (window_state & GDK_WINDOW_STATE_TILED)
     {
-        /* Don't save the window state for tiled or maximized windows. In GTK
-         * gtk_window_get_default_size() is going to do this for us.
-         */
         return;
     }
 
-    gtk_window_get_size (GTK_WINDOW (window), &width, &height);
-    initial_size = g_variant_new_parsed ("(%i, %i)", width, height);
+    is_maximized = window_state & GDK_WINDOW_STATE_MAXIMIZED;
 
-    g_settings_set_value (nautilus_window_state,
-                          NAUTILUS_WINDOW_STATE_INITIAL_SIZE,
-                          initial_size);
+    /* Only save the initial size when the window is not maximized. If the
+     * window is maximized, a previously stored initial size will be more
+     * appropriate when unmaximizing the window in the future. */
+    if (!is_maximized)
+    {
+        gint width;
+        gint height;
+        GVariant *initial_size;
+
+        gtk_window_get_size (GTK_WINDOW (window), &width, &height);
+        initial_size = g_variant_new_parsed ("(%i, %i)", width, height);
+
+        g_settings_set_value (nautilus_window_state,
+                              NAUTILUS_WINDOW_STATE_INITIAL_SIZE,
+                              initial_size);
+    }
+
+    g_settings_set_boolean (nautilus_window_state,
+                            NAUTILUS_WINDOW_STATE_MAXIMIZED,
+                            is_maximized);
 }
 
 void


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