[Xfce4-commits] <xfdesktop:master> Remember the window size of the settings dialog.

Eric Koegel noreply at xfce.org
Sun Feb 23 07:18:01 CET 2014


Updating branch refs/heads/master
         to d309a6949b751002b33ed432f88fd47a1384db0e (commit)
       from 6583a1a632779e72ba6ecfa32a10f30980081876 (commit)

commit d309a6949b751002b33ed432f88fd47a1384db0e
Author: Harald Judt <h.judt at gmx.at>
Date:   Sat Feb 22 14:58:41 2014 +0100

    Remember the window size of the settings dialog.
    
    Signed-off-by: Eric Koegel <eric.koegel at gmail.com>

 settings/main.c |   29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/settings/main.c b/settings/main.c
index 9170ef0..a34256e 100644
--- a/settings/main.c
+++ b/settings/main.c
@@ -62,6 +62,9 @@
 #define PREVIEW_WIDTH    (PREVIEW_HEIGHT * MAX_ASPECT_RATIO)
 
 
+#define SETTINGS_WINDOW_LAST_WIDTH           "/last/window-width"
+#define SETTINGS_WINDOW_LAST_HEIGHT          "/last/window-height"
+
 #define SHOW_DESKTOP_MENU_PROP               "/desktop-menu/show"
 #define DESKTOP_MENU_SHOW_ICONS_PROP         "/desktop-menu/show-icons"
 
@@ -1931,12 +1934,27 @@ xfdesktop_settings_dialog_setup_tabs(GtkBuilder *main_gxml,
 }
 
 static void
-xfdesktop_settings_response(GtkWidget *dialog, gint response_id)
+xfdesktop_settings_response(GtkWidget *dialog, gint response_id, gpointer user_data)
 {
     if(response_id == GTK_RESPONSE_HELP)
         xfce_dialog_show_help(GTK_WINDOW(dialog), "xfdesktop", "preferences", NULL);
-    else
+    else {
+        XfconfChannel *channel = (XfconfChannel*) user_data;
+        GdkWindowState state;
+        gint width, height;
+
+        /* don't save the state for full-screen windows */
+        state = gdk_window_get_state(GTK_WIDGET(dialog)->window);
+
+        if ((state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN)) == 0) {
+            /* save window size */
+            gtk_window_get_size(GTK_WINDOW(dialog), &width, &height);
+            xfconf_channel_set_int(channel, SETTINGS_WINDOW_LAST_WIDTH, width);
+            xfconf_channel_set_int(channel, SETTINGS_WINDOW_LAST_HEIGHT, height);
+        }
+
         gtk_main_quit();
+    }
 }
 
 static GdkNativeWindow opt_socket_id = 0;
@@ -2017,7 +2035,12 @@ main(int argc, char **argv)
         GtkWidget *dialog;
         dialog = GTK_WIDGET(gtk_builder_get_object(gxml, "prefs_dialog"));
         g_signal_connect(dialog, "response",
-                         G_CALLBACK(xfdesktop_settings_response), NULL);
+                         G_CALLBACK(xfdesktop_settings_response),
+                         channel);
+        gtk_window_set_default_size
+            (GTK_WINDOW(dialog),
+             xfconf_channel_get_int(channel, SETTINGS_WINDOW_LAST_WIDTH, -1),
+             xfconf_channel_get_int(channel, SETTINGS_WINDOW_LAST_HEIGHT, -1));
         gtk_window_present(GTK_WINDOW (dialog));
 
         screen = gtk_widget_get_screen(dialog);


More information about the Xfce4-commits mailing list