Kaydet (Commit) c844a15c authored tarafından Bjoern Michaelsen's avatar Bjoern Michaelsen

use new unocrsrs in SwXTextTableCursor

Change-Id: I7389794f1ca493a1f7e04c7b24d650223443bf7e
üst 5f5e1568
...@@ -213,8 +213,6 @@ class SW_DLLPUBLIC SwXTextTableCursor : public SwXTextTableCursor_Base ...@@ -213,8 +213,6 @@ class SW_DLLPUBLIC SwXTextTableCursor : public SwXTextTableCursor_Base
SwDepend aCrsrDepend; SwDepend aCrsrDepend;
const SfxItemPropertySet* m_pPropSet; const SfxItemPropertySet* m_pPropSet;
protected:
virtual ~SwXTextTableCursor();
public: public:
SwXTextTableCursor(SwFrameFormat* pFormat, SwTableBox* pBox); SwXTextTableCursor(SwFrameFormat* pFormat, SwTableBox* pBox);
SwXTextTableCursor(SwFrameFormat& rTableFormat, SwXTextTableCursor(SwFrameFormat& rTableFormat,
...@@ -265,7 +263,8 @@ public: ...@@ -265,7 +263,8 @@ public:
virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
//SwClient //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 // ITextCursorHelper
virtual const SwPaM* GetPaM() const SAL_OVERRIDE; virtual const SwPaM* GetPaM() const SAL_OVERRIDE;
...@@ -275,6 +274,7 @@ public: ...@@ -275,6 +274,7 @@ public:
const SwUnoCrsr* GetCrsr() const; const SwUnoCrsr* GetCrsr() const;
SwUnoCrsr* GetCrsr(); SwUnoCrsr* GetCrsr();
std::shared_ptr<SwUnoCrsr> m_pUnoCrsr;
SwFrameFormat* GetFrameFormat() const { return const_cast<SwFrameFormat*>(static_cast<const SwFrameFormat*>(GetRegisteredIn())); } SwFrameFormat* GetFrameFormat() const { return const_cast<SwFrameFormat*>(static_cast<const SwFrameFormat*>(GetRegisteredIn())); }
}; };
......
...@@ -1417,10 +1417,10 @@ SwXTextTableCursor::SwXTextTableCursor(SwFrameFormat* pFormat, SwTableBox* pBox) ...@@ -1417,10 +1417,10 @@ SwXTextTableCursor::SwXTextTableCursor(SwFrameFormat* pFormat, SwTableBox* pBox)
SwDoc* pDoc = pFormat->GetDoc(); SwDoc* pDoc = pFormat->GetDoc();
const SwStartNode* pSttNd = pBox->GetSttNd(); const SwStartNode* pSttNd = pBox->GetSttNd();
SwPosition aPos(*pSttNd); SwPosition aPos(*pSttNd);
SwUnoCrsr* pUnoCrsr = pDoc->CreateUnoCrsr(aPos, true); m_pUnoCrsr = pDoc->CreateUnoCrsr2(aPos, true);
pUnoCrsr->Move( fnMoveForward, fnGoNode ); m_pUnoCrsr->Move( fnMoveForward, fnGoNode );
pUnoCrsr->Add(&aCrsrDepend); m_pUnoCrsr->Add(&aCrsrDepend);
SwUnoTableCrsr& rTableCrsr = dynamic_cast<SwUnoTableCrsr&>(*pUnoCrsr); SwUnoTableCrsr& rTableCrsr = dynamic_cast<SwUnoTableCrsr&>(*m_pUnoCrsr.get());
rTableCrsr.MakeBoxSels(); rTableCrsr.MakeBoxSels();
} }
...@@ -1429,26 +1429,18 @@ SwXTextTableCursor::SwXTextTableCursor(SwFrameFormat& rTableFormat, const SwTabl ...@@ -1429,26 +1429,18 @@ SwXTextTableCursor::SwXTextTableCursor(SwFrameFormat& rTableFormat, const SwTabl
aCrsrDepend(this, 0), aCrsrDepend(this, 0),
m_pPropSet(aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_TABLE_CURSOR)) 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()) if(pTableSelection->HasMark())
{ {
pUnoCrsr->SetMark(); m_pUnoCrsr->SetMark();
*pUnoCrsr->GetMark() = *pTableSelection->GetMark(); *m_pUnoCrsr->GetMark() = *pTableSelection->GetMark();
} }
const SwSelBoxes& rBoxes = pTableSelection->GetSelectedBoxes(); const SwSelBoxes& rBoxes = pTableSelection->GetSelectedBoxes();
SwTableCursor& rTableCrsr = dynamic_cast<SwTableCursor&>(*pUnoCrsr); SwUnoTableCrsr& rTableCrsr = dynamic_cast<SwUnoTableCrsr&>(*m_pUnoCrsr);
for(auto pBox : rBoxes) for(auto pBox : rBoxes)
rTableCrsr.InsertBox(*pBox); rTableCrsr.InsertBox(*pBox);
pUnoCrsr->Add(&aCrsrDepend); m_pUnoCrsr->Add(&aCrsrDepend);
SwUnoTableCrsr& rUnoTableCursor = dynamic_cast<SwUnoTableCrsr&>(*pUnoCrsr); rTableCrsr.MakeBoxSels();
rUnoTableCursor.MakeBoxSels();
}
SwXTextTableCursor::~SwXTextTableCursor()
{
SolarMutexGuard aGuard;
SwUnoCrsr* pUnoCrsr = GetCrsr();
delete pUnoCrsr;
} }
OUString SwXTextTableCursor::getRangeName() OUString SwXTextTableCursor::getRangeName()
...@@ -1747,6 +1739,17 @@ void SwXTextTableCursor::removeVetoableChangeListener(const OUString& /*rPropert ...@@ -1747,6 +1739,17 @@ void SwXTextTableCursor::removeVetoableChangeListener(const OUString& /*rPropert
void SwXTextTableCursor::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) void SwXTextTableCursor::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew)
{ ClientModify(this, pOld, 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 class SwXTextTable::Impl
{ {
private: private:
......
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