From f50e11c55e05506bba2c1a895f13d1a90ac54505 Mon Sep 17 00:00:00 2001 From: Dennis Francis Date: Tue, 19 Jan 2021 19:39:39 +0530 Subject: unit test for row-height invalidations on pasting ... into a cell whose line-break attribute is set. Change-Id: I82d021a262d6af48d5eaef5fefa0fe9098758a86 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109661 Tested-by: Jenkins CollaboraOffice Reviewed-by: Jan Holesovsky --- sc/qa/unit/tiledrendering/tiledrendering.cxx | 57 ++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'sc') diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx index b6db96dc5473..6eac84624142 100644 --- a/sc/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx @@ -43,6 +43,7 @@ #include #include +#include #include #include #include @@ -113,6 +114,7 @@ public: void testFunctionDlg(); void testSpellOnlineParameter(); void testSpellOnlineRenderParameter(); + void testPasteIntoWrapTextCell(); CPPUNIT_TEST_SUITE(ScTiledRenderingTest); CPPUNIT_TEST(testRowColumnHeaders); @@ -160,6 +162,7 @@ public: CPPUNIT_TEST(testFunctionDlg); CPPUNIT_TEST(testSpellOnlineParameter); CPPUNIT_TEST(testSpellOnlineRenderParameter); + CPPUNIT_TEST(testPasteIntoWrapTextCell); CPPUNIT_TEST_SUITE_END(); private: @@ -473,6 +476,7 @@ public: OString m_sCellFormula; boost::property_tree::ptree m_aCommentCallbackResult; OString m_sInvalidateHeader; + OString m_sInvalidateSheetGeometry; ViewCallback(bool bDeleteListenerOnDestruct=true) : m_bOwnCursorInvalidated(false), @@ -582,6 +586,11 @@ public: { m_sInvalidateHeader = pPayload; } + break; + case LOK_CALLBACK_INVALIDATE_SHEET_GEOMETRY: + { + m_sInvalidateSheetGeometry = pPayload; + } } } }; @@ -2362,6 +2371,54 @@ void ScTiledRenderingTest::testDeleteCellMultilineContent() SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr); } +void ScTiledRenderingTest::testPasteIntoWrapTextCell() +{ + comphelper::LibreOfficeKit::setActive(); + comphelper::LibreOfficeKit::setCompatFlag( + comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs); + + ScModelObj* pModelObj = createDoc("empty.ods"); + CPPUNIT_ASSERT(pModelObj); + ScDocument* pDoc = pModelObj->GetDocument(); + + // Set Wrap text in A3 + pDoc->ApplyAttr(0, 2, 0, SfxBoolItem(ATTR_LINEBREAK, true)); + const SfxBoolItem* pItem = static_cast(pDoc->GetAttr(0, 2, 0, ATTR_LINEBREAK)); + CPPUNIT_ASSERT(pItem->GetValue()); + + ScViewData* pViewData = ScDocShell::GetViewData(); + CPPUNIT_ASSERT(pViewData); + + ViewCallback aView; + SfxViewShell::Current()->registerLibreOfficeKitViewCallback(&ViewCallback::callback, &aView); + CPPUNIT_ASSERT(!lcl_hasEditView(*pViewData)); + + ScTabViewShell* pView = dynamic_cast(SfxViewShell::Current()); + CPPUNIT_ASSERT(pView); + + // Go to A2 and paste. + pView->SetCursor(0, 1); + Scheduler::ProcessEventsToIdle(); + aView.m_sInvalidateSheetGeometry = ""; + pView->GetViewFrame()->GetBindings().Execute(SID_PASTE); + Scheduler::ProcessEventsToIdle(); + + // No SG invalidations + CPPUNIT_ASSERT_EQUAL(OString(""), aView.m_sInvalidateSheetGeometry); + + // Go to A3 and paste. + pView->SetCursor(0, 2); + Scheduler::ProcessEventsToIdle(); + aView.m_sInvalidateSheetGeometry = ""; + pView->GetViewFrame()->GetBindings().Execute(SID_PASTE); + Scheduler::ProcessEventsToIdle(); + + // SG invalidations for rows + CPPUNIT_ASSERT_EQUAL(OString("rows"), aView.m_sInvalidateSheetGeometry); + + SfxViewShell::Current()->registerLibreOfficeKitViewCallback(nullptr, nullptr); +} + } CPPUNIT_TEST_SUITE_REGISTRATION(ScTiledRenderingTest); -- cgit