Updating branch refs/heads/master to b3b1986327b9b42ac6f9442443ff103f6565a323 (commit) from 4346168db9aba1a9d4878b6ebe9aca41fd898917 (commit)
commit b3b1986327b9b42ac6f9442443ff103f6565a323 Author: Jérôme Guelfucci <jero...@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 (); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits