diff options
author | Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> | 2021-03-18 11:41:29 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-03-26 16:56:11 +0100 |
commit | bf71581e49130e25a5f8961902ae38e87a8248e9 (patch) | |
tree | 46a3658a4beb95bd414c9957883e8d6e98f50a88 /sw/qa | |
parent | e826753132ccd77f7bdcc096712d577f42911968 (diff) |
tdf#141079 Restore double click behavior for script fields
Change-Id: I5daa730740ea042bdae56b832f2557ec974339b3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112668
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
(cherry picked from commit 5302268de6a33716c7746aa13232746ad2f2b561)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113072
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'sw/qa')
-rw-r--r-- | sw/qa/extras/layout/data/tdf141079.odt | bin | 0 -> 8787 bytes | |||
-rw-r--r-- | sw/qa/extras/layout/layout.cxx | 30 |
2 files changed, 30 insertions, 0 deletions
diff --git a/sw/qa/extras/layout/data/tdf141079.odt b/sw/qa/extras/layout/data/tdf141079.odt Binary files differnew file mode 100644 index 000000000000..65dfcb4a296f --- /dev/null +++ b/sw/qa/extras/layout/data/tdf141079.odt diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 27eca2137324..642c6609f933 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -3728,6 +3728,36 @@ CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testImageComment) CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5), aPosition.nContent.GetIndex()); } +CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testScriptField) +{ + // Test clicking script field inside table ( tdf#141079 ) + SwDoc* pDoc = createDoc("tdf141079.odt"); + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + // Look up layout position which is the first cell in the table + SwRootFrame* pRoot = pWrtShell->GetLayout(); + CPPUNIT_ASSERT(pRoot->GetLower()->IsPageFrame()); + SwPageFrame* pPage = static_cast<SwPageFrame*>(pRoot->GetLower()); + CPPUNIT_ASSERT(pPage->GetLower()->IsBodyFrame()); + SwBodyFrame* pBody = static_cast<SwBodyFrame*>(pPage->GetLower()); + CPPUNIT_ASSERT(pBody->GetLower()->IsTextFrame()); + SwTextFrame* pTextFrame = static_cast<SwTextFrame*>(pBody->GetLower()); + CPPUNIT_ASSERT(pTextFrame->GetNext()->IsTabFrame()); + SwFrame* pTable = pTextFrame->GetNext(); + SwFrame* pRow1 = pTable->GetLower(); + CPPUNIT_ASSERT(pRow1->GetLower()->IsCellFrame()); + SwFrame* pCell1 = pRow1->GetLower(); + CPPUNIT_ASSERT(pCell1->GetLower()->IsTextFrame()); + SwTextFrame* pCellTextFrame = static_cast<SwTextFrame*>(pCell1->GetLower()); + const SwRect& rCellRect = pCell1->getFrameArea(); + Point aPoint = rCellRect.Center(); + aPoint.setX(aPoint.getX() - rCellRect.Width() / 2); + // Ask for the doc model pos of this layout point. + SwPosition aPosition(*pCellTextFrame->GetTextNodeForFirstText()); + pCellTextFrame->GetModelPositionForViewPoint(&aPosition, aPoint); + // Position was 1 without the fix from tdf#141079 + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(0), aPosition.nContent.GetIndex()); +} + CPPUNIT_TEST_FIXTURE(SwLayoutWriter, testTdf64222) { createDoc("tdf64222.docx"); |