[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - sw/qa sw/source
Michael Stahl (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jul 2 15:49:42 UTC 2021
sw/qa/extras/unowriter/unowriter.cxx | 3 +++
sw/source/core/unocore/unoobj2.cxx | 23 +++++++++++++++++------
2 files changed, 20 insertions(+), 6 deletions(-)
New commits:
commit 9fb46f1f4de77c492b49913407a28036a1a8b6a0
Author: Michael Stahl <michael.stahl at allotropia.de>
AuthorDate: Fri Jul 2 13:16:36 2021 +0200
Commit: Michael Stahl <michael.stahl at allotropia.de>
CommitDate: Fri Jul 2 17:49:06 2021 +0200
sw: handle RANGE_IS_SECTION in SwXTextRange::getText()
It always returned null.
This was missing in 6471d88cb8b61741c51499ac579dd16cb5b67ebf
Change-Id: Ibf34c24fdbbbc2f65c6948f58d12f257ccf120ae
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118286
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl at allotropia.de>
(cherry picked from commit ba7a607f79fb0288b9f5a318d84a52936f251b65)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118294
diff --git a/sw/qa/extras/unowriter/unowriter.cxx b/sw/qa/extras/unowriter/unowriter.cxx
index dbee7d40a685..e22f71c27ada 100644
--- a/sw/qa/extras/unowriter/unowriter.cxx
+++ b/sw/qa/extras/unowriter/unowriter.cxx
@@ -408,6 +408,7 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testSectionAnchorCopyTableAtStart)
xTTS->getTransferableForTextRange(xAnchor));
// check this doesn't throw
+ CPPUNIT_ASSERT(xAnchor->getText().is());
CPPUNIT_ASSERT(xAnchor->getStart().is());
CPPUNIT_ASSERT(xAnchor->getEnd().is());
@@ -467,6 +468,7 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testSectionAnchorCopyTableAtEnd)
xTTS->getTransferableForTextRange(xAnchor));
// check this doesn't throw
+ CPPUNIT_ASSERT(xAnchor->getText().is());
CPPUNIT_ASSERT(xAnchor->getStart().is());
CPPUNIT_ASSERT(xAnchor->getEnd().is());
@@ -528,6 +530,7 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testSectionAnchorCopyTable)
xTTS->getTransferableForTextRange(xAnchor));
// check this doesn't throw
+ CPPUNIT_ASSERT(xAnchor->getText().is());
CPPUNIT_ASSERT(xAnchor->getStart().is());
CPPUNIT_ASSERT(xAnchor->getEnd().is());
diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx
index 437bfe8ce6f5..2103220de62b 100644
--- a/sw/source/core/unocore/unoobj2.cxx
+++ b/sw/source/core/unocore/unoobj2.cxx
@@ -684,8 +684,13 @@ public:
{
if (m_pTableOrSectionFormat)
{
+ assert(m_eRangePosition == RANGE_IS_TABLE || m_eRangePosition == RANGE_IS_SECTION);
StartListening(pTableOrSectionFormat->GetNotifier());
}
+ else
+ {
+ assert(m_eRangePosition != RANGE_IS_TABLE && m_eRangePosition != RANGE_IS_SECTION);
+ }
}
virtual ~Impl() override
@@ -940,17 +945,23 @@ SwXTextRange::getText()
{
SolarMutexGuard aGuard;
- if (!m_pImpl->m_xParentText.is())
+ if (!m_pImpl->m_xParentText.is() && m_pImpl->m_pTableOrSectionFormat)
{
- if (m_pImpl->m_eRangePosition == RANGE_IS_TABLE &&
- m_pImpl->m_pTableOrSectionFormat)
+ std::optional<SwPosition> oPosition;
+ if (m_pImpl->m_eRangePosition == RANGE_IS_TABLE)
{
SwTable const*const pTable = SwTable::FindTable( m_pImpl->m_pTableOrSectionFormat );
SwTableNode const*const pTableNode = pTable->GetTableNode();
- const SwPosition aPosition( *pTableNode );
- m_pImpl->m_xParentText =
- ::sw::CreateParentXText(m_pImpl->m_rDoc, aPosition);
+ oPosition.emplace(*pTableNode);
+ }
+ else
+ {
+ assert(m_pImpl->m_eRangePosition == RANGE_IS_SECTION);
+ auto const pSectFormat(static_cast<SwSectionFormat const*>(m_pImpl->m_pTableOrSectionFormat));
+ oPosition.emplace(pSectFormat->GetContent().GetContentIdx()->GetNode());
}
+ m_pImpl->m_xParentText =
+ ::sw::CreateParentXText(m_pImpl->m_rDoc, *oPosition);
}
OSL_ENSURE(m_pImpl->m_xParentText.is(), "SwXTextRange::getText: no text");
return m_pImpl->m_xParentText;
More information about the Libreoffice-commits
mailing list