[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