[Xfce4-commits] <gigolo:master> Remember side panel position

Enrico Tröger noreply at xfce.org
Sun Oct 17 10:54:02 CEST 2010


Updating branch refs/heads/master
         to 4c51257d51869265014a200dcd110304b360d382 (commit)
       from 32eab35513a4023bdfd5792fb6f1a4af3b3c701b (commit)

commit 4c51257d51869265014a200dcd110304b360d382
Author: Enrico Tröger <enrico at xfce.org>
Date:   Sat Oct 16 17:04:31 2010 +0200

    Remember side panel position

 src/settings.c |   18 ++++++++++++++++++
 src/window.c   |   12 +++++++++++-
 2 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/src/settings.c b/src/settings.c
index e46ce3c..6282c44 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -52,6 +52,7 @@ struct _GigoloSettingsPrivate
 	gint		view_mode;
 	gboolean	show_panel;
 	guint		last_panel_page;
+	gint		panel_position;
 	gboolean	show_autoconnect_errors;
 
 	gchar		*file_manager;
@@ -87,6 +88,7 @@ enum
 	PROP_VIEW_MODE,
 	PROP_SHOW_PANEL,
 	PROP_LAST_PANEL_PAGE,
+	PROP_PANEL_POSITION,
 	PROP_SHOW_AUTOCONNECT_ERRORS
 };
 
@@ -134,6 +136,9 @@ static void gigolo_settings_set_property(GObject *object, guint prop_id, const G
 	case PROP_LAST_PANEL_PAGE:
 		priv->last_panel_page = g_value_get_uint(value);
 		break;
+	case PROP_PANEL_POSITION:
+		priv->panel_position = g_value_get_uint(value);
+		break;
 	case PROP_SHOW_AUTOCONNECT_ERRORS:
 		priv->show_autoconnect_errors = g_value_get_boolean(value);
 		break;
@@ -185,6 +190,9 @@ static void gigolo_settings_get_property(GObject *object, guint prop_id, GValue
 	case PROP_LAST_PANEL_PAGE:
 		g_value_set_uint(value, priv->last_panel_page);
 		break;
+	case PROP_PANEL_POSITION:
+		g_value_set_uint(value, priv->panel_position);
+		break;
 	case PROP_SHOW_AUTOCONNECT_ERRORS:
 		g_value_set_boolean(value, priv->show_autoconnect_errors);
 		break;
@@ -293,6 +301,14 @@ static void gigolo_settings_class_init(GigoloSettingsClass *klass)
 									0, G_MAXUINT, 0,
 									G_PARAM_READWRITE));
 	g_object_class_install_property(gobject_class,
+									PROP_PANEL_POSITION,
+									g_param_spec_uint(
+									"panel-position",
+									"panel-position",
+									"Last panel position",
+									0, G_MAXUINT, 0,
+									G_PARAM_READWRITE));
+	g_object_class_install_property(gobject_class,
 									PROP_SHOW_AUTOCONNECT_ERRORS,
 									g_param_spec_boolean(
 									"show-autoconnect-errors",
@@ -443,6 +459,7 @@ static void write_settings_config(GigoloSettings *settings)
 	g_key_file_set_integer(k, SECTION_UI, "view_mode", priv->view_mode);
 	g_key_file_set_boolean(k, SECTION_UI, "show_panel", priv->show_panel);
 	g_key_file_set_integer(k, SECTION_UI, "last_panel_page", priv->last_panel_page);
+	g_key_file_set_integer(k, SECTION_UI, "panel_position", priv->panel_position);
 	g_key_file_set_boolean(k, SECTION_UI, "show_autoconnect_errors", priv->show_autoconnect_errors);
 
 	write_data(k, priv->config_filename);
@@ -549,6 +566,7 @@ static void load_settings_read_config(GigoloSettingsPrivate *priv)
 	priv->toolbar_style = get_setting_int(k, SECTION_UI, "toolbar_style", -1);
 	priv->toolbar_orientation = get_setting_int(k, SECTION_UI, "toolbar_orientation", 0);
 	priv->view_mode = get_setting_int(k, SECTION_UI, "view_mode", 0);
+	priv->panel_position = get_setting_int(k, SECTION_UI, "panel_position", 0);
 	priv->geometry = g_key_file_get_integer_list(k, SECTION_UI, "geometry", NULL, &error);
 	if (error)
 	{
diff --git a/src/window.c b/src/window.c
index 279bb0b..d69f924 100644
--- a/src/window.c
+++ b/src/window.c
@@ -59,6 +59,7 @@ struct _GigoloWindowPrivate
 	GtkWidget		*hbox_pane;
 	GtkWidget		*hbox_view;
 
+	GtkWidget		*panel_pane;
 	GtkWidget		*browse_panel;
 	GtkWidget		*bookmark_panel;
 	GtkWidget		*notebook_panel;
@@ -132,6 +133,9 @@ static void gigolo_window_destroy(GigoloWindow *window)
 			geo[4] = 0;
 
 		gigolo_settings_set_geometry(priv->settings, geo, 5);
+
+		g_object_set(priv->settings, "panel-position",
+			gtk_paned_get_position(GTK_PANED(priv->panel_pane)), NULL);
 	}
 	g_object_set(priv->settings, "last-panel-page",
 		gtk_notebook_get_current_page(GTK_NOTEBOOK(priv->notebook_panel)), NULL);
@@ -1386,6 +1390,7 @@ static GtkWidget *gigolo_window_create_panel(GigoloWindow *window)
 static void update_side_panel(GigoloWindow *window)
 {
 	GigoloWindowPrivate *priv = GIGOLO_WINDOW_GET_PRIVATE(window);
+	guint panel_position;
 
 	if (! gigolo_backend_gvfs_is_scheme_supported("smb"))
 		gtk_widget_destroy(priv->browse_panel);
@@ -1395,6 +1400,11 @@ static void update_side_panel(GigoloWindow *window)
 
 	gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->notebook_panel),
 		gigolo_settings_get_integer(priv->settings, "last-panel-page"));
+
+	panel_position = gigolo_settings_get_integer(priv->settings, "panel-position");
+	if (panel_position <= 0)
+		panel_position = 200;
+	gtk_paned_set_position(GTK_PANED(priv->panel_pane), panel_position);
 }
 
 
@@ -1462,7 +1472,7 @@ static void gigolo_window_init(GigoloWindow *window)
 		"is-important", TRUE, NULL);
 
 	/* Panel */
-	panel_pane = gigolo_window_create_panel(window);
+	priv->panel_pane = panel_pane = gigolo_window_create_panel(window);
 
 	/* Pack the widgets altogether */
 	priv->vbox = gtk_vbox_new(FALSE, 0);



More information about the Xfce4-commits mailing list