[Libreoffice-commits] core.git: sc/qa sc/source
Attila Szűcs (via logerrit)
logerrit at kemper.freedesktop.org
Wed Jul 21 09:36:30 UTC 2021
sc/qa/uitest/calc_tests9/tdf126541_GridVisibilityImportXlsx.py | 26 ++++++++++
sc/qa/uitest/data/tdf126541_GridOff.xlsx |binary
sc/qa/uitest/data/tdf126541_GridOffGlobally.ods |binary
sc/qa/unit/subsequent_export-test2.cxx | 14 +++--
sc/source/filter/oox/viewsettings.cxx | 18 ++++++
5 files changed, 51 insertions(+), 7 deletions(-)
New commits:
commit ad4e6f8c8f3d9d96586967f8e9a813bf29c3033a
Author: Attila Szűcs <szucs.attila3 at nisz.hu>
AuthorDate: Thu Jul 8 08:45:00 2021 +0200
Commit: László Németh <nemeth at numbertext.org>
CommitDate: Wed Jul 21 11:35:53 2021 +0200
tdf#142854 XLSX import: fix grid visibility in headless mode
Fix regression from commit 759103fd65f82fc131679eba0de05f2ddc7294c8
(tdf#126541 XLSX import: fix View grid lines).
Sheet based grid visibility shouldn't overwrite the
global grid visibility, except for headless mode (i.e.
for command line batch mode, see --convert-to in ./soffice
--help, otherwise we could get a regression here:
The sheet based grid visibility (bShowGrid) is stored
in view settings. Headless mode means not to export view
setting, including sheet based grid visibility.
As the old workaround, use global visibility to keep the
losing sheet visibility.
FIXME: headless mode only works correctly if all sheets
have the same grid visibility. The sheet based bShowGrid
should be moved to another location, which is supported
by the headless mode, too.
Note: now the modified tdf#126541 unit test checks the
fix for the regression of the headless mode, and the new
Python UI test checks the (now improved) fix for tdf#126541
on the desktop.
Co-authored-by: Tibor Nagy (NISZ)
Change-Id: I93551d22cc5d858dc64f93a46cd8aa202b4b2df5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118599
Tested-by: László Németh <nemeth at numbertext.org>
Reviewed-by: László Németh <nemeth at numbertext.org>
diff --git a/sc/qa/uitest/calc_tests9/tdf126541_GridVisibilityImportXlsx.py b/sc/qa/uitest/calc_tests9/tdf126541_GridVisibilityImportXlsx.py
new file mode 100644
index 000000000000..a5acb2fbf39b
--- /dev/null
+++ b/sc/qa/uitest/calc_tests9/tdf126541_GridVisibilityImportXlsx.py
@@ -0,0 +1,26 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# 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
+
+class tdf126541(UITestCase):
+
+ def test_tdf126541_GridVisibilityImportXlsx(self):
+ # Import an ods file with 'Hide' global grid visibility setting.
+ with self.ui_test.load_file(get_url_for_data_file("tdf126541_GridOffGlobally.ods")) as document:
+ controller = document.getCurrentController()
+ grid = controller.ShowGrid
+ self.assertEqual(grid, False)
+
+ # Importing xlsx file should set the global grid visibility setting to 'Show'
+ # Sheet based grid line visibility setting should not overwrite the global setting.
+ with self.ui_test.load_file(get_url_for_data_file("tdf126541_GridOff.xlsx")) as document:
+ controller = document.getCurrentController()
+ grid = controller.ShowGrid
+ self.assertEqual(grid, True)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/data/tdf126541_GridOff.xlsx b/sc/qa/uitest/data/tdf126541_GridOff.xlsx
new file mode 100644
index 000000000000..e27089b01603
Binary files /dev/null and b/sc/qa/uitest/data/tdf126541_GridOff.xlsx differ
diff --git a/sc/qa/uitest/data/tdf126541_GridOffGlobally.ods b/sc/qa/uitest/data/tdf126541_GridOffGlobally.ods
new file mode 100644
index 000000000000..389fe347d493
Binary files /dev/null and b/sc/qa/uitest/data/tdf126541_GridOffGlobally.ods differ
diff --git a/sc/qa/unit/subsequent_export-test2.cxx b/sc/qa/unit/subsequent_export-test2.cxx
index 4eab1c9bf1e9..030e4a4ae7df 100644
--- a/sc/qa/unit/subsequent_export-test2.cxx
+++ b/sc/qa/unit/subsequent_export-test2.cxx
@@ -188,7 +188,7 @@ public:
void testTdf84874();
void testTdf136721_paper_size();
void testTdf139258_rotated_image();
- void testTdf126541_SheetVisibilityImportXlsx();
+ void testTdf142854_GridVisibilityImportXlsxInHeadlessMode();
void testTdf140431();
void testCheckboxFormControlXlsxExport();
void testButtonFormControlXlsxExport();
@@ -290,7 +290,7 @@ public:
CPPUNIT_TEST(testTdf84874);
CPPUNIT_TEST(testTdf136721_paper_size);
CPPUNIT_TEST(testTdf139258_rotated_image);
- CPPUNIT_TEST(testTdf126541_SheetVisibilityImportXlsx);
+ CPPUNIT_TEST(testTdf142854_GridVisibilityImportXlsxInHeadlessMode);
CPPUNIT_TEST(testTdf140431);
CPPUNIT_TEST(testCheckboxFormControlXlsxExport);
CPPUNIT_TEST(testButtonFormControlXlsxExport);
@@ -2347,17 +2347,19 @@ ScDocShellRef ScExportTest2::loadDocAndSetupModelViewController(std::u16string_v
return xDocSh;
}
-void ScExportTest2::testTdf126541_SheetVisibilityImportXlsx()
+void ScExportTest2::testTdf142854_GridVisibilityImportXlsxInHeadlessMode()
{
+ // Tests are running in Headless mode
// Import an ods file with 'Hide' global grid visibility setting.
ScDocShellRef xShell
= loadDocAndSetupModelViewController(u"tdf126541_GridOffGlobally.", FORMAT_ODS, true);
CPPUNIT_ASSERT(!xShell->GetDocument().GetViewOptions().GetOption(VOPT_GRID));
- // Importing xlsx file should set the global grid visibility setting to 'Show'
- // Sheet based grid line visibility setting should not overwrite the global setting.
+ // To avoid regression, in headless mode leave the bug tdf126541
+ // It means Sheet based grid line visibility setting will overwrite the global setting.
+ // If there is only 1 sheet in the document, it will not result visible problems.
xShell = loadDocAndSetupModelViewController(u"tdf126541_GridOff.", FORMAT_XLSX, true);
- CPPUNIT_ASSERT(xShell->GetDocument().GetViewOptions().GetOption(VOPT_GRID));
+ CPPUNIT_ASSERT(!xShell->GetDocument().GetViewOptions().GetOption(VOPT_GRID));
}
void ScExportTest2::testTdf140431()
diff --git a/sc/source/filter/oox/viewsettings.cxx b/sc/source/filter/oox/viewsettings.cxx
index dcf07a6e97e1..926289134d16 100644
--- a/sc/source/filter/oox/viewsettings.cxx
+++ b/sc/source/filter/oox/viewsettings.cxx
@@ -41,6 +41,7 @@
#include <addressconverter.hxx>
#include <workbooksettings.hxx>
#include <worksheetbuffer.hxx>
+#include <vcl/svapp.hxx>
namespace com::sun::star::container { class XNameContainer; }
@@ -578,7 +579,22 @@ void ViewSettings::finalizeImport()
aPropMap.setProperty( PROP_GridColor, rxActiveSheetView->getGridColor( getBaseFilter() ));
aPropMap.setProperty( PROP_ShowPageBreakPreview, rxActiveSheetView->isPageBreakPreview());
aPropMap.setProperty( PROP_ShowFormulas, rxActiveSheetView->mbShowFormulas);
- aPropMap.setProperty( PROP_ShowGrid, true);
+ if (!Application::IsHeadlessModeEnabled())
+ {
+ // tdf#126541 sheet based grid visibility shouldn't overwrite the global grid visibility
+ aPropMap.setProperty(PROP_ShowGrid, true);
+ }
+ else
+ {
+ // tdf#142854 except for headless mode, otherwise we could get a regression here:
+ // The sheet based grid visibility (bShowGrid) is stored in view settings. Headless
+ // mode means not to export view setting, including sheet based grid visibility.
+ // As the old workaround, use global visibility to keep the losing sheet visibility.
+ // FIXME: this only works correctly if all sheets have the same grid visibility.
+ // The sheet based bShowGrid should be moved to another location, which is supported
+ // by the headless mode, too.
+ aPropMap.setProperty(PROP_ShowGrid, rxActiveSheetView->mbShowGrid);
+ }
aPropMap.setProperty( PROP_HasColumnRowHeaders, rxActiveSheetView->mbShowHeadings);
aPropMap.setProperty( PROP_ShowZeroValues, rxActiveSheetView->mbShowZeros);
aPropMap.setProperty( PROP_IsOutlineSymbolsSet, rxActiveSheetView->mbShowOutline);
More information about the Libreoffice-commits
mailing list