diff --git a/src/client/geary-config.vala b/src/client/geary-config.vala index 9a0503c5..be3a3b36 100644 --- a/src/client/geary-config.vala +++ b/src/client/geary-config.vala @@ -26,6 +26,18 @@ public class Configuration { set { settings.set_boolean(WINDOW_MAXIMIZE_NAME, value); } } + private const string FOLDER_LIST_PANE_POSITION_NAME = "folder-list-pane-position"; + public int folder_list_pane_position { + get { return settings.get_int(FOLDER_LIST_PANE_POSITION_NAME); } + set { settings.set_int(FOLDER_LIST_PANE_POSITION_NAME, value); } + } + + private const string MESSAGES_PANE_POSITION_NAME = "messages-pane-position"; + public int messages_pane_position { + get { return settings.get_int(MESSAGES_PANE_POSITION_NAME); } + set { settings.set_int(MESSAGES_PANE_POSITION_NAME, value); } + } + // Creates a configuration object. // is_installed: set to true if installed, else false. // schema_dir: MUST be set if not installed. Directory where GSettings schema is located. diff --git a/src/client/org.yorba.geary.gschema.xml b/src/client/org.yorba.geary.gschema.xml index b0be0cc9..33d57f08 100644 --- a/src/client/org.yorba.geary.gschema.xml +++ b/src/client/org.yorba.geary.gschema.xml @@ -20,6 +20,18 @@ The last recorded height of the application window. + + -1 + position of folder list pane + Position of the folder list HPaned grabber. -1 means unset. + + + + -1 + position of message list pane + Position of the message list HPaned grabber. -1 means unset. + + diff --git a/src/client/ui/main-window.vala b/src/client/ui/main-window.vala index aa068eea..45f7b9a8 100644 --- a/src/client/ui/main-window.vala +++ b/src/client/ui/main-window.vala @@ -33,6 +33,8 @@ public class MainWindow : Gtk.Window { private int window_width; private int window_height; private bool window_maximized; + private Gtk.HPaned folder_paned = new Gtk.HPaned(); + private Gtk.HPaned messages_paned = new Gtk.HPaned(); public MainWindow() { title = GearyApplication.NAME; @@ -107,6 +109,9 @@ public class MainWindow : Gtk.Window { if (GearyApplication.instance.config.window_maximize) maximize(); + folder_paned.set_position(GearyApplication.instance.config.folder_list_pane_position); + messages_paned.set_position(GearyApplication.instance.config.messages_pane_position); + base.show_all(); } @@ -116,6 +121,10 @@ public class MainWindow : Gtk.Window { GearyApplication.instance.config.window_height = window_height; GearyApplication.instance.config.window_maximize = window_maximized; + // Save pane positions. + GearyApplication.instance.config.folder_list_pane_position = folder_paned.get_position(); + GearyApplication.instance.config.messages_pane_position = messages_paned.get_position(); + GearyApplication.instance.exit(); base.destroy(); @@ -166,9 +175,6 @@ public class MainWindow : Gtk.Window { // main menu main_layout.pack_start(ui.get_widget("/MenuBar"), false, false, 0); - Gtk.HPaned folder_paned = new Gtk.HPaned(); - Gtk.HPaned messages_paned = new Gtk.HPaned(); - // folder list Gtk.ScrolledWindow folder_list_scrolled = new Gtk.ScrolledWindow(null, null); folder_list_scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC);