summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-04-05 13:18:07 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-06-07 12:14:11 +0200
commit8e156f009e29a90883c2536943f338be163dad45 (patch)
tree9062fa4f9f44f5d2366e2fbdd45ef3a2a9cdf04c
parentd155f7af035e0fd818340c1affe41d3b6e97b502 (diff)
provide overrides of GetNext/GetPrev in SwPaM subclasses
so we don't need to cast at the call sites. Also fix the type of mpExtInputRing in SwDoc Change-Id: I60794a4b5c24ca552eafa87b8810dc08efdee3ea Reviewed-on: https://gerrit.libreoffice.org/52455 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--sw/inc/doc.hxx2
-rw-r--r--sw/inc/extinput.hxx5
-rw-r--r--sw/inc/swcrsr.hxx10
-rw-r--r--sw/inc/viscrs.hxx11
-rw-r--r--sw/source/core/crsr/crsrsh.cxx15
-rw-r--r--sw/source/core/doc/extinput.cxx6
-rw-r--r--sw/source/core/frmedt/fefly1.cxx2
-rw-r--r--sw/source/core/unocore/unocrsr.cxx2
-rw-r--r--sw/source/core/unocore/unoobj.cxx2
-rw-r--r--sw/source/core/view/vprint.cxx4
10 files changed, 41 insertions, 18 deletions
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index ab3acf7d9070..5aac6bcd5061 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -266,7 +266,7 @@ class SW_DLLPUBLIC SwDoc final
mutable std::unordered_map<OUString, SwNumRule *> maNumRuleMap;
std::unique_ptr<SwPagePreviewPrtData> m_pPgPViewPrtData; //< Indenting / spacing for printing of page view.
- SwPaM *mpExtInputRing;
+ SwExtTextInput *mpExtInputRing;
IStyleAccess *mpStyleAccess; //< handling of automatic styles
SwLayoutCache *mpLayoutCache; /**< Layout cache to read and save with the
diff --git a/sw/inc/extinput.hxx b/sw/inc/extinput.hxx
index 262471bf2711..5fcda8748c88 100644
--- a/sw/inc/extinput.hxx
+++ b/sw/inc/extinput.hxx
@@ -42,6 +42,11 @@ public:
bool IsOverwriteCursor() const { return bIsOverwriteCursor; }
void SetOverwriteCursor( bool bFlag );
void SetLanguage(LanguageType eSet) { eInputLanguage = eSet;}
+
+ SwExtTextInput* GetNext() { return static_cast<SwExtTextInput *>(GetNextInRing()); }
+ const SwExtTextInput* GetNext() const { return static_cast<SwExtTextInput const *>(GetNextInRing()); }
+ SwExtTextInput* GetPrev() { return static_cast<SwExtTextInput *>(GetPrevInRing()); }
+ const SwExtTextInput* GetPrev() const { return static_cast<SwExtTextInput const *>(GetPrevInRing()); }
};
#endif // INCLUDED_SW_INC_EXTINPUT_HXX
diff --git a/sw/inc/swcrsr.hxx b/sw/inc/swcrsr.hxx
index 6d306073de26..b195a12f579f 100644
--- a/sw/inc/swcrsr.hxx
+++ b/sw/inc/swcrsr.hxx
@@ -218,6 +218,11 @@ public:
long GetCursorRowSpanOffset() const { return m_nRowSpanOffset; }
+ SwCursor* GetNext() { return dynamic_cast<SwCursor *>(GetNextInRing()); }
+ const SwCursor* GetNext() const { return dynamic_cast<SwCursor const *>(GetNextInRing()); }
+ SwCursor* GetPrev() { return dynamic_cast<SwCursor *>(GetPrevInRing()); }
+ const SwCursor* GetPrev() const { return dynamic_cast<SwCursor const *>(GetPrevInRing()); }
+
DECL_FIXEDMEMPOOL_NEWDEL( SwCursor )
};
@@ -301,6 +306,11 @@ public:
bool NewTableSelection();
void ActualizeSelection( const SwSelBoxes &rBoxes );
+
+ SwTableCursor* GetNext() { return dynamic_cast<SwTableCursor *>(GetNextInRing()); }
+ const SwTableCursor* GetNext() const { return dynamic_cast<SwTableCursor const *>(GetNextInRing()); }
+ SwTableCursor* GetPrev() { return dynamic_cast<SwTableCursor *>(GetPrevInRing()); }
+ const SwTableCursor* GetPrev() const { return dynamic_cast<SwTableCursor const *>(GetPrevInRing()); }
};
#endif
diff --git a/sw/inc/viscrs.hxx b/sw/inc/viscrs.hxx
index e30fd59283f3..902a25314a00 100644
--- a/sw/inc/viscrs.hxx
+++ b/sw/inc/viscrs.hxx
@@ -114,7 +114,7 @@ public:
long* pX = nullptr, long* pY = nullptr );
};
-class SwShellCursor : public virtual SwCursor, public SwSelPaintRects
+class SW_DLLPUBLIC SwShellCursor : public virtual SwCursor, public SwSelPaintRects
{
private:
// Document positions of start/end characters of a SSelection.
@@ -163,6 +163,11 @@ public:
virtual bool IsReadOnlyAvailable() const override;
+ SwShellCursor* GetNext() { return dynamic_cast<SwShellCursor *>(GetNextInRing()); }
+ const SwShellCursor* GetNext() const { return dynamic_cast<SwShellCursor const *>(GetNextInRing()); }
+ SwShellCursor* GetPrev() { return dynamic_cast<SwShellCursor *>(GetPrevInRing()); }
+ const SwShellCursor* GetPrev() const { return dynamic_cast<SwShellCursor const *>(GetPrevInRing()); }
+
DECL_FIXEDMEMPOOL_NEWDEL( SwShellCursor )
};
@@ -199,6 +204,10 @@ public:
// true: Cursor can be set to this position.
virtual bool IsAtValidPos( bool bPoint = true ) const override;
+ SwShellTableCursor* GetNext() { return dynamic_cast<SwShellTableCursor *>(GetNextInRing()); }
+ const SwShellTableCursor* GetNext() const { return dynamic_cast<SwShellTableCursor const *>(GetNextInRing()); }
+ SwShellTableCursor* GetPrev() { return dynamic_cast<SwShellTableCursor *>(GetPrevInRing()); }
+ const SwShellTableCursor* GetPrev() const { return dynamic_cast<SwShellTableCursor const *>(GetPrevInRing()); }
};
#endif // INCLUDED_SW_INC_VISCRS_HXX
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 5c7869a5c331..1158e82afdc8 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -964,8 +964,7 @@ bool SwCursorShell::TestCurrPam(
{
return true; // return without update
}
- } while( m_pCurrentCursor !=
- ( pCmp = dynamic_cast<SwShellCursor*>(pCmp->GetNext()) ) );
+ } while( m_pCurrentCursor != ( pCmp = pCmp->GetNext() ) );
return false;
}
@@ -1219,7 +1218,7 @@ bool SwCursorShell::GoNextCursor()
SET_CURR_SHELL( this );
SwCallLink aLk( *this ); // watch Cursor-Moves; call Link if needed
- m_pCurrentCursor = dynamic_cast<SwShellCursor*>(m_pCurrentCursor->GetNext());
+ m_pCurrentCursor = m_pCurrentCursor->GetNext();
// #i24086#: show also all others
if( !ActionPend() )
@@ -1238,7 +1237,7 @@ bool SwCursorShell::GoPrevCursor()
SET_CURR_SHELL( this );
SwCallLink aLk( *this ); // watch Cursor-Moves; call Link if needed
- m_pCurrentCursor = dynamic_cast<SwShellCursor*>(m_pCurrentCursor->GetPrev());
+ m_pCurrentCursor = m_pCurrentCursor->GetPrev();
// #i24086#: show also all others
if( !ActionPend() )
@@ -1839,11 +1838,11 @@ void SwCursorShell::UpdateCursor( sal_uInt16 eFlags, bool bIdleEnd )
m_pCurrentCursor->SwSelPaintRects::Show();
if( m_pBlockCursor )
{
- SwShellCursor* pNxt = dynamic_cast<SwShellCursor*>(m_pCurrentCursor->GetNext());
+ SwShellCursor* pNxt = m_pCurrentCursor->GetNext();
while( pNxt && pNxt != m_pCurrentCursor )
{
pNxt->SwSelPaintRects::Show();
- pNxt = dynamic_cast<SwShellCursor*>(pNxt->GetNext());
+ pNxt = pNxt->GetNext();
}
}
}
@@ -2023,7 +2022,7 @@ bool SwCursorShell::Pop(PopMode const eDelete)
// the successor becomes the current one
if (m_pStackCursor->GetNext() != m_pStackCursor)
{
- pTmp = dynamic_cast<SwShellCursor*>(m_pStackCursor->GetNext());
+ pTmp = m_pStackCursor->GetNext();
}
if (PopMode::DeleteStack == eDelete)
@@ -2095,7 +2094,7 @@ void SwCursorShell::Combine()
SwShellCursor * pTmp = nullptr;
if (m_pStackCursor->GetNext() != m_pStackCursor)
{
- pTmp = dynamic_cast<SwShellCursor*>(m_pStackCursor->GetNext());
+ pTmp = m_pStackCursor->GetNext();
}
delete m_pCurrentCursor;
m_pCurrentCursor = m_pStackCursor;
diff --git a/sw/source/core/doc/extinput.cxx b/sw/source/core/doc/extinput.cxx
index 8eb26bacd64c..8a34a9011bf9 100644
--- a/sw/source/core/doc/extinput.cxx
+++ b/sw/source/core/doc/extinput.cxx
@@ -270,7 +270,7 @@ SwExtTextInput* SwDoc::GetExtTextInput( const SwNode& rNd,
if( mpExtInputRing )
{
sal_uLong nNdIdx = rNd.GetIndex();
- SwExtTextInput* pTmp = static_cast<SwExtTextInput*>(mpExtInputRing);
+ SwExtTextInput* pTmp = mpExtInputRing;
do {
sal_uLong nPt = pTmp->GetPoint()->nNode.GetIndex(),
nMk = pTmp->GetMark()->nNode.GetIndex();
@@ -290,7 +290,7 @@ SwExtTextInput* SwDoc::GetExtTextInput( const SwNode& rNd,
pRet = pTmp;
break;
}
- pTmp = static_cast<SwExtTextInput*>(pTmp->GetNext());
+ pTmp = pTmp->GetNext();
} while ( pTmp!=mpExtInputRing );
}
return pRet;
@@ -300,7 +300,7 @@ SwExtTextInput* SwDoc::GetExtTextInput() const
{
OSL_ENSURE( !mpExtInputRing || !mpExtInputRing->IsMultiSelection(),
"more than one InputEngine available" );
- return static_cast<SwExtTextInput*>(mpExtInputRing);
+ return mpExtInputRing;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx
index 856870f2cf4f..8f1519fcb768 100644
--- a/sw/source/core/frmedt/fefly1.cxx
+++ b/sw/source/core/frmedt/fefly1.cxx
@@ -841,7 +841,7 @@ void SwFEShell::Insert( const OUString& rGrfName, const OUString& rFltName,
nullptr, nullptr );
OSL_ENSURE(pFormat, "IDocumentContentOperations::InsertGraphic failed.");
- pCursor = dynamic_cast<SwShellCursor*>(pCursor->GetNext());
+ pCursor = pCursor->GetNext();
} while( pCursor != pStartCursor );
EndAllAction();
diff --git a/sw/source/core/unocore/unocrsr.cxx b/sw/source/core/unocore/unocrsr.cxx
index da347c2801b9..56dd18792dca 100644
--- a/sw/source/core/unocore/unocrsr.cxx
+++ b/sw/source/core/unocore/unocrsr.cxx
@@ -47,7 +47,7 @@ SwUnoCursor::~SwUnoCursor()
// delete the whole ring
while( GetNext() != this )
{
- Ring* pNxt = GetNext();
+ Ring* pNxt = GetNextInRing();
pNxt->MoveTo(nullptr); // remove from chain
delete pNxt; // and delete
}
diff --git a/sw/source/core/unocore/unoobj.cxx b/sw/source/core/unocore/unoobj.cxx
index c66685d35f59..c1c91b365bf0 100644
--- a/sw/source/core/unocore/unoobj.cxx
+++ b/sw/source/core/unocore/unoobj.cxx
@@ -747,7 +747,7 @@ void SwXTextCursor::DeleteAndInsert(const OUString& rText,
SwUnoCursorHelper::SelectPam(*pUnoCursor, true);
pCurrent->Left(rText.getLength());
}
- pCurrent = static_cast<SwCursor*>(pCurrent->GetNext());
+ pCurrent = pCurrent->GetNext();
} while (pCurrent != pUnoCursor);
pDoc->GetIDocumentUndoRedo().EndUndo(SwUndoId::INSERT, nullptr);
}
diff --git a/sw/source/core/view/vprint.cxx b/sw/source/core/view/vprint.cxx
index 08a69f624dd6..ebae2c55c8f0 100644
--- a/sw/source/core/view/vprint.cxx
+++ b/sw/source/core/view/vprint.cxx
@@ -346,10 +346,10 @@ void SwViewShell::FillPrtDoc( SwDoc *pPrtDoc, const SfxPrinter* pPrt)
pPrtDoc->ReplaceStyles( *GetDoc() );
SwShellCursor *pActCursor = pFESh->GetCursor_();
- SwShellCursor *pFirstCursor = dynamic_cast<SwShellCursor*>(pActCursor->GetNext());
+ SwShellCursor *pFirstCursor = pActCursor->GetNext();
if( !pActCursor->HasMark() ) // with a multi-selection the current cursor might be empty
{
- pActCursor = dynamic_cast<SwShellCursor*>(pActCursor->GetPrev());
+ pActCursor = pActCursor->GetPrev();
}
// Y-position of the first selection