use new UnoCursorPointer in SwXTextPortionEnumeration

Change-Id: If6b64c92d4f6f786767802cc046ccd96bd8367cb
This commit is contained in:
Bjoern Michaelsen
2015-06-06 03:38:49 +02:00
parent c9a343935f
commit a755edf0fb
2 changed files with 5 additions and 30 deletions

View File

@@ -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

View File

@@ -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: */