tdf#131759 - Remember last used option in split table dialog
Change-Id: Id7aaa300babff988f0244d822860d455d57c86c0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151160
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
diff --git a/sw/qa/uitest/table/splitTable.py b/sw/qa/uitest/table/splitTable.py
index 2bfc4ca..0292c45 100644
--- a/sw/qa/uitest/table/splitTable.py
+++ b/sw/qa/uitest/table/splitTable.py
@@ -7,7 +7,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
from uitest.framework import UITestCase
from uitest.uihelper.common import get_url_for_data_file
from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
#Writer Split Table
@@ -64,4 +64,24 @@ class splitTable(UITestCase):
self.xUITest.executeCommand(".uno:Undo")
self.assertEqual(writer_doc.TextTables.getCount(), 1)
def test_tdf115572_remember_split_table_option(self):
with self.ui_test.load_file(get_url_for_data_file("splitTable.odt")) as writer_doc:
# Go to second row
self.xUITest.executeCommand(".uno:GoDown")
self.xUITest.executeCommand(".uno:GoDown")
# Split table using a non default option
with self.ui_test.execute_dialog_through_command(".uno:SplitTable") as xDialog:
xRadioNoHeading = xDialog.getChild("noheading")
xRadioNoHeading.executeAction("CLICK", tuple())
# Reopen split table dialog and check preselection
self.xUITest.executeCommand(".uno:GoDown")
with self.ui_test.execute_dialog_through_command(".uno:SplitTable") as xDialog:
xRadioNoHeading = xDialog.getChild("noheading")
# Without the fix in place, this test would have failed with
# AssertionError: 'true' != 'false'
# i.e. the last used option in the split table dialog was not remembered
self.assertEqual("true", get_state_as_dict(xRadioNoHeading)["Checked"])
# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sw/source/ui/table/splittbl.cxx b/sw/source/ui/table/splittbl.cxx
index bc33390..5a7ef0a 100644
--- a/sw/source/ui/table/splittbl.cxx
+++ b/sw/source/ui/table/splittbl.cxx
@@ -21,6 +21,9 @@
#include <splittbl.hxx>
#include <tblenum.hxx>
SplitTable_HeadlineOption SwSplitTableDlg::m_eRememberedSplitOption
= SplitTable_HeadlineOption::ContentCopy;
SwSplitTableDlg::SwSplitTableDlg(weld::Window* pParent, SwWrtShell& rSh)
: GenericDialogController(pParent, "modules/swriter/ui/splittable.ui", "SplitTableDialog")
, m_xBoxAttrCopyWithParaRB(m_xBuilder->weld_radio_button("customheadingapplystyle"))
@@ -29,6 +32,25 @@ SwSplitTableDlg::SwSplitTableDlg(weld::Window* pParent, SwWrtShell& rSh)
, m_rShell(rSh)
, m_nSplit(SplitTable_HeadlineOption::ContentCopy)
{
// tdf#131759 - remember last used option in split table dialog
m_nSplit = m_eRememberedSplitOption;
switch (m_nSplit)
{
case SplitTable_HeadlineOption::BoxAttrAllCopy:
m_xBoxAttrCopyWithParaRB->set_active(true);
break;
case SplitTable_HeadlineOption::BoxAttrCopy:
m_xBoxAttrCopyNoParaRB->set_active(true);
break;
case SplitTable_HeadlineOption::BorderCopy:
m_xBorderCopyRB->set_active(true);
break;
case SplitTable_HeadlineOption::NONE:
case SplitTable_HeadlineOption::ContentCopy:
default:
// Use the default value in case of an invalid option
m_nSplit = SplitTable_HeadlineOption::ContentCopy;
}
}
void SwSplitTableDlg::Apply()
@@ -41,6 +63,9 @@ void SwSplitTableDlg::Apply()
else if (m_xBorderCopyRB->get_active())
m_nSplit = SplitTable_HeadlineOption::BorderCopy;
// tdf#131759 - remember last used option in split table dialog
m_eRememberedSplitOption = m_nSplit;
m_rShell.SplitTable(m_nSplit);
}
diff --git a/sw/source/uibase/inc/splittbl.hxx b/sw/source/uibase/inc/splittbl.hxx
index 9eaef2a..c579eea 100644
--- a/sw/source/uibase/inc/splittbl.hxx
+++ b/sw/source/uibase/inc/splittbl.hxx
@@ -21,6 +21,7 @@
#include <vcl/weld.hxx>
#include <tblenum.hxx>
#include <unotools/viewoptions.hxx>
class SwWrtShell;
@@ -34,6 +35,9 @@ private:
SwWrtShell& m_rShell;
SplitTable_HeadlineOption m_nSplit;
// tdf#131759 - remember last used option in split table dialog
static SplitTable_HeadlineOption m_eRememberedSplitOption;
void Apply();
public:
@@ -56,6 +60,10 @@ public:
nSplit = SplitTable_HeadlineOption::BoxAttrCopy;
else if (m_xBorderCopyRB->get_active())
nSplit = SplitTable_HeadlineOption::BorderCopy;
// tdf#131759 - remember last used option in split table dialog
m_eRememberedSplitOption = nSplit;
return nSplit;
}
};