[Libreoffice-commits] core.git: sw/qa sw/source
Bjoern Kirchhoff (via logerrit)
logerrit at kemper.freedesktop.org
Thu Jan 16 19:43:02 UTC 2020
sw/qa/extras/uiwriter/data/textfield-getanchor-gettext-in-footer.odt |binary
sw/qa/extras/uiwriter/uiwriter.cxx | 13 ++++++++
sw/source/core/unocore/unoobj2.cxx | 16 ++++++++--
3 files changed, 26 insertions(+), 3 deletions(-)
New commits:
commit 92b10e5c0825a2fe176738a1b86e2b4db0a263cb
Author: Bjoern Kirchhoff <bjoern.kirchhoff at escriba.de>
AuthorDate: Wed Jan 15 17:20:54 2020 +0100
Commit: Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Thu Jan 16 20:42:21 2020 +0100
FirstLeft and FirstMaster not handled in CreateParentXText
FirstLeft and FirstMaster were not taken into account in
CreateParentXText. Code calling getAnchor().getText().toString()
on text fields failed, when they where contained in footers/headers
of first left or first right pages. These cases are now implemented.
Change-Id: I7fbe9eb95a3fa0d90ebd8432b8a315d186da6f64
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86869
Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
diff --git a/sw/qa/extras/uiwriter/data/textfield-getanchor-gettext-in-footer.odt b/sw/qa/extras/uiwriter/data/textfield-getanchor-gettext-in-footer.odt
new file mode 100644
index 000000000000..5089ae8afb5e
Binary files /dev/null and b/sw/qa/extras/uiwriter/data/textfield-getanchor-gettext-in-footer.odt differ
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index a0d5f66549a0..8cbfc338e013 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -194,6 +194,7 @@ public:
void testShapeTextboxAutosize();
void testFdo82191();
void testCommentedWord();
+ void testTextFieldGetAnchorGetTextInFooter();
void testChineseConversionBlank();
void testChineseConversionNonChineseText();
void testChineseConversionTraditionalToSimplified();
@@ -400,6 +401,7 @@ public:
CPPUNIT_TEST(testShapeTextboxAutosize);
CPPUNIT_TEST(testFdo82191);
CPPUNIT_TEST(testCommentedWord);
+ CPPUNIT_TEST(testTextFieldGetAnchorGetTextInFooter);
CPPUNIT_TEST(testChineseConversionBlank);
CPPUNIT_TEST(testChineseConversionNonChineseText);
CPPUNIT_TEST(testChineseConversionTraditionalToSimplified);
@@ -1428,6 +1430,17 @@ void SwUiWriterTest::testCommentedWord()
CPPUNIT_ASSERT_EQUAL(OUString("word"), xField->getAnchor()->getString());
}
+void SwUiWriterTest::testTextFieldGetAnchorGetTextInFooter() {
+ createDoc("textfield-getanchor-gettext-in-footer.odt");
+
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+ uno::Reference<text::XTextContent> xField(xFields->nextElement(), uno::UNO_QUERY);
+
+ OUString value = xField->getAnchor()->getText()->getString();
+ CPPUNIT_ASSERT_EQUAL(OUString("userfield_in_footer"), value );
+}
// Chinese conversion tests
diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx
index 66588a58919d..a4708d249970 100644
--- a/sw/source/core/unocore/unoobj2.cxx
+++ b/sw/source/core/unocore/unoobj2.cxx
@@ -1111,15 +1111,25 @@ CreateParentXText(SwDoc & rDoc, const SwPosition& rPos)
for(size_t i = 0; i < nPDescCount; i++)
{
const SwPageDesc& rDesc = rDoc.GetPageDesc( i );
+
const SwFrameFormat* pFrameFormatMaster = &rDesc.GetMaster();
const SwFrameFormat* pFrameFormatLeft = &rDesc.GetLeft();
+ const SwFrameFormat* pFrameFormatFirstMaster = &rDesc.GetFirstMaster();
+ const SwFrameFormat* pFrameFormatFirstLeft = &rDesc.GetFirstLeft();
SwFrameFormat* pHeadFootFormat = nullptr;
if (!lcl_IsStartNodeInFormat(bHeader, pSttNode, pFrameFormatMaster,
- pHeadFootFormat))
+ pHeadFootFormat))
{
- lcl_IsStartNodeInFormat(bHeader, pSttNode, pFrameFormatLeft,
- pHeadFootFormat);
+ if (!lcl_IsStartNodeInFormat(bHeader, pSttNode, pFrameFormatLeft,
+ pHeadFootFormat))
+ {
+ if (!lcl_IsStartNodeInFormat(bHeader, pSttNode, pFrameFormatFirstMaster,
+ pHeadFootFormat))
+ {
+ lcl_IsStartNodeInFormat(bHeader, pSttNode, pFrameFormatFirstLeft, pHeadFootFormat);
+ }
+ }
}
if (pHeadFootFormat)
More information about the Libreoffice-commits
mailing list