Kaydet (Commit) 26085120 authored tarafından Miklos Vajna's avatar Miklos Vajna

fdo#86131 SwXTextField::getAnchor: handle postit field with annotation mark

Change-Id: I3881c4577375a2eda053f64800d0991de6f009ad
üst dca29d67
......@@ -443,6 +443,13 @@ void SwUiWriterTest::testCommentedWord()
SwShellCrsr* pShellCrsr = pWrtShell->getShellCrsr(false);
// This was 9, only "word", not "word<anchor character>" was selected.
CPPUNIT_ASSERT_EQUAL(sal_Int32(10), pShellCrsr->End()->nContent.GetIndex());
// Test that getAnchor() points to "word", not to an empty string.
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);
CPPUNIT_ASSERT_EQUAL(OUString("word"), xField->getAnchor()->getString());
}
......
......@@ -2078,6 +2078,20 @@ SwXTextField::getAnchor() throw (uno::RuntimeException, std::exception)
if (pPamForTxtFld.get() == NULL)
return 0;
// If this is a postit field, then return the range of its annotation mark if it has one.
if (const SwPostItField* pPostItField = dynamic_cast<const SwPostItField*>(pField))
{
IDocumentMarkAccess* pMarkAccess = m_pImpl->m_pDoc->getIDocumentMarkAccess();
for (IDocumentMarkAccess::const_iterator_t ppMark = pMarkAccess->getAnnotationMarksBegin(); ppMark != pMarkAccess->getAnnotationMarksEnd(); ++ppMark)
{
if (ppMark->get()->GetName() == pPostItField->GetName())
{
pPamForTxtFld.reset(new SwPaM(ppMark->get()->GetMarkStart(), ppMark->get()->GetMarkEnd()));
break;
}
}
}
uno::Reference<text::XTextRange> xRange = SwXTextRange::CreateXTextRange(
*m_pImpl->m_pDoc, *(pPamForTxtFld->GetPoint()), pPamForTxtFld->GetMark());
return xRange;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment