[Xfce4-commits] <xfce4-settings:master> Remember the settings manager window size (bug #9384).
Jérôme Guelfucci
noreply at xfce.org
Wed Dec 19 09:56:01 CET 2012
Updating branch refs/heads/master
to b3b1986327b9b42ac6f9442443ff103f6565a323 (commit)
from 4346168db9aba1a9d4878b6ebe9aca41fd898917 (commit)
commit b3b1986327b9b42ac6f9442443ff103f6565a323
Author: Jérôme Guelfucci <jeromeg at xfce.org>
Date: Wed Dec 19 09:53:58 2012 +0100
Remember the settings manager window size (bug #9384).
Handy with pluggable dialogs, allows the user to get rid of most of the
scrollbars.
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 ();
}
More information about the Xfce4-commits
mailing list