[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.0' - sc/Module_sc.mk sc/qa sc/source

Jan Holesovsky kendy at collabora.com
Thu Mar 10 19:06:11 UTC 2016


 sc/Module_sc.mk                               |    1 
 sc/qa/unit/tiledrendering/data/sort-range.ods |binary
 sc/qa/unit/tiledrendering/tiledrendering.cxx  |  191 ++++++++++++++++++++++++++
 sc/source/ui/view/cellsh2.cxx                 |    7 
 4 files changed, 197 insertions(+), 2 deletions(-)

New commits:
commit 80bc864ef17c51b4986c1e9ab7e472f9b6d23187
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Thu Mar 10 18:50:54 2016 +0100

    sc lok: Don't interact with the user during .uno:SortAscending or Descending.
    
    Change-Id: Ib3679413ba59e86438dac83abfa9b624e291e5a9

diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index fc49303..11b5520 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -49,6 +49,7 @@ $(eval $(call gb_Module_add_check_targets,sc,\
 		CppunitTest_sc_ucalc) \
     CppunitTest_sc_filters_test \
     CppunitTest_sc_rangelst_test \
+    CppunitTest_sc_tiledrendering \
 ))
 
 $(eval $(call gb_Module_add_slowcheck_targets,sc, \
diff --git a/sc/qa/unit/tiledrendering/data/sort-range.ods b/sc/qa/unit/tiledrendering/data/sort-range.ods
new file mode 100644
index 0000000..cd9e4e4
Binary files /dev/null and b/sc/qa/unit/tiledrendering/data/sort-range.ods differ
diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx
new file mode 100644
index 0000000..62c11c6
--- /dev/null
+++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx
@@ -0,0 +1,191 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * 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/.
+ */
+
+#include <test/bootstrapfixture.hxx>
+#include <unotest/macros_test.hxx>
+#include <test/xmltesttools.hxx>
+#include <boost/property_tree/json_parser.hpp>
+
+#define LOK_USE_UNSTABLE_API
+#include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <com/sun/star/frame/Desktop.hpp>
+#include <comphelper/dispatchcommand.hxx>
+#include <comphelper/processfactory.hxx>
+#include <comphelper/propertysequence.hxx>
+#include <comphelper/string.hxx>
+#include <editeng/editids.hrc>
+#include <editeng/editview.hxx>
+#include <editeng/outliner.hxx>
+#include <osl/conditn.hxx>
+#include <sfx2/dispatch.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <svl/srchitem.hxx>
+
+#include <comphelper/lok.hxx>
+
+#include <document.hxx>
+#include <docuno.hxx>
+
+using namespace css;
+
+#if !defined(WNT) && !defined(MACOSX)
+static const char* DATA_DIRECTORY = "/sc/qa/unit/tiledrendering/data/";
+#endif
+
+class ScTiledRenderingTest : public test::BootstrapFixture, public unotest::MacrosTest, public XmlTestTools
+{
+public:
+    ScTiledRenderingTest();
+    virtual void setUp() SAL_OVERRIDE;
+    virtual void tearDown() SAL_OVERRIDE;
+
+#if !defined(WNT) && !defined(MACOSX)
+    void testSortAscendingDescending();
+#endif
+
+    CPPUNIT_TEST_SUITE(ScTiledRenderingTest);
+#if !defined(WNT) && !defined(MACOSX)
+    CPPUNIT_TEST(testSortAscendingDescending);
+#endif
+    CPPUNIT_TEST_SUITE_END();
+
+private:
+#if !defined(WNT) && !defined(MACOSX)
+    ScModelObj* createDoc(const char* pName);
+    static void callback(int nType, const char* pPayload, void* pData);
+    void callbackImpl(int nType, const char* pPayload);
+#endif
+
+    uno::Reference<lang::XComponent> mxComponent;
+#if !defined(WNT) && !defined(MACOSX)
+    // TODO various test-related members - when needed
+#endif
+};
+
+ScTiledRenderingTest::ScTiledRenderingTest()
+#if !defined(WNT) && !defined(MACOSX)
+    // TODO various test-related members - when needed
+#endif
+{
+}
+
+void ScTiledRenderingTest::setUp()
+{
+    test::BootstrapFixture::setUp();
+
+    mxDesktop.set(css::frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory())));
+}
+
+void ScTiledRenderingTest::tearDown()
+{
+    if (mxComponent.is())
+        mxComponent->dispose();
+
+    test::BootstrapFixture::tearDown();
+}
+
+#if !defined(WNT) && !defined(MACOSX)
+ScModelObj* ScTiledRenderingTest::createDoc(const char* pName)
+{
+    if (mxComponent.is())
+        mxComponent->dispose();
+    mxComponent = loadFromDesktop(getURLFromSrc(DATA_DIRECTORY) + OUString::createFromAscii(pName), "com.sun.star.sheet.SpreadsheetDocument");
+    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    CPPUNIT_ASSERT(pModelObj);
+    pModelObj->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>());
+    return pModelObj;
+}
+
+void ScTiledRenderingTest::callback(int nType, const char* pPayload, void* pData)
+{
+    static_cast<ScTiledRenderingTest*>(pData)->callbackImpl(nType, pPayload);
+}
+
+/* TODO when needed...
+static std::vector<OUString> lcl_convertSeparated(const OUString& rString, sal_Unicode nSeparator)
+{
+    std::vector<OUString> aRet;
+
+    sal_Int32 nIndex = 0;
+    do
+    {
+        OUString aToken = rString.getToken(0, nSeparator, nIndex);
+        aToken = aToken.trim();
+        if (!aToken.isEmpty())
+            aRet.push_back(aToken);
+    }
+    while (nIndex >= 0);
+
+    return aRet;
+}
+
+static void lcl_convertRectangle(const OUString& rString, Rectangle& rRectangle)
+{
+    uno::Sequence<OUString> aSeq = comphelper::string::convertCommaSeparated(rString);
+    CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(4), aSeq.getLength());
+    rRectangle.setX(aSeq[0].toInt32());
+    rRectangle.setY(aSeq[1].toInt32());
+    rRectangle.setWidth(aSeq[2].toInt32());
+    rRectangle.setHeight(aSeq[3].toInt32());
+}
+*/
+
+void ScTiledRenderingTest::callbackImpl(int /*nType*/, const char* /*pPayload*/)
+{
+    // TODO when needed...
+    //switch (nType)
+    //{
+    //}
+}
+
+void ScTiledRenderingTest::testSortAscendingDescending()
+{
+    comphelper::LibreOfficeKit::setActive();
+    ScModelObj* pModelObj = createDoc("sort-range.ods");
+    ScDocument* pDoc = pModelObj->GetDocument();
+
+    // select the values in the first column
+    pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN, 551, 129, 1);
+    pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEMOVE, 820, 1336, 1);
+    pModelObj->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP, 820, 1359, 1);
+
+    // sort ascending
+    uno::Sequence<beans::PropertyValue> aArgs;
+    comphelper::dispatchCommand(".uno:SortAscending", aArgs);
+
+    // check it's sorted
+    for (SCROW r = 0; r < 6; ++r)
+    {
+        CPPUNIT_ASSERT_EQUAL(double(r + 1), pDoc->GetValue(ScAddress(0, r, 0)));
+    }
+
+    // sort descending
+    comphelper::dispatchCommand(".uno:SortDescending", aArgs);
+
+    // check it's sorted
+    for (SCROW r = 0; r < 6; ++r)
+    {
+        CPPUNIT_ASSERT_EQUAL(double(6 - r), pDoc->GetValue(ScAddress(0, r, 0)));
+    }
+
+    // nothing else was sorted
+    CPPUNIT_ASSERT_EQUAL(double(1), pDoc->GetValue(ScAddress(1, 0, 0)));
+    CPPUNIT_ASSERT_EQUAL(double(3), pDoc->GetValue(ScAddress(1, 1, 0)));
+    CPPUNIT_ASSERT_EQUAL(double(2), pDoc->GetValue(ScAddress(1, 2, 0)));
+
+    comphelper::LibreOfficeKit::setActive(false);
+}
+
+#endif
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ScTiledRenderingTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index 88ca0ad..6de5a55 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -20,6 +20,7 @@
 #include <config_features.h>
 
 #include "scitems.hxx"
+#include <comphelper/lok.hxx>
 #include <sfx2/viewfrm.hxx>
 #include <sfx2/app.hxx>
 #include <sfx2/request.hxx>
@@ -164,8 +165,10 @@ static bool lcl_GetSortParam( const ScViewData* pData, ScSortParam& rSortParam )
     aExternalRange.aEnd.SetRow( nEndRow );
     aExternalRange.aEnd.SetCol( nEndCol );
 
-    if(( rSortParam.nCol1 == rSortParam.nCol2 && aExternalRange.aStart.Col() != aExternalRange.aEnd.Col() ) ||
-        ( rSortParam.nRow1 == rSortParam.nRow2 && aExternalRange.aStart.Row() != aExternalRange.aEnd.Row() ) )
+    // with LibreOfficeKit, don't try to interact with the user
+    if (!comphelper::LibreOfficeKit::isActive() &&
+        ((rSortParam.nCol1 == rSortParam.nCol2 && aExternalRange.aStart.Col() != aExternalRange.aEnd.Col()) ||
+         (rSortParam.nRow1 == rSortParam.nRow2 && aExternalRange.aStart.Row() != aExternalRange.aEnd.Row())))
     {
         sal_uInt16 nFmt = SCA_VALID;
 


More information about the Libreoffice-commits mailing list