diff options
-rw-r--r-- | sw/source/core/inc/unoport.hxx | 11 | ||||
-rw-r--r-- | sw/source/core/unocore/unoportenum.cxx | 24 |
2 files changed, 5 insertions, 30 deletions
diff --git a/sw/source/core/inc/unoport.hxx b/sw/source/core/inc/unoport.hxx index f6ee60e3454f..cc323859e322 100644 --- a/sw/source/core/inc/unoport.hxx +++ b/sw/source/core/inc/unoport.hxx @@ -249,13 +249,12 @@ class SwXTextPortionEnumeration , ::com::sun::star::lang::XServiceInfo , ::com::sun::star::lang::XUnoTunnel > - , public SwClient { TextRangeList_t m_Portions; // contains all portions, filled by ctor - std::shared_ptr<SwUnoCrsr> m_pUnoCrsr; + sw::UnoCursorPointer m_pUnoCrsr; - SwUnoCrsr* GetCursor() const - {return static_cast<SwUnoCrsr*>(const_cast<SwModify*>(GetRegisteredIn()));} + SwUnoCrsr* GetCursor() const + {return const_cast<SwUnoCrsr*>(&(*m_pUnoCrsr));} protected: virtual ~SwXTextPortionEnumeration(); @@ -292,10 +291,6 @@ public: virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE; -protected: - //SwClient - virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) SAL_OVERRIDE; - virtual void SwClientNotify(const SwModify&, const SfxHint&) SAL_OVERRIDE; }; class SwXRedlinePortion : public SwXTextPortion diff --git a/sw/source/core/unocore/unoportenum.cxx b/sw/source/core/unocore/unoportenum.cxx index d3cf0bb0f535..d95fd8bb4ea3 100644 --- a/sw/source/core/unocore/unoportenum.cxx +++ b/sw/source/core/unocore/unoportenum.cxx @@ -364,7 +364,6 @@ SwXTextPortionEnumeration::SwXTextPortionEnumeration( : m_Portions() { m_pUnoCrsr = rParaCrsr.GetDoc()->CreateUnoCrsr(*rParaCrsr.GetPoint(), false); - m_pUnoCrsr->Add(this); OSL_ENSURE(nEnd == -1 || (nStart <= nEnd && nEnd <= m_pUnoCrsr->Start()->nNode.GetNode().GetTextNode()->GetText().getLength()), @@ -373,7 +372,7 @@ SwXTextPortionEnumeration::SwXTextPortionEnumeration( // find all frames, graphics and OLEs that are bound AT character in para FrameClientSortList_t frames; ::CollectFrameAtNode(m_pUnoCrsr->GetPoint()->nNode, frames, true); - lcl_CreatePortions(m_Portions, xParentText, m_pUnoCrsr.get(), frames, nStart, nEnd); + lcl_CreatePortions(m_Portions, xParentText, GetCursor(), frames, nStart, nEnd); } SwXTextPortionEnumeration::SwXTextPortionEnumeration( @@ -382,14 +381,10 @@ SwXTextPortionEnumeration::SwXTextPortionEnumeration( : m_Portions( rPortions ) { m_pUnoCrsr = rParaCrsr.GetDoc()->CreateUnoCrsr(*rParaCrsr.GetPoint(), false); - m_pUnoCrsr->Add(this); } SwXTextPortionEnumeration::~SwXTextPortionEnumeration() -{ - if(m_pUnoCrsr) - m_pUnoCrsr->Remove(this); -} +{ } sal_Bool SwXTextPortionEnumeration::hasMoreElements() throw( uno::RuntimeException, std::exception ) @@ -1401,19 +1396,4 @@ static void lcl_CreatePortions( "CreatePortions: stack error" ); } -void SwXTextPortionEnumeration::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) -{ - ClientModify(this, pOld, pNew); -} - -void SwXTextPortionEnumeration::SwClientNotify(const SwModify& rModify, const SfxHint& rHint) -{ - SwClient::SwClientNotify(rModify, rHint); - if(!GetRegisteredIn() || typeid(rHint) == typeid(sw::DocDisposingHint)) - { - m_pUnoCrsr->Remove(this); - m_pUnoCrsr.reset(); - } -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |