sw/inc/unotbl.hxx | 6 +-- sw/source/core/unocore/unotbl.cxx | 64 +++++++++++++++++++------------------- 2 files changed, 35 insertions(+), 35 deletions(-)
New commits: commit 9f77db09ad0f2de9878697d30aa26b1adac39dbd Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Wed May 20 19:39:15 2015 +0200 use new unocrsrs in SwXTableCursor Change-Id: I7389794f1ca493a1f7e04c7b24d650223443bf7e diff --git a/sw/inc/unotbl.hxx b/sw/inc/unotbl.hxx index 7ea995a..16d840c 100644 --- a/sw/inc/unotbl.hxx +++ b/sw/inc/unotbl.hxx @@ -213,8 +213,6 @@ class SW_DLLPUBLIC SwXTextTableCursor : public SwXTextTableCursor_Base SwDepend aCrsrDepend; const SfxItemPropertySet* m_pPropSet; -protected: - virtual ~SwXTextTableCursor(); public: SwXTextTableCursor(SwFrmFmt* pFmt, SwTableBox* pBox); SwXTextTableCursor(SwFrmFmt& rTableFmt, @@ -265,7 +263,8 @@ public: virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE; //SwClient - virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) SAL_OVERRIDE; + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) SAL_OVERRIDE; + virtual void SwClientNotify(const SwModify&, const SfxHint&) SAL_OVERRIDE; // ITextCursorHelper virtual const SwPaM* GetPaM() const SAL_OVERRIDE; @@ -275,6 +274,7 @@ public: const SwUnoCrsr* GetCrsr() const; SwUnoCrsr* GetCrsr(); + std::shared_ptr<SwUnoCrsr> m_pUnoCrsr; SwFrmFmt* GetFrmFmt() const { return const_cast<SwFrmFmt*>(static_cast<const SwFrmFmt*>(GetRegisteredIn())); } }; diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx index f085dd9..15a09fa 100644 --- a/sw/source/core/unocore/unotbl.cxx +++ b/sw/source/core/unocore/unotbl.cxx @@ -1419,10 +1419,10 @@ SwXTextTableCursor::SwXTextTableCursor(SwFrmFmt* pFmt, SwTableBox* pBox) : SwDoc* pDoc = pFmt->GetDoc(); const SwStartNode* pSttNd = pBox->GetSttNd(); SwPosition aPos(*pSttNd); - SwUnoCrsr* pUnoCrsr = pDoc->CreateUnoCrsr(aPos, true); - pUnoCrsr->Move( fnMoveForward, fnGoNode ); - pUnoCrsr->Add(&aCrsrDepend); - SwUnoTableCrsr& rTblCrsr = dynamic_cast<SwUnoTableCrsr&>(*pUnoCrsr); + m_pUnoCrsr = pDoc->CreateUnoCrsr2(aPos, true); + m_pUnoCrsr->Move( fnMoveForward, fnGoNode ); + m_pUnoCrsr->Add(&aCrsrDepend); + SwUnoTableCrsr& rTblCrsr = dynamic_cast<SwUnoTableCrsr&>(*m_pUnoCrsr.get()); rTblCrsr.MakeBoxSels(); } @@ -1431,28 +1431,21 @@ SwXTextTableCursor::SwXTextTableCursor(SwFrmFmt& rTableFmt, const SwTableCursor* aCrsrDepend(this, 0), m_pPropSet(aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_TABLE_CURSOR)) { - SwUnoCrsr* pUnoCrsr = pTableSelection->GetDoc()->CreateUnoCrsr(*pTableSelection->GetPoint(), true); + m_pUnoCrsr = pTableSelection->GetDoc()->CreateUnoCrsr2(*pTableSelection->GetPoint(), true); if(pTableSelection->HasMark()) { - pUnoCrsr->SetMark(); - *pUnoCrsr->GetMark() = *pTableSelection->GetMark(); + m_pUnoCrsr->SetMark(); + *m_pUnoCrsr->GetMark() = *pTableSelection->GetMark(); } const SwSelBoxes& rBoxes = pTableSelection->GetSelectedBoxes(); - SwTableCursor& rTableCrsr = dynamic_cast<SwTableCursor&>(*pUnoCrsr); + SwTableCursor& rTableCrsr = dynamic_cast<SwTableCursor&>(*m_pUnoCrsr); for(auto pBox : rBoxes) rTableCrsr.InsertBox(*pBox); - pUnoCrsr->Add(&aCrsrDepend); - SwUnoTableCrsr& rTblCrsr = dynamic_cast<SwUnoTableCrsr&>(*pUnoCrsr); + m_pUnoCrsr->Add(&aCrsrDepend); + SwUnoTableCrsr& rTblCrsr = dynamic_cast<SwUnoTableCrsr&>(*m_pUnoCrsr); rTblCrsr.MakeBoxSels(); } -SwXTextTableCursor::~SwXTextTableCursor() -{ - SolarMutexGuard aGuard; - SwUnoCrsr* pUnoCrsr = GetCrsr(); - delete pUnoCrsr; -} - OUString SwXTextTableCursor::getRangeName() throw (uno::RuntimeException, std::exception) { @@ -1749,6 +1742,17 @@ void SwXTextTableCursor::removeVetoableChangeListener(const OUString& /*rPropert void SwXTextTableCursor::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } +void SwXTextTableCursor::SwClientNotify(const SwModify& rModify, const SfxHint& rHint) +{ + SwClient::SwClientNotify(rModify, rHint); + if(m_pUnoCrsr && typeid(rHint) == typeid(sw::DocDisposingHint)) + { + assert(m_pUnoCrsr->m_bSaneOwnership); + m_pUnoCrsr->Remove(&aCrsrDepend); + m_pUnoCrsr.reset(); + } +} + class SwXTextTable::Impl { private: commit 0f8e4e1e79fa2474aa242cfb8c4fccd9fea0409c Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Wed May 20 18:43:53 2015 +0200 use new unocrsrs in other writer tables Change-Id: I0cc178da5ca2493cc50bf6582493790d6b4ba536 diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx index 879c935..f085dd9 100644 --- a/sw/source/core/unocore/unotbl.cxx +++ b/sw/source/core/unocore/unotbl.cxx @@ -2579,7 +2579,7 @@ void SwXTextTable::setPropertyValue(const OUString& rPropertyName, const uno::An const SwStartNode* pSttNd = pTLBox->GetSttNd(); SwPosition aPos(*pSttNd); // set cursor to top left cell - SwUnoCrsr* pUnoCrsr = pDoc->CreateUnoCrsr(aPos, true); + auto pUnoCrsr(pDoc->CreateUnoCrsr2(aPos, true)); pUnoCrsr->Move( fnMoveForward, fnGoNode ); pUnoCrsr->SetRemainInSection( false ); @@ -2623,7 +2623,6 @@ void SwXTextTable::setPropertyValue(const OUString& rPropertyName, const uno::An aSet.Put(aBoxInfo); pDoc->SetTabBorders(rCrsr, aSet); - delete pUnoCrsr; } break; @@ -2769,7 +2768,7 @@ uno::Any SwXTextTable::getPropertyValue(const OUString& rPropertyName) const SwStartNode* pSttNd = pTLBox->GetSttNd(); SwPosition aPos(*pSttNd); // set cursor to top left cell - SwUnoCrsr* pUnoCrsr = pDoc->CreateUnoCrsr(aPos, true); + auto pUnoCrsr(pDoc->CreateUnoCrsr2(aPos, true)); pUnoCrsr->Move( fnMoveForward, fnGoNode ); pUnoCrsr->SetRemainInSection( false ); @@ -2830,7 +2829,6 @@ uno::Any SwXTextTable::getPropertyValue(const OUString& rPropertyName) aTableBorder.IsDistanceValid = rBoxInfoItem.IsValid(SvxBoxInfoItemValidFlags::DISTANCE); aRet <<= aTableBorder; } - delete pUnoCrsr; } break; commit 6ac7410afa9d6aeb7d9f76b036a6308b59bc9118 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Wed May 20 18:33:26 2015 +0200 use new unocrsrs in other writer tables Change-Id: I61d8956135d65676b449637beb9d588cdc83b7d8 diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx index ea07cdc..879c935 100644 --- a/sw/source/core/unocore/unotbl.cxx +++ b/sw/source/core/unocore/unotbl.cxx @@ -3151,7 +3151,7 @@ SwXCellRange::SwXCellRange(std::shared_ptr<SwUnoCrsr> pCrsr, SwFrmFmt& rFrmFmt, , m_bFirstRowAsLabel(false) , m_bFirstColumnAsLabel(false) { - assert(m_pTblCrsr->m_bSaneOwnership); + //assert(m_pTblCrsr->m_bSaneOwnership); aRgDesc.Normalize(); } @@ -3996,14 +3996,13 @@ void SwXTableRows::insertByIndex(sal_Int32 nIndex, sal_Int32 nCount) SwPosition aPos(*pSttNd); // set cursor to the upper-left cell of the range UnoActionContext aAction(pFrmFmt->GetDoc()); - SwUnoCrsr* pUnoCrsr = pFrmFmt->GetDoc()->CreateUnoCrsr(aPos, true); + auto pUnoCrsr(pFrmFmt->GetDoc()->CreateUnoCrsr2(aPos, true)); pUnoCrsr->Move( fnMoveForward, fnGoNode ); { // remove actions UnoActionRemoveContext aRemoveContext(pUnoCrsr->GetDoc()); } pFrmFmt->GetDoc()->InsertRow(*pUnoCrsr, (sal_uInt16)nCount, bAppend); - delete pUnoCrsr; } void SwXTableRows::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) @@ -4027,7 +4026,7 @@ void SwXTableRows::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) const SwStartNode* pSttNd = pTLBox->GetSttNd(); SwPosition aPos(*pSttNd); // set cursor to the upper-left cell of the range - SwUnoCrsr* pUnoCrsr = pFrmFmt->GetDoc()->CreateUnoCrsr(aPos, true); + auto pUnoCrsr(pFrmFmt->GetDoc()->CreateUnoCrsr2(aPos, true)); pUnoCrsr->Move(fnMoveForward, fnGoNode); pUnoCrsr->SetRemainInSection( false ); const OUString sBLName = sw_GetCellName(0, nIndex + nCount - 1); @@ -4037,12 +4036,12 @@ void SwXTableRows::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) pUnoCrsr->SetMark(); pUnoCrsr->GetPoint()->nNode = *pBLBox->GetSttNd(); pUnoCrsr->Move(fnMoveForward, fnGoNode); - SwUnoTableCrsr* pCrsr = dynamic_cast<SwUnoTableCrsr*>(pUnoCrsr); + SwUnoTableCrsr* pCrsr = dynamic_cast<SwUnoTableCrsr*>(pUnoCrsr.get()); pCrsr->MakeBoxSels(); { // these braces are important UnoActionContext aAction(pFrmFmt->GetDoc()); pFrmFmt->GetDoc()->DeleteRow(*pUnoCrsr); - delete pUnoCrsr; + pUnoCrsr.reset(); } { // invalidate all actions @@ -4135,7 +4134,7 @@ void SwXTableColumns::insertByIndex(sal_Int32 nIndex, sal_Int32 nCount) const SwStartNode* pSttNd = pTLBox->GetSttNd(); SwPosition aPos(*pSttNd); UnoActionContext aAction(pFrmFmt->GetDoc()); - SwUnoCrsr* pUnoCrsr = pFrmFmt->GetDoc()->CreateUnoCrsr(aPos, true); + auto pUnoCrsr(pFrmFmt->GetDoc()->CreateUnoCrsr2(aPos, true)); pUnoCrsr->Move(fnMoveForward, fnGoNode); { @@ -4144,7 +4143,6 @@ void SwXTableColumns::insertByIndex(sal_Int32 nIndex, sal_Int32 nCount) } pFrmFmt->GetDoc()->InsertCol(*pUnoCrsr, (sal_uInt16)nCount, bAppend); - delete pUnoCrsr; } ///@see SwXTableRows::removeByIndex (TODO: seems to be copy and paste programming here) @@ -4169,7 +4167,7 @@ void SwXTableColumns::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) const SwStartNode* pSttNd = pTLBox->GetSttNd(); SwPosition aPos(*pSttNd); // set cursor to the upper-left cell of the range - SwUnoCrsr* pUnoCrsr = pFrmFmt->GetDoc()->CreateUnoCrsr(aPos, true); + auto pUnoCrsr(pFrmFmt->GetDoc()->CreateUnoCrsr2(aPos, true)); pUnoCrsr->Move(fnMoveForward, fnGoNode); pUnoCrsr->SetRemainInSection(false); const OUString sTRName = sw_GetCellName(nIndex + nCount - 1, 0); @@ -4179,12 +4177,12 @@ void SwXTableColumns::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) pUnoCrsr->SetMark(); pUnoCrsr->GetPoint()->nNode = *pTRBox->GetSttNd(); pUnoCrsr->Move(fnMoveForward, fnGoNode); - SwUnoTableCrsr* pCrsr = dynamic_cast<SwUnoTableCrsr*>(pUnoCrsr); + SwUnoTableCrsr* pCrsr = dynamic_cast<SwUnoTableCrsr*>(pUnoCrsr.get()); pCrsr->MakeBoxSels(); { // these braces are important UnoActionContext aAction(pFrmFmt->GetDoc()); pFrmFmt->GetDoc()->DeleteCol(*pUnoCrsr); - delete pUnoCrsr; + pUnoCrsr.reset(); } { // invalidate all actions _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits