Save window pane positions

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Robert C. Helling 2013-03-02 11:30:10 +01:00 committed by Dirk Hohndel
parent 3443abea72
commit 0e3c6f7517

View file

@ -323,6 +323,16 @@ static void file_open(GtkWidget *w, gpointer data)
gtk_widget_destroy(dialog); gtk_widget_destroy(dialog);
} }
void save_pane_position()
{
gint vpane_position = gtk_paned_get_position(GTK_PANED(vpane));
gint hpane_position = gtk_paned_get_position(GTK_PANED(hpane));
if (vpane_position && vpane_position != 65535)
subsurface_set_conf_int("vpane_position", vpane_position);
if (hpane_position && hpane_position != 65535)
subsurface_set_conf_int("hpane_position", hpane_position);
}
void save_window_geometry(void) void save_window_geometry(void)
{ {
/* GDK_GRAVITY_NORTH_WEST assumed ( it is the default ) */ /* GDK_GRAVITY_NORTH_WEST assumed ( it is the default ) */
@ -330,9 +340,7 @@ void save_window_geometry(void)
gtk_window_get_size(GTK_WINDOW (main_window), &window_width, &window_height); gtk_window_get_size(GTK_WINDOW (main_window), &window_width, &window_height);
subsurface_set_conf_int("window_width", window_width); subsurface_set_conf_int("window_width", window_width);
subsurface_set_conf_int("window_height", window_height); subsurface_set_conf_int("window_height", window_height);
subsurface_set_conf_int("vpane_position", gtk_paned_get_position(GTK_PANED(vpane))); save_pane_position();
subsurface_set_conf_int("hpane_position", gtk_paned_get_position(GTK_PANED(hpane)));
subsurface_flush_conf(); subsurface_flush_conf();
} }
@ -349,7 +357,6 @@ void restore_window_geometry(void)
gtk_paned_set_position(GTK_PANED(vpane), subsurface_get_conf_int("vpane_position")); gtk_paned_set_position(GTK_PANED(vpane), subsurface_get_conf_int("vpane_position"));
gtk_paned_set_position(GTK_PANED(hpane), subsurface_get_conf_int("hpane_position")); gtk_paned_set_position(GTK_PANED(hpane), subsurface_get_conf_int("hpane_position"));
gtk_window_resize (GTK_WINDOW (main_window), window_width, window_height); gtk_window_resize (GTK_WINDOW (main_window), window_width, window_height);
} }
gboolean on_delete(GtkWidget* w, gpointer data) gboolean on_delete(GtkWidget* w, gpointer data)
@ -1163,17 +1170,20 @@ static void show_user_manual(GtkWidget *w, gpointer data)
static void view_list(GtkWidget *w, gpointer data) static void view_list(GtkWidget *w, gpointer data)
{ {
gtk_paned_set_position(GTK_PANED(vpane), 0); save_pane_position();
gtk_paned_set_position(GTK_PANED(vpane), 0);
} }
static void view_profile(GtkWidget *w, gpointer data) static void view_profile(GtkWidget *w, gpointer data)
{ {
save_pane_position();
gtk_paned_set_position(GTK_PANED(hpane), 0); gtk_paned_set_position(GTK_PANED(hpane), 0);
gtk_paned_set_position(GTK_PANED(vpane), 65535); gtk_paned_set_position(GTK_PANED(vpane), 65535);
} }
static void view_info(GtkWidget *w, gpointer data) static void view_info(GtkWidget *w, gpointer data)
{ {
save_pane_position();
gtk_paned_set_position(GTK_PANED(vpane), 65535); gtk_paned_set_position(GTK_PANED(vpane), 65535);
gtk_paned_set_position(GTK_PANED(hpane), 65535); gtk_paned_set_position(GTK_PANED(hpane), 65535);
} }
@ -1188,7 +1198,7 @@ static void view_three(GtkWidget *w, gpointer data)
gtk_widget_get_allocation(hpane, &alloc); gtk_widget_get_allocation(hpane, &alloc);
if(hpane_position && hpane_position != 65535) if (hpane_position && hpane_position != 65535)
gtk_paned_set_position(GTK_PANED(hpane), hpane_position); gtk_paned_set_position(GTK_PANED(hpane), hpane_position);
else else
gtk_paned_set_position(GTK_PANED(hpane), alloc.width/2); gtk_paned_set_position(GTK_PANED(hpane), alloc.width/2);
@ -1196,7 +1206,7 @@ static void view_three(GtkWidget *w, gpointer data)
gtk_widget_get_allocation(vpane, &alloc); gtk_widget_get_allocation(vpane, &alloc);
gtk_widget_size_request(notebook, &requisition); gtk_widget_size_request(notebook, &requisition);
/* pick the requested size for the notebook plus 6 pixels for frame */ /* pick the requested size for the notebook plus 6 pixels for frame */
if(vpane_position && vpane_position != 65535) if (vpane_position && vpane_position != 65535)
gtk_paned_set_position(GTK_PANED(vpane), vpane_position); gtk_paned_set_position(GTK_PANED(vpane), vpane_position);
else else
gtk_paned_set_position(GTK_PANED(vpane), requisition.height + 6); gtk_paned_set_position(GTK_PANED(vpane), requisition.height + 6);