From d477ff4a81ecba8a77ead5ff1a33d3e3ceed622e Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Mon, 7 Apr 2014 23:22:22 +0200 Subject: fdo#69416: make footnote positions available to XProofreader - ModelToViewHelper: add new flag REPLACEMODE, which causes fields and footnotes to be replaced with ZWSP instead of expanding them - SwXFlatParagraph: add FootnotePositions and FieldPositions properties - GrammarCheckingIterator: invoke XProofreader::doProofreading with properties FootnotePositions and FieldPositions Change-Id: I9b66a37aac94f940546e812d8b85a35aebd8181a --- linguistic/source/gciterator.cxx | 26 ++++++-- sw/inc/modeltoviewhelper.hxx | 12 +++- sw/qa/core/uwriter.cxx | 90 +++++++++++++++++++++++++++ sw/source/core/inc/unoflatpara.hxx | 53 +++++++++++++++- sw/source/core/txtnode/modeltoviewhelper.cxx | 33 +++++++--- sw/source/core/txtnode/txtedt.cxx | 2 +- sw/source/core/unocore/unoflatpara.cxx | 92 ++++++++++++++++++++++++++++ 7 files changed, 294 insertions(+), 14 deletions(-) diff --git a/linguistic/source/gciterator.cxx b/linguistic/source/gciterator.cxx index 73c010b6667e..6f0123025dbf 100644 --- a/linguistic/source/gciterator.cxx +++ b/linguistic/source/gciterator.cxx @@ -489,6 +489,20 @@ uno::Reference< linguistic2::XProofreader > GrammarCheckingIterator::GetGrammarC return xRes; } +static uno::Sequence +lcl_makeProperties(uno::Reference const& xFlatPara) +{ + uno::Sequence ret(2); + uno::Reference const xProps( + xFlatPara, uno::UNO_QUERY_THROW); + ret[0] = beans::PropertyValue("FieldPositions", -1, + xProps->getPropertyValue("FieldPositions"), + beans::PropertyState_DIRECT_VALUE); + ret[1] = beans::PropertyValue("FootnotePositions", -1, + xProps->getPropertyValue("FootnotePositions"), + beans::PropertyState_DIRECT_VALUE); + return ret; +} void GrammarCheckingIterator::DequeueAndCheck() { @@ -548,8 +562,10 @@ void GrammarCheckingIterator::DequeueAndCheck() if (xGC.is()) { aGuard.clear(); - uno::Sequence< beans::PropertyValue > aEmptyProps; - aRes = xGC->doProofreading( aCurDocId, aCurTxt, aCurLocale, nStartPos, nSuggestedEnd, aEmptyProps ); + uno::Sequence const aProps( + lcl_makeProperties(xFlatPara)); + aRes = xGC->doProofreading( aCurDocId, aCurTxt, + aCurLocale, nStartPos, nSuggestedEnd, aProps ); //!! work-around to prevent looping if the grammar checker //!! failed to properly identify the sentence end @@ -696,8 +712,10 @@ throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception) sal_Int32 nEndPos = -1; if (xGC.is()) { - uno::Sequence< beans::PropertyValue > aEmptyProps; - aTmpRes = xGC->doProofreading( aDocId, rText, aCurLocale, nStartPos, nSuggestedEndOfSentencePos, aEmptyProps ); + uno::Sequence const aProps( + lcl_makeProperties(xFlatPara)); + aTmpRes = xGC->doProofreading( aDocId, rText, + aCurLocale, nStartPos, nSuggestedEndOfSentencePos, aProps ); //!! work-around to prevent looping if the grammar checker //!! failed to properly identify the sentence end diff --git a/sw/inc/modeltoviewhelper.hxx b/sw/inc/modeltoviewhelper.hxx index 82ec6da1833e..018b67c49faa 100644 --- a/sw/inc/modeltoviewhelper.hxx +++ b/sw/inc/modeltoviewhelper.hxx @@ -66,6 +66,8 @@ class SwTxtNode; #define EXPANDFOOTNOTE 0x0002 #define HIDEINVISIBLE 0x0004 #define HIDEREDLINED 0x0008 +/// do not expand to content, but replace with ZWSP +#define REPLACEMODE 0x0010 class ModelToViewHelper { @@ -77,8 +79,12 @@ class ModelToViewHelper */ typedef std::pair< sal_Int32 , sal_Int32 > ConversionMapEntry; typedef std::vector< ConversionMapEntry > ConversionMap; + typedef std::vector Positions; ConversionMap m_aMap; + /// store positions of fields and footnotes for grammar checkers + Positions m_FieldPositions; + Positions m_FootnotePositions; OUString m_aRetText; @@ -99,7 +105,9 @@ public: ModelPosition() : mnPos(0), mnSubPos(0), mbIsField(false) {} }; - ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode = EXPANDFIELDS | EXPANDFOOTNOTE); + ModelToViewHelper(const SwTxtNode &rNode, + // defaults are appropriate for spell/grammar checking + sal_uInt16 eMode = EXPANDFIELDS | EXPANDFOOTNOTE | REPLACEMODE); ModelToViewHelper() //pass through filter, view == model { } @@ -135,6 +143,8 @@ public: ModelPosition ConvertToModelPosition( sal_Int32 nViewPos ) const; OUString getViewText() const { return m_aRetText; } + Positions const& getFieldPositions() const { return m_FieldPositions; } + Positions const& getFootnotePositions() const { return m_FootnotePositions;} }; #endif diff --git a/sw/qa/core/uwriter.cxx b/sw/qa/core/uwriter.cxx index 535813f55a46..3d5b010cdfb5 100644 --- a/sw/qa/core/uwriter.cxx +++ b/sw/qa/core/uwriter.cxx @@ -269,6 +269,22 @@ void SwDocTest::testModelToViewHelper() CPPUNIT_ASSERT_EQUAL( OUString("AAAAA BBBBB foo CCCCC foo DDDDD"), sViewText); } + { + ModelToViewHelper aModelToViewHelper(*pTxtNode, + EXPANDFIELDS | EXPANDFOOTNOTE | REPLACEMODE); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA BBBBB " + OUString(CHAR_ZWSP) + " CCCCC " + OUString(CHAR_ZWSP) + " DDDDD"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast(2), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast(12), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast(20), + aModelToViewHelper.getFootnotePositions()[1]); + CPPUNIT_ASSERT_EQUAL(static_cast(0), + aModelToViewHelper.getFieldPositions().size()); + } { ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS); @@ -276,6 +292,23 @@ void SwDocTest::testModelToViewHelper() CPPUNIT_ASSERT_EQUAL( OUString("AAAAA BBBBB CCCCC DDDDD"), sViewText); } + { + ModelToViewHelper aModelToViewHelper(*pTxtNode, + EXPANDFIELDS | REPLACEMODE); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL(OUString("AAAAA BBBBB CCCCC DDDDD"), + sViewText); + // ??? is it a problem that we get the positions without + // EXPANDFOOTNOTE when it's completely removed? + CPPUNIT_ASSERT_EQUAL(static_cast(2), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast(12), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast(19), + aModelToViewHelper.getFootnotePositions()[1]); + CPPUNIT_ASSERT_EQUAL(static_cast(0), + aModelToViewHelper.getFieldPositions().size()); + } { ModelToViewHelper aModelToViewHelper(*pTxtNode, HIDEINVISIBLE); @@ -298,6 +331,20 @@ void SwDocTest::testModelToViewHelper() OUString sViewText = aModelToViewHelper.getViewText(); CPPUNIT_ASSERT_EQUAL(OUString("AAAAA CCCCC foo DDDDD"), sViewText); } + { + ModelToViewHelper aModelToViewHelper(*pTxtNode, + EXPANDFIELDS | HIDEINVISIBLE | EXPANDFOOTNOTE | REPLACEMODE); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA CCCCC " + OUString(CHAR_ZWSP) + " DDDDD"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast(1), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast(12), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast(0), + aModelToViewHelper.getFieldPositions().size()); + } { ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEREDLINED | EXPANDFOOTNOTE); @@ -305,6 +352,22 @@ void SwDocTest::testModelToViewHelper() CPPUNIT_ASSERT_EQUAL( OUString("AAAABB foo CCCCC foo DDDDD"), sViewText); } + { + ModelToViewHelper aModelToViewHelper(*pTxtNode, + EXPANDFIELDS | HIDEREDLINED | EXPANDFOOTNOTE | REPLACEMODE); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAABB " + OUString(CHAR_ZWSP) + " CCCCC " + OUString(CHAR_ZWSP) + " DDDDD"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast(2), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast(7), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast(15), + aModelToViewHelper.getFootnotePositions()[1]); + CPPUNIT_ASSERT_EQUAL(static_cast(0), + aModelToViewHelper.getFieldPositions().size()); + } { ModelToViewHelper aModelToViewHelper(*pTxtNode, HIDEINVISIBLE | HIDEREDLINED); @@ -321,6 +384,19 @@ void SwDocTest::testModelToViewHelper() OUString sViewText = aModelToViewHelper.getViewText(); CPPUNIT_ASSERT_EQUAL(OUString("AAAACCCCC foo DDDDD"), sViewText); } + { + ModelToViewHelper aModelToViewHelper(*pTxtNode, + EXPANDFIELDS | HIDEINVISIBLE | HIDEREDLINED | EXPANDFOOTNOTE | REPLACEMODE); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL(sViewText, + OUString("AAAACCCCC " + OUString(CHAR_ZWSP) + " DDDDD")); + CPPUNIT_ASSERT_EQUAL(static_cast(1), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast(10), + aModelToViewHelper.getFootnotePositions()[0]); + CPPUNIT_ASSERT_EQUAL(static_cast(0), + aModelToViewHelper.getFieldPositions().size()); + } m_pDoc->AppendTxtNode(*aPaM.GetPoint()); m_pDoc->InsertString(aPaM, OUString("AAAAA")); @@ -341,6 +417,20 @@ void SwDocTest::testModelToViewHelper() OUString sViewText = aModelToViewHelper.getViewText(); CPPUNIT_ASSERT_EQUAL(OUString("AAAAABBBBBCCCCC"), sViewText); } + { + ModelToViewHelper aModelToViewHelper(*pTxtNode, + EXPANDFIELDS | EXPANDFOOTNOTE | REPLACEMODE); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT_EQUAL( + OUString("AAAAA" + OUString(CHAR_ZWSP) + "CCCCC"), + sViewText); + CPPUNIT_ASSERT_EQUAL(static_cast(0), + aModelToViewHelper.getFootnotePositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast(1), + aModelToViewHelper.getFieldPositions().size()); + CPPUNIT_ASSERT_EQUAL(static_cast(5), + aModelToViewHelper.getFieldPositions()[0]); + } } } diff --git a/sw/source/core/inc/unoflatpara.hxx b/sw/source/core/inc/unoflatpara.hxx index af4db776443c..ceeff519dfaf 100644 --- a/sw/source/core/inc/unoflatpara.hxx +++ b/sw/source/core/inc/unoflatpara.hxx @@ -21,6 +21,9 @@ #define INCLUDED_SW_SOURCE_CORE_INC_UNOFLATPARA_HXX #include +#include + +#include #include #include #include @@ -46,8 +49,9 @@ class SwDoc; ******************************************************************************/ class SwXFlatParagraph: - public ::cppu::WeakImplHelper2 + public ::cppu::WeakImplHelper3 < + css::beans::XPropertySet, css::text::XFlatParagraph, css::lang::XUnoTunnel >, @@ -64,6 +68,53 @@ public: virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + // XPropertySet + virtual ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XPropertySetInfo > SAL_CALL + getPropertySetInfo() + throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + virtual void SAL_CALL setPropertyValue( + const OUString& rPropertyName, + const ::com::sun::star::uno::Any& rValue) + throw (::com::sun::star::beans::UnknownPropertyException, + ::com::sun::star::beans::PropertyVetoException, + ::com::sun::star::lang::IllegalArgumentException, + ::com::sun::star::lang::WrappedTargetException, + ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( + const OUString& rPropertyName) + throw (::com::sun::star::beans::UnknownPropertyException, + ::com::sun::star::lang::WrappedTargetException, + ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + virtual void SAL_CALL addPropertyChangeListener( + const OUString& rPropertyName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XPropertyChangeListener >& xListener) + throw (::com::sun::star::beans::UnknownPropertyException, + ::com::sun::star::lang::WrappedTargetException, + ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + virtual void SAL_CALL removePropertyChangeListener( + const OUString& rPropertyName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XPropertyChangeListener >& xListener) + throw (::com::sun::star::beans::UnknownPropertyException, + ::com::sun::star::lang::WrappedTargetException, + ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + virtual void SAL_CALL addVetoableChangeListener( + const OUString& rPropertyName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XVetoableChangeListener >& xListener) + throw (::com::sun::star::beans::UnknownPropertyException, + ::com::sun::star::lang::WrappedTargetException, + ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + virtual void SAL_CALL removeVetoableChangeListener( + const OUString& rPropertyName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XVetoableChangeListener >& xListener) + throw (::com::sun::star::beans::UnknownPropertyException, + ::com::sun::star::lang::WrappedTargetException, + ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + // text::XTextMarkup: virtual css::uno::Reference< css::container::XStringKeyMap > SAL_CALL getMarkupInfoContainer() throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE; diff --git a/sw/source/core/txtnode/modeltoviewhelper.cxx b/sw/source/core/txtnode/modeltoviewhelper.cxx index 2a338ad9764c..085d3c5eff9d 100644 --- a/sw/source/core/txtnode/modeltoviewhelper.cxx +++ b/sw/source/core/txtnode/modeltoviewhelper.cxx @@ -37,6 +37,7 @@ struct FieldResult { sal_Int32 m_nFieldPos; OUString m_sExpand; + enum { FIELD, FOOTNOTE } m_eType; }; class sortfieldresults : @@ -144,9 +145,11 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode) case RES_TXTATR_ANNOTATION: if (eMode & EXPANDFIELDS) { - aFieldResult.m_sExpand = - static_cast(pAttr)->GetFmtFld().GetField() - ->ExpandField(true); + aFieldResult.m_sExpand = (eMode & REPLACEMODE) + ? OUString(CHAR_ZWSP) + : static_cast(pAttr)-> + GetFmtFld().GetField()->ExpandField(true); + aFieldResult.m_eType = FieldResult::FIELD; } break; case RES_TXTATR_FTN: @@ -154,7 +157,10 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode) { const SwFmtFtn& rFtn = static_cast(pAttr)->GetFtn(); const SwDoc *pDoc = rNode.GetDoc(); - aFieldResult.m_sExpand = rFtn.GetViewNumStr(*pDoc); + aFieldResult.m_sExpand = (eMode & REPLACEMODE) + ? OUString(CHAR_ZWSP) + : rFtn.GetViewNumStr(*pDoc); + aFieldResult.m_eType = FieldResult::FOOTNOTE; } break; default: @@ -186,7 +192,10 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode) { FieldResult aFieldResult; aFieldResult.m_nFieldPos = nDummyCharPos; - aFieldResult.m_sExpand = sw::mark::ExpandFieldmark(pMark); + aFieldResult.m_sExpand = (eMode & REPLACEMODE) + ? OUString(CHAR_ZWSP) + : sw::mark::ExpandFieldmark(pMark); + aFieldResult.m_eType = FieldResult::FIELD; aFind->m_aAttrs.insert(aFieldResult); } } @@ -209,8 +218,18 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode) { for (FieldResultSet::iterator j = i->m_aAttrs.begin(); j != i->m_aAttrs.end(); ++j) { - m_aRetText = m_aRetText.replaceAt( nOffset + j->m_nFieldPos, 1, j->m_sExpand ); - m_aMap.push_back( ConversionMapEntry( j->m_nFieldPos, nOffset + j->m_nFieldPos ) ); + sal_Int32 const viewPos(nOffset + j->m_nFieldPos); + m_aRetText = m_aRetText.replaceAt(viewPos, 1, j->m_sExpand); + m_aMap.push_back( ConversionMapEntry(j->m_nFieldPos, viewPos) ); + switch (j->m_eType) + { + case FieldResult::FIELD: + m_FieldPositions.push_back(viewPos); + break; + case FieldResult::FOOTNOTE: + m_FootnotePositions.push_back(viewPos); + break; + } nOffset += j->m_sExpand.getLength() - 1; } } diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index 417c3cf5c481..8929b0b23be7 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -1455,7 +1455,7 @@ SwRect SwTxtFrm::SmartTagScan( SwCntntNode* /*pActNode*/, sal_Int32 /*nActPos*/ if ( nBegin < nEnd ) { // Expand the string: - const ModelToViewHelper aConversionMap(*pNode); + const ModelToViewHelper aConversionMap(*pNode /*TODO - replace or expand fields for smart tags?*/); OUString aExpandText = aConversionMap.getViewText(); // Ownership ov ConversionMap is passed to SwXTextMarkup object! diff --git a/sw/source/core/unocore/unoflatpara.cxx b/sw/source/core/unocore/unoflatpara.cxx index 80817cda5446..69760910cb96 100644 --- a/sw/source/core/unocore/unoflatpara.cxx +++ b/sw/source/core/unocore/unoflatpara.cxx @@ -92,6 +92,10 @@ uno::Any SAL_CALL SwXFlatParagraph::queryInterface( const uno::Type& rType ) thr { return uno::makeAny( uno::Reference < text::XFlatParagraph >(this) ); } + else if (rType == ::getCppuType((uno::Reference< beans::XPropertySet>*)0)) + { + return uno::makeAny( uno::Reference(this) ); + } else return SwXTextMarkup::queryInterface( rType ); } @@ -111,6 +115,94 @@ const SwTxtNode* SwXFlatParagraph::getTxtNode() const return mpTxtNode; } +// XPropertySet +uno::Reference< beans::XPropertySetInfo > SAL_CALL +SwXFlatParagraph::getPropertySetInfo() +throw (uno::RuntimeException, std::exception) +{ + throw uno::RuntimeException("SwXFlatParagraph::getPropertySetInfo(): " + "not implemented", 0/*static_cast< ::cppu::OWeakObject*>(this)*/); +} + +void SAL_CALL +SwXFlatParagraph::setPropertyValue(const OUString&, const uno::Any&) +throw (beans::UnknownPropertyException, beans::PropertyVetoException, + lang::IllegalArgumentException, lang::WrappedTargetException, + uno::RuntimeException, std::exception) +{ + throw lang::IllegalArgumentException("no values can be set", + 0/*static_cast< ::cppu::OWeakObject*>(this)*/, 0); +} + +uno::Any SAL_CALL +SwXFlatParagraph::getPropertyValue(const OUString& rPropertyName) +throw (beans::UnknownPropertyException, lang::WrappedTargetException, + uno::RuntimeException, std::exception) +{ + SolarMutexGuard g; + + if (rPropertyName == "FieldPositions") + { + uno::Sequence ret(maConversionMap.getFieldPositions().size()); + std::copy(maConversionMap.getFieldPositions().begin(), + maConversionMap.getFieldPositions().end(), ret.begin()); + return uno::makeAny(ret); + } + else if (rPropertyName == "FootnotePositions") + { + uno::Sequence ret(maConversionMap.getFootnotePositions().size()); + std::copy(maConversionMap.getFootnotePositions().begin(), + maConversionMap.getFootnotePositions().end(), ret.begin()); + return uno::makeAny(ret); + } + return uno::Any(); +} + +void SAL_CALL +SwXFlatParagraph::addPropertyChangeListener( + const OUString& /*rPropertyName*/, + const uno::Reference< beans::XPropertyChangeListener >& /*xListener*/) +throw (beans::UnknownPropertyException, lang::WrappedTargetException, + uno::RuntimeException, std::exception) +{ + SAL_WARN("sw.uno", + "SwXFlatParagraph::addPropertyChangeListener(): not implemented"); +} + +void SAL_CALL +SwXFlatParagraph::removePropertyChangeListener( + const OUString& /*rPropertyName*/, + const uno::Reference< beans::XPropertyChangeListener >& /*xListener*/) +throw (beans::UnknownPropertyException, lang::WrappedTargetException, + uno::RuntimeException, std::exception) +{ + SAL_WARN("sw.uno", + "SwXFlatParagraph::removePropertyChangeListener(): not implemented"); +} + +void SAL_CALL +SwXFlatParagraph::addVetoableChangeListener( + const OUString& /*rPropertyName*/, + const uno::Reference< beans::XVetoableChangeListener >& /*xListener*/) +throw (beans::UnknownPropertyException, lang::WrappedTargetException, + uno::RuntimeException, std::exception) +{ + SAL_WARN("sw.uno", + "SwXFlatParagraph::addVetoableChangeListener(): not implemented"); +} + +void SAL_CALL +SwXFlatParagraph::removeVetoableChangeListener( + const OUString& /*rPropertyName*/, + const uno::Reference< beans::XVetoableChangeListener >& /*xListener*/) +throw (beans::UnknownPropertyException, lang::WrappedTargetException, + uno::RuntimeException, std::exception) +{ + SAL_WARN("sw.uno", + "SwXFlatParagraph::removeVetoableChangeListener(): not implemented"); +} + + css::uno::Reference< css::container::XStringKeyMap > SAL_CALL SwXFlatParagraph::getMarkupInfoContainer() throw (css::uno::RuntimeException, std::exception) { return SwXTextMarkup::getMarkupInfoContainer(); -- cgit v1.2.3