save_settings_paned (ModestConf *conf, GtkPaned *paned, const gchar *name)
{
gchar *key;
- int pos;
+ int pos, percent;
/* Don't save the paned position if it's not visible,
* because it could not be correct: */
if (GTK_WIDGET_VISIBLE (GTK_WIDGET (paned)) && GTK_WIDGET_REALIZED (GTK_WIDGET (paned))) {
pos = gtk_paned_get_position (paned);
-
+ percent = pos * 100 / GTK_WIDGET (paned)->allocation.width;
+
key = _modest_widget_memory_get_keyname (name, MODEST_WIDGET_MEMORY_PARAM_POS);
- modest_conf_set_int (conf, key, pos, NULL);
+ modest_conf_set_int (conf, key, percent, NULL);
g_free (key);
}
restore_settings_paned (ModestConf *conf, GtkPaned *paned, const gchar *name)
{
gchar *key;
- int pos;
+ int percent, pos;
key = _modest_widget_memory_get_keyname (name, MODEST_WIDGET_MEMORY_PARAM_POS);
if (modest_conf_key_exists (conf, key, NULL)) {
- pos = modest_conf_get_int (conf, key, NULL);
-
- /* TODO: Remove this hack so that paned positions can really be used.
- * The paned position is incorrectly saved somehow before its even visible,
- * when we show the main window only some time after creating it,
- * so this prevents a wrong value from being used. */
- const gint max = (GTK_WIDGET(paned)->allocation.width)/3;
- if (pos > max)
- pos = max;
+ percent = modest_conf_get_int (conf, key, NULL);
-
+ pos = GTK_WIDGET (paned)->allocation.width * percent /100;
gtk_paned_set_position (paned, pos);
} else {
/* The initial position must follow the 30/70 rule */
-1);
/* Update the default account column */
- if (!strcmp (name, default_account_name))
+ if ((default_account_name != NULL) && (!strcmp (name, default_account_name)))
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, TRUE, -1);
else