xfce4-settings: Remember the settings manager window size

Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Andreas Müller
2012-12-23 13:02:35 +00:00
committed by Martin Jansa
parent 8663bf9e29
commit 701f87736f
2 changed files with 157 additions and 1 deletions
@@ -0,0 +1,155 @@
From b3b1986327b9b42ac6f9442443ff103f6565a323 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Guelfucci?= <jeromeg@xfce.org>
Date: Wed, 19 Dec 2012 09:53:58 +0100
Subject: [PATCH] Remember the settings manager window size (bug #9384).
Handy with pluggable dialogs, allows the user to get rid of most of the
scrollbars.
Upstream-Status: applied
---
xfce4-settings-manager/Makefile.am | 2 +
xfce4-settings-manager/main.c | 13 +++++++
.../xfce-settings-manager-dialog.c | 38 +++++++++++++++-----
3 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/xfce4-settings-manager/Makefile.am b/xfce4-settings-manager/Makefile.am
index c6bdc2d..99f9b3f 100644
--- a/xfce4-settings-manager/Makefile.am
+++ b/xfce4-settings-manager/Makefile.am
@@ -20,6 +20,7 @@ xfce4_settings_manager_CFLAGS = \
$(LIBXFCE4UTIL_CFLAGS) \
$(LIBXFCE4UI_CFLAGS) \
$(GARCON_CFLAGS) \
+ $(XFCONF_CFLAGS) \
$(EXO_CFLAGS) \
$(PLATFORM_CFLAGS)
@@ -31,6 +32,7 @@ xfce4_settings_manager_LDADD = \
$(GTK_LIBS) \
$(LIBXFCE4UTIL_LIBS) \
$(LIBXFCE4UI_LIBS) \
+ $(XFCONF_LIBS) \
$(EXO_LIBS) \
$(GARCON_LIBS)
diff --git a/xfce4-settings-manager/main.c b/xfce4-settings-manager/main.c
index 3a65879..42bec66 100644
--- a/xfce4-settings-manager/main.c
+++ b/xfce4-settings-manager/main.c
@@ -28,6 +28,7 @@
#include <gtk/gtk.h>
#include <libxfce4util/libxfce4util.h>
#include <garcon/garcon.h>
+#include <xfconf/xfconf.h>
#include "xfce-settings-manager-dialog.h"
@@ -79,6 +80,16 @@ main(int argc,
return EXIT_SUCCESS;
}
+ /* initialize xfconf */
+ if (G_UNLIKELY (!xfconf_init (&error)))
+ {
+ /* print error and leave */
+ g_critical ("Failed to connect to Xfconf daemon: %s", error->message);
+ g_error_free (error);
+
+ return EXIT_FAILURE;
+ }
+
garcon_set_environment ("XFCE");
dialog = xfce_settings_manager_dialog_new ();
@@ -95,5 +106,7 @@ main(int argc,
gtk_main();
+ xfconf_shutdown ();
+
return EXIT_SUCCESS;
}
diff --git a/xfce4-settings-manager/xfce-settings-manager-dialog.c b/xfce4-settings-manager/xfce-settings-manager-dialog.c
index 043b143..39e33ff 100644
--- a/xfce4-settings-manager/xfce-settings-manager-dialog.c
+++ b/xfce4-settings-manager/xfce-settings-manager-dialog.c
@@ -35,6 +35,7 @@
#include <libxfce4util/libxfce4util.h>
#include <libxfce4ui/libxfce4ui.h>
+#include <xfconf/xfconf.h>
#include <garcon/garcon.h>
#include <exo/exo.h>
@@ -55,6 +56,7 @@ struct _XfceSettingsManagerDialog
{
XfceTitledDialog __parent__;
+ XfconfChannel *channel;
GarconMenu *menu;
GtkListStore *store;
@@ -156,17 +158,19 @@ xfce_settings_manager_dialog_class_init (XfceSettingsManagerDialogClass *klass)
static void
xfce_settings_manager_dialog_init (XfceSettingsManagerDialog *dialog)
{
- GtkWidget *scroll;
+ GtkWidget *align;
+ GtkWidget *bbox;
GtkWidget *dialog_vbox;
- GtkWidget *viewport;
- gchar *path;
- GtkWidget *hbox;
+ GtkWidget *ebox;
GtkWidget *entry;
- GtkWidget *align;
- GList *children;
+ GtkWidget *hbox;
GtkWidget *header;
- GtkWidget *ebox;
- GtkWidget *bbox;
+ GtkWidget *scroll;
+ GtkWidget *viewport;
+ GList *children;
+ gchar *path;
+
+ dialog->channel = xfconf_channel_get ("xfce4-settings-manager");
dialog->store = gtk_list_store_new (N_COLUMNS,
G_TYPE_STRING,
@@ -180,7 +184,9 @@ xfce_settings_manager_dialog_init (XfceSettingsManagerDialog *dialog)
dialog->menu = garcon_menu_new_for_path (path != NULL ? path : MENUFILE);
g_free (path);
- gtk_window_set_default_size (GTK_WINDOW (dialog), 640, 500);
+ gtk_window_set_default_size (GTK_WINDOW (dialog),
+ xfconf_channel_get_int (dialog->channel, "/last/window-width", 640),
+ xfconf_channel_get_int (dialog->channel, "/last/window-height", 500));
xfce_settings_manager_dialog_set_title (dialog, NULL, NULL, NULL);
dialog->button_back = xfce_gtk_button_new_mixed (GTK_STOCK_GO_BACK, _("All _Settings"));
@@ -334,6 +340,20 @@ xfce_settings_manager_dialog_response (GtkDialog *widget,
}
else
{
+ GdkWindowState state;
+ gint width, height;
+
+ /* Don't save the state for full-screen windows */
+ state = gdk_window_get_state (GTK_WIDGET (widget)->window);
+
+ if ((state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN)) == 0)
+ {
+ /* Save window size */
+ gtk_window_get_size (GTK_WINDOW (widget), &width, &height);
+ xfconf_channel_set_int (dialog->channel, "/last/window-width", width),
+ xfconf_channel_set_int (dialog->channel, "/last/window-height", height);
+ }
+
gtk_widget_destroy (GTK_WIDGET (widget));
gtk_main_quit ();
}
--
1.7.4.4
@@ -3,12 +3,13 @@ SECTION = "x11/wm"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
DEPENDS = "exo garcon gtk+ libxfce4util libxfce4ui xfconf dbus-glib libxi virtual/libx11 xrandr libnotify libxcursor libxklavier"
PR = "r2"
PR = "r3"
inherit xfce
SRC_URI += "file://0001-xsettings.xml-remove-trouble-causing-comment.patch \
file://0002-xsettings.xml-Set-default-themes.patch \
file://0003-Remember-the-settings-manager-window-size-bug-9384.patch \
file://touchscreen/invisible \
file://touchscreen/wait \
file://touchscreen/0001-add-cursor-theme-xfce-invisible.patch \