[gnome-builder] settings: only update settings if the window is visible



commit 78b556473af30d3bbdb91a22c3c5c349a6603d1a
Author: Christian Hergert <chergert redhat com>
Date:   Thu Sep 7 16:45:50 2017 -0700

    settings: only update settings if the window is visible

 libide/util/ide-window-settings.c |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)
---
diff --git a/libide/util/ide-window-settings.c b/libide/util/ide-window-settings.c
index 41b8334..54c6815 100644
--- a/libide/util/ide-window-settings.c
+++ b/libide/util/ide-window-settings.c
@@ -28,21 +28,26 @@ static gboolean
 ide_window_settings__window_save_settings_cb (gpointer data)
 {
   GtkWindow *window = data;
-  GdkRectangle geom;
-  gboolean maximized;
 
   g_assert (GTK_IS_WINDOW (window));
   g_assert (G_IS_SETTINGS (settings));
 
-  g_object_set_data (G_OBJECT (window), "SETTINGS_HANDLER_ID", NULL);
+  if (gtk_widget_get_realized (GTK_WIDGET (window)) &&
+      gtk_widget_get_visible (GTK_WIDGET (window)))
+    {
+      GdkRectangle geom;
+      gboolean maximized;
+
+      g_object_set_data (G_OBJECT (window), "SETTINGS_HANDLER_ID", NULL);
 
-  gtk_window_get_size (window, &geom.width, &geom.height);
-  gtk_window_get_position (window, &geom.x, &geom.y);
-  maximized = gtk_window_is_maximized (window);
+      gtk_window_get_size (window, &geom.width, &geom.height);
+      gtk_window_get_position (window, &geom.x, &geom.y);
+      maximized = gtk_window_is_maximized (window);
 
-  g_settings_set (settings, "window-size", "(ii)", geom.width, geom.height);
-  g_settings_set (settings, "window-position", "(ii)", geom.x, geom.y);
-  g_settings_set_boolean (settings, "window-maximized", maximized);
+      g_settings_set (settings, "window-size", "(ii)", geom.width, geom.height);
+      g_settings_set (settings, "window-position", "(ii)", geom.x, geom.y);
+      g_settings_set_boolean (settings, "window-maximized", maximized);
+    }
 
   return G_SOURCE_REMOVE;
 }


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