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

Samuel Mehrbrodt (via logerrit) logerrit at kemper.freedesktop.org
Fri Mar 26 15:56:46 UTC 2021


 sw/qa/extras/layout/data/tdf141079.odt |binary
 sw/qa/extras/layout/layout.cxx         |   30 ++++++++++++++++++++++++++++++
 sw/source/core/text/itrcrsr.cxx        |    8 ++++++--
 3 files changed, 36 insertions(+), 2 deletions(-)

New commits:
commit bf71581e49130e25a5f8961902ae38e87a8248e9
Author:     Samuel Mehrbrodt <samuel.mehrbrodt at allotropia.de>
AuthorDate: Thu Mar 18 11:41:29 2021 +0100
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Fri Mar 26 16:56:11 2021 +0100

    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 at allotropia.de>
    (cherry picked from commit 5302268de6a33716c7746aa13232746ad2f2b561)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113072
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>

diff --git a/sw/qa/extras/layout/data/tdf141079.odt b/sw/qa/extras/layout/data/tdf141079.odt
new file mode 100644
index 000000000000..65dfcb4a296f
Binary files /dev/null and b/sw/qa/extras/layout/data/tdf141079.odt differ
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");
diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx
index cb830f327412..eacf4e0ac981 100644
--- a/sw/source/core/text/itrcrsr.cxx
+++ b/sw/source/core/text/itrcrsr.cxx
@@ -1542,8 +1542,12 @@ TextFrameIndex SwTextCursor::GetModelPositionForViewPoint( SwPosition *pPos, con
             {
                 if (pPor->IsPostItsPortion())
                 {
-                    // Offset would be nCurrStart + nLength below, do the same for post-it portions.
-                    nCurrStart += pPor->GetLen();
+                    SwPostItsPortion* pPostItsPortion = dynamic_cast<SwPostItsPortion*>(pPor);
+                    if (!pPostItsPortion->IsScript()) // tdf#141079
+                    {
+                        // Offset would be nCurrStart + nLength below, do the same for post-it portions.
+                        nCurrStart += pPor->GetLen();
+                    }
                 }
                 return nCurrStart;
             }


More information about the Libreoffice-commits mailing list