diff --git a/gnucash/gnome/gnc-plugin-page-sx-list.cpp b/gnucash/gnome/gnc-plugin-page-sx-list.cpp
index 6719c14900..30dd267872 100644
--- a/gnucash/gnome/gnc-plugin-page-sx-list.cpp
+++ b/gnucash/gnome/gnc-plugin-page-sx-list.cpp
@@ -64,6 +64,7 @@
#include "gnc-main-window.h"
#include "gnc-plugin.h"
#include "gnc-plugin-page-sx-list.h"
+#include "gnc-prefs.h"
#include "gnc-session.h"
#include "gnc-sx-instance-dense-cal-adapter.h"
#include "gnc-sx-instance-model.h"
@@ -80,6 +81,7 @@ G_GNUC_UNUSED static QofLogModule log_module = GNC_MOD_GUI_SX;
#define PLUGIN_PAGE_SX_LIST_CM_CLASS "plugin-page-sx-list"
#define STATE_SECTION "SX Transaction List"
+#define GNC_PREF_DIVIDER_POS "divider-position"
typedef struct GncPluginPageSxListPrivate
{
@@ -120,6 +122,7 @@ static void gnc_plugin_page_sx_list_cmd_new (GSimpleAction *simple, GVariant *pa
static void gnc_plugin_page_sx_list_cmd_edit (GSimpleAction *simple, GVariant *paramter, gpointer user_data);
static void gnc_plugin_page_sx_list_cmd_delete (GSimpleAction *simple, GVariant *paramter, gpointer user_data);
static void gnc_plugin_page_sx_list_cmd_refresh (GSimpleAction *simple, GVariant *paramter, gpointer user_data);
+static void gnc_plugin_page_sx_list_cmd_save_layout (GSimpleAction *simple, GVariant *paramter, gpointer user_data);
static void gnc_plugin_page_sx_list_cmd_edit_tax_options (GSimpleAction *simple, GVariant *paramter, gpointer user_data);
/* Command callbacks */
@@ -130,6 +133,7 @@ static GActionEntry gnc_plugin_page_sx_list_actions [] =
{ "SxListEditAction", gnc_plugin_page_sx_list_cmd_edit, NULL, NULL, NULL },
{ "SxListDeleteAction", gnc_plugin_page_sx_list_cmd_delete, NULL, NULL, NULL },
{ "ViewRefreshAction", gnc_plugin_page_sx_list_cmd_refresh, NULL, NULL, NULL },
+ { "ViewSaveLayoutAction", gnc_plugin_page_sx_list_cmd_save_layout, NULL, NULL, NULL },
{ "EditTaxOptionsAction", gnc_plugin_page_sx_list_cmd_edit_tax_options, NULL, NULL, NULL },
};
/** The number of actions provided by this plugin. */
@@ -500,12 +504,10 @@ gnc_plugin_page_sx_list_create_widget (GncPluginPage *plugin_page)
gtk_box_pack_start (GTK_BOX(vbox), swin, TRUE, TRUE, 5);
gtk_widget_show (swin);
- {
- // gint half_way;
- // half_way = plugin_page->notebook_page->allocation.height * 0.5;
- // fixme; get a real value:
- gtk_paned_set_position (GTK_PANED(priv->widget), 160);
- }
+ /* Set the paned position from the preferences, default 160 */
+ gtk_paned_set_position (GTK_PANED(priv->widget),
+ gnc_prefs_get_float (GNC_PREFS_GROUP_SXED,
+ GNC_PREF_DIVIDER_POS));
{
GDate end;
@@ -751,6 +753,25 @@ gnc_plugin_page_sx_list_cmd_refresh (GSimpleAction *simple,
gtk_widget_queue_draw (priv->widget);
}
+static void
+gnc_plugin_page_sx_list_cmd_save_layout (GSimpleAction *simple,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ auto plugin_page = GNC_PLUGIN_PAGE_SX_LIST(user_data);
+ GncPluginPageSxListPrivate *priv;
+ gint paned_position;
+
+ g_return_if_fail (GNC_IS_PLUGIN_PAGE_SX_LIST(plugin_page));
+
+ priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(plugin_page);
+
+ paned_position = gtk_paned_get_position (GTK_PANED(priv->widget));
+
+ gnc_prefs_set_float (GNC_PREFS_GROUP_SXED, GNC_PREF_DIVIDER_POS,
+ paned_position);
+}
+
static void
_edit_sx(gpointer data, gpointer user_data)
{
diff --git a/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
index b1ebf3d55c..0409834843 100644
--- a/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.GnuCash.dialogs.sxs.gschema.xml.in
@@ -54,6 +54,11 @@
How many days in advance to notify the user.
How many days in advance to notify the user.
+
+ 160
+ The horizontal position of the editor divider.
+ The horizontal position of the editor divider.
+
(-1,-1,-1,-1)
Last window position and size
diff --git a/gnucash/ui/gnc-plugin-page-sx-list.ui b/gnucash/ui/gnc-plugin-page-sx-list.ui
index 3ddab428b5..af845fd429 100644
--- a/gnucash/ui/gnc-plugin-page-sx-list.ui
+++ b/gnucash/ui/gnc-plugin-page-sx-list.ui
@@ -33,6 +33,12 @@