[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - sc/qa sc/source

Attila Szűcs (via logerrit) logerrit at kemper.freedesktop.org
Wed Jul 21 21:51:40 UTC 2021


 sc/qa/uitest/calc_tests9/tdf126541_GridVisibilityImportXlsx.py |   30 ++++++++++
 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, 55 insertions(+), 7 deletions(-)

New commits:
commit c3dd27d24dec0c581ed731acf8ff3504a4068b03
Author:     Attila Szűcs <szucs.attila3 at nisz.hu>
AuthorDate: Thu Jul 8 08:45:00 2021 +0200
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Wed Jul 21 23:50:46 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>
    Signed-off-by: Xisco Fauli <xiscofauli at libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119314
    Tested-by: Jenkins

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..0e916ad38ea1
--- /dev/null
+++ b/sc/qa/uitest/calc_tests9/tdf126541_GridVisibilityImportXlsx.py
@@ -0,0 +1,30 @@
+# -*- 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.
+        self.ui_test.load_file(get_url_for_data_file("tdf126541_GridOffGlobally.ods"))
+        document = self.ui_test.get_component()
+        controller = document.getCurrentController()
+        grid = controller.ShowGrid
+        self.assertEqual(grid, False)
+        self.ui_test.close_doc()
+
+        # Importing xlsx file should set the global grid visibility setting to 'Show'
+        # Sheet based grid line visibility setting should not overwrite the global setting.
+        self.ui_test.load_file(get_url_for_data_file("tdf126541_GridOff.xlsx"))
+        document = self.ui_test.get_component()
+        controller = document.getCurrentController()
+        grid = controller.ShowGrid
+        self.assertEqual(grid, True)
+        self.ui_test.close_doc()
+
+# 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 2b1dda267fed..6cc0ece437d6 100644
--- a/sc/qa/unit/subsequent_export-test2.cxx
+++ b/sc/qa/unit/subsequent_export-test2.cxx
@@ -187,7 +187,7 @@ public:
     void testTdf84874();
     void testTdf136721_paper_size();
     void testTdf139258_rotated_image();
-    void testTdf126541_SheetVisibilityImportXlsx();
+    void testTdf142854_GridVisibilityImportXlsxInHeadlessMode();
     void testTdf140431();
     void testTdf142929_filterLessThanXLSX();
 
@@ -285,7 +285,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(testTdf142929_filterLessThanXLSX);
 
@@ -2308,17 +2308,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