diff options
author | Jan-Marek Glogowski <glogow@fbihome.de> | 2014-11-11 16:52:48 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-01-22 09:11:42 +0000 |
commit | 89f01955e2594bfba6f1d148b7a48dfe3aff5e60 (patch) | |
tree | 8c543f756f0fa6cf029744e3d4b8e371b1e35c9d | |
parent | f2be1cf932c1306871ca4704d51f3849b439d28c (diff) |
Merge common code of sw format lists
Moves the common code of Fmt based lists and simple vector lists
into two intermediate template classes, of which one provides
the SwFmtsBase interface.
Change-Id: If963c19293584654a3d17438221e3fca8bdfd4f9
Reviewed-on: https://gerrit.libreoffice.org/13448
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sw/inc/docary.hxx | 162 | ||||
-rw-r--r-- | sw/source/core/doc/doc.cxx | 12 | ||||
-rw-r--r-- | sw/source/core/doc/docfmt.cxx | 36 | ||||
-rw-r--r-- | sw/source/core/doc/docnew.cxx | 68 | ||||
-rw-r--r-- | sw/source/core/docnode/section.cxx | 17 | ||||
-rw-r--r-- | sw/source/core/fields/fldbas.cxx | 12 | ||||
-rw-r--r-- | sw/source/core/tox/tox.cxx | 12 | ||||
-rw-r--r-- | sw/source/core/undo/unattr.cxx | 16 | ||||
-rw-r--r-- | sw/source/core/undo/undobj1.cxx | 4 |
9 files changed, 103 insertions, 236 deletions
diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx index bd96c3caece7..4f40a228b0e2 100644 --- a/sw/inc/docary.hxx +++ b/sw/inc/docary.hxx @@ -25,10 +25,6 @@ #include <algorithm> #include <o3tl/sorted_vector.hxx> -class SwFieldType; -class SwTOXType; -class SwUndo; -class SwNumRule; class SwRangeRedline; class SwExtraRedline; class SwUnoCrsr; @@ -47,6 +43,9 @@ namespace com { namespace sun { namespace star { namespace i18n { #include <fmtcol.hxx> #include <frmfmt.hxx> #include <section.hxx> +#include <fldbas.hxx> +#include <tox.hxx> +#include <numrule.hxx> /** provides some methods for generic operations on lists that contain SwFmt* subclasses. */ @@ -54,114 +53,127 @@ class SwFmtsBase { public: virtual size_t GetFmtCount() const = 0; - virtual const SwFmt* GetFmt(size_t idx) const = 0; - virtual SwFmt* GetFmt(size_t idx) = 0; - virtual ~SwFmtsBase() = 0; + virtual SwFmt* GetFmt(size_t idx) const = 0; + virtual ~SwFmtsBase() {}; }; -class SwGrfFmtColls : public SwFmtsBase +template<typename Value> +class SwVectorModifyBase : public std::vector<Value> { +public: + typedef typename std::vector<Value>::const_iterator const_iterator; + +protected: + enum class DestructorPolicy { + KeepElements, + FreeElements, + }; + private: - std::vector<SwGrfFmtColl*> mvColls; + const DestructorPolicy mPolicy; + +protected: + // default destructor deletes all contained elements + SwVectorModifyBase(DestructorPolicy policy = DestructorPolicy::FreeElements) + : mPolicy(policy) {} public: - virtual size_t GetFmtCount() const SAL_OVERRIDE { return size(); } - virtual const SwGrfFmtColl* GetFmt(size_t idx) const SAL_OVERRIDE { return operator[](idx); } - virtual SwGrfFmtColl* GetFmt(size_t idx) SAL_OVERRIDE { return operator[](idx); } - size_t size() const { return mvColls.size(); } - SwGrfFmtColl *operator[](size_t idx) const { return mvColls[idx]; } - void push_back(SwGrfFmtColl* pColl) { mvColls.push_back(pColl); } - void DeleteAndDestroy(int nStartIdx, int nEndIdx); - sal_uInt16 GetPos(const SwGrfFmtColl* pFmt) const; - /// free's any remaining child objects - virtual ~SwGrfFmtColls() {} + using std::vector<Value>::begin; + using std::vector<Value>::end; + + // free any remaining child objects based on mPolicy + virtual ~SwVectorModifyBase() + { + if (mPolicy == DestructorPolicy::FreeElements) + for(const_iterator it = begin(); it != end(); ++it) + delete *it; + } + + void DeleteAndDestroy(int aStartIdx, int aEndIdx) + { + if (aEndIdx < aStartIdx) + return; + for (const_iterator it = begin() + aStartIdx; + it != begin() + aEndIdx; ++it) + delete *it; + this->erase( begin() + aStartIdx, begin() + aEndIdx); + } + + sal_uInt16 GetPos(Value const& p) const + { + const_iterator const it = std::find(begin(), end(), p); + return it == end() ? USHRT_MAX : it - begin(); + } + + bool Contains(Value const& p) const + { return std::find(begin(), end(), p) != end(); } + + void dumpAsXml(xmlTextWriterPtr) const {}; }; -/// stupid base class to work around MSVC dllexport mess -class SAL_DLLPUBLIC_TEMPLATE SwFrmFmts_Base : public std::vector<SwFrmFmt*> {}; +template<typename Value> +class SwFmtsModifyBase : public SwVectorModifyBase<Value>, public SwFmtsBase +{ +protected: + SwFmtsModifyBase(typename SwVectorModifyBase<Value>::DestructorPolicy + policy = SwVectorModifyBase<Value>::DestructorPolicy::FreeElements) + : SwVectorModifyBase<Value>(policy) {} + +public: + virtual size_t GetFmtCount() const SAL_OVERRIDE + { return std::vector<Value>::size(); } + + virtual Value GetFmt(size_t idx) const SAL_OVERRIDE + { return std::vector<Value>::operator[](idx); } + + inline sal_uInt16 GetPos(const SwFmt *p) const + { return SwVectorModifyBase<Value>::GetPos( static_cast<Value>( const_cast<SwFmt*>( p ) ) ); } + inline bool Contains(const SwFmt *p) const + { return SwVectorModifyBase<Value>::Contains( static_cast<Value>( const_cast<SwFmt*>( p ) ) ); } +}; + +class SwGrfFmtColls : public SwFmtsModifyBase<SwGrfFmtColl*> +{ +public: + SwGrfFmtColls() : SwFmtsModifyBase( DestructorPolicy::KeepElements ) {} +}; /// Specific frame formats (frames, DrawObjects). -class SW_DLLPUBLIC SwFrmFmts : public SwFrmFmts_Base, public SwFmtsBase +class SW_DLLPUBLIC SwFrmFmts : public SwFmtsModifyBase<SwFrmFmt*> { public: - virtual size_t GetFmtCount() const SAL_OVERRIDE { return size(); } - virtual const SwFrmFmt* GetFmt(size_t idx) const SAL_OVERRIDE { return operator[](idx); } - virtual SwFrmFmt* GetFmt(size_t idx) SAL_OVERRIDE { return operator[](idx); } - sal_uInt16 GetPos(const SwFrmFmt* pFmt) const; - bool Contains(const SwFrmFmt* pFmt) const; void dumpAsXml(xmlTextWriterPtr w, const char* pName) const; - /// free's any remaining child objects - virtual ~SwFrmFmts(); }; -class SwCharFmts : public std::vector<SwCharFmt*>, public SwFmtsBase +class SwCharFmts : public SwFmtsModifyBase<SwCharFmt*> { public: - virtual size_t GetFmtCount() const SAL_OVERRIDE { return size(); } - virtual const SwCharFmt* GetFmt(size_t idx) const SAL_OVERRIDE { return operator[](idx); } - virtual SwCharFmt* GetFmt(size_t idx) SAL_OVERRIDE { return operator[](idx); } - sal_uInt16 GetPos(const SwCharFmt* pFmt) const; - bool Contains(const SwCharFmt* pFmt) const; void dumpAsXml(xmlTextWriterPtr w) const; - /// free's any remaining child objects - virtual ~SwCharFmts(); }; -class SwTxtFmtColls : public std::vector<SwTxtFmtColl*>, public SwFmtsBase +class SwTxtFmtColls : public SwFmtsModifyBase<SwTxtFmtColl*> { public: - virtual size_t GetFmtCount() const SAL_OVERRIDE { return size(); } - virtual const SwTxtFmtColl* GetFmt(size_t idx) const SAL_OVERRIDE { return operator[](idx); } - virtual SwTxtFmtColl* GetFmt(size_t idx) SAL_OVERRIDE { return operator[](idx); } - sal_uInt16 GetPos(const SwTxtFmtColl* pFmt) const; + SwTxtFmtColls() : SwFmtsModifyBase( DestructorPolicy::KeepElements ) {} void dumpAsXml(xmlTextWriterPtr w) const; - virtual ~SwTxtFmtColls() {} }; /// Array of Undo-history. -class SW_DLLPUBLIC SwSectionFmts : public std::vector<SwSectionFmt*>, public SwFmtsBase +class SW_DLLPUBLIC SwSectionFmts : public SwFmtsModifyBase<SwSectionFmt*> { public: - virtual size_t GetFmtCount() const SAL_OVERRIDE { return size(); } - virtual const SwSectionFmt* GetFmt(size_t idx) const SAL_OVERRIDE { return operator[](idx); } - virtual SwSectionFmt* GetFmt(size_t idx) SAL_OVERRIDE { return operator[](idx); } - sal_uInt16 GetPos(const SwSectionFmt* pFmt) const; - bool Contains(const SwSectionFmt* pFmt) const; void dumpAsXml(xmlTextWriterPtr w) const; - /// free's any remaining child objects - virtual ~SwSectionFmts(); }; -class SwFldTypes : public std::vector<SwFieldType*> { +class SwFldTypes : public SwVectorModifyBase<SwFieldType*> { public: - /// the destructor will free all objects still in the vector - ~SwFldTypes(); - sal_uInt16 GetPos(const SwFieldType* pFieldType) const; void dumpAsXml(xmlTextWriterPtr w) const; }; -class SwTOXTypes { -private: - typedef std::vector<SwTOXType*> _SwTOXTypes; - _SwTOXTypes items; -public: - /// the destructor will free all objects still in the vector - ~SwTOXTypes(); - sal_uInt16 GetPos(const SwTOXType* pTOXType) const; - size_t size() const { return items.size(); }; - SwTOXType* operator[] (size_t n) { return items[n]; }; - const SwTOXType* operator[] (size_t n) const { return items[n]; }; - void push_back ( SwTOXType* value) { items.push_back(value); }; - void clear() { items.clear(); }; - _SwTOXTypes::const_iterator begin() const { return items.begin(); }; - _SwTOXTypes::const_iterator end() const { return items.end(); }; -}; +class SwTOXTypes : public SwVectorModifyBase<SwTOXType*> {}; -class SW_DLLPUBLIC SwNumRuleTbl : public std::vector<SwNumRule*> { +class SW_DLLPUBLIC SwNumRuleTbl : public SwVectorModifyBase<SwNumRule*> { public: - /// the destructor will free all objects still in the vector - ~SwNumRuleTbl(); - sal_uInt16 GetPos(const SwNumRule* pRule) const; void dumpAsXml(xmlTextWriterPtr w) const; }; diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx index c81800b51ae3..034c1222cb2b 100644 --- a/sw/source/core/doc/doc.cxx +++ b/sw/source/core/doc/doc.cxx @@ -1731,16 +1731,4 @@ SwDoc::GetVbaEventProcessor() return mxVbaEvents; } -sal_uInt16 SwNumRuleTbl::GetPos(const SwNumRule* pRule) const -{ - const_iterator it = std::find(begin(), end(), pRule); - return it == end() ? USHRT_MAX : it - begin(); -} - -SwNumRuleTbl::~SwNumRuleTbl() -{ - for(const_iterator it = begin(); it != end(); ++it) - delete *it; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index d965a05dcd9e..68c28eac66e0 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -2008,40 +2008,4 @@ namespace docfunc } } -SwFmtsBase::~SwFmtsBase() {} - -sal_uInt16 SwFrmFmts::GetPos(const SwFrmFmt* p) const -{ - const_iterator it = std::find(begin(), end(), p); - return it == end() ? USHRT_MAX : it - begin(); -} - -bool SwFrmFmts::Contains(const SwFrmFmt* p) const -{ - return std::find(begin(), end(), p) != end(); -} - -SwFrmFmts::~SwFrmFmts() -{ - for(const_iterator it = begin(); it != end(); ++it) - delete *it; -} - -sal_uInt16 SwCharFmts::GetPos(const SwCharFmt* p) const -{ - const_iterator it = std::find(begin(), end(), p); - return it == end() ? USHRT_MAX : it - begin(); -} - -bool SwCharFmts::Contains(const SwCharFmt* p) const -{ - return std::find(begin(), end(), p) != end(); -} - -SwCharFmts::~SwCharFmts() -{ - for(const_iterator it = begin(); it != end(); ++it) - delete *it; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx index 54e486a42cd2..c2f56aa3ca89 100644 --- a/sw/source/core/doc/docnew.cxx +++ b/sw/source/core/doc/docnew.cxx @@ -377,36 +377,6 @@ SwDoc::SwDoc() getIDocumentState().ResetModified(); } -static void DeleteAndDestroy(SwFrmFmts& rFmts, int aStartIdx, int aEndIdx) -{ - if (aEndIdx < aStartIdx) - return; - for( SwFrmFmts::const_iterator it = rFmts.begin() + aStartIdx; - it != rFmts.begin() + aEndIdx; ++it ) - delete *it; - rFmts.erase( rFmts.begin() + aStartIdx, rFmts.begin() + aEndIdx); -} - -static void DeleteAndDestroy(SwTxtFmtColls& rFmts, int aStartIdx, int aEndIdx) -{ - if (aEndIdx < aStartIdx) - return; - for( SwTxtFmtColls::const_iterator it = rFmts.begin() + aStartIdx; - it != rFmts.begin() + aEndIdx; ++it ) - delete *it; - rFmts.erase( rFmts.begin() + aStartIdx, rFmts.begin() + aEndIdx); -} - -static void DeleteAndDestroy(SwCharFmts& rFmts, int aStartIdx, int aEndIdx) -{ - if (aEndIdx < aStartIdx) - return; - for( SwCharFmts::const_iterator it = rFmts.begin() + aStartIdx; - it != rFmts.begin() + aEndIdx; ++it ) - delete *it; - rFmts.erase( rFmts.begin() + aStartIdx, rFmts.begin() + aEndIdx); -} - /** * Speciality: a member of the class SwDoc is located at * position 0 in the array of the Format and GDI objects. @@ -539,8 +509,8 @@ SwDoc::~SwDoc() // array, we should delete it as the last. With this we avoid // reparenting the Formats all the time! if( 2 < mpTxtFmtCollTbl->size() ) - DeleteAndDestroy(*mpTxtFmtCollTbl, 2, mpTxtFmtCollTbl->size()); - DeleteAndDestroy(*mpTxtFmtCollTbl, 1, mpTxtFmtCollTbl->size()); + mpTxtFmtCollTbl->DeleteAndDestroy(2, mpTxtFmtCollTbl->size()); + mpTxtFmtCollTbl->DeleteAndDestroy(1, mpTxtFmtCollTbl->size()); delete mpTxtFmtCollTbl; OSL_ENSURE( mpDfltGrfFmtColl == (*mpGrfFmtCollTbl)[0], @@ -570,7 +540,7 @@ SwDoc::~SwDoc() // All Flys need to be destroyed before the Drawing Model, // because Flys can still contain DrawContacts, when no // Layout could be constructed due to a read error. - DeleteAndDestroy( *mpSpzFrmFmtTbl, 0, mpSpzFrmFmtTbl->size() ); + mpSpzFrmFmtTbl->DeleteAndDestroy( 0, mpSpzFrmFmtTbl->size() ); // Only now destroy the Model, the drawing objects - which are also // contained in the Undo - need to remove their attributes from the @@ -732,20 +702,20 @@ void SwDoc::ClearDoc() // array, we should delete it as the last. With this we avoid // reparenting the Formats all the time! if( 2 < mpTxtFmtCollTbl->size() ) - DeleteAndDestroy(*mpTxtFmtCollTbl, 2, mpTxtFmtCollTbl->size()); - DeleteAndDestroy(*mpTxtFmtCollTbl, 1, mpTxtFmtCollTbl->size()); + mpTxtFmtCollTbl->DeleteAndDestroy(2, mpTxtFmtCollTbl->size()); + mpTxtFmtCollTbl->DeleteAndDestroy(1, mpTxtFmtCollTbl->size()); mpGrfFmtCollTbl->DeleteAndDestroy(1, mpGrfFmtCollTbl->size()); - DeleteAndDestroy(*mpCharFmtTbl, 1, mpCharFmtTbl->size()); + mpCharFmtTbl->DeleteAndDestroy(1, mpCharFmtTbl->size()); if( getIDocumentLayoutAccess().GetCurrentViewShell() ) { // search the FrameFormat of the root frm. This is not allowed to delete mpFrmFmtTbl->erase( std::find( mpFrmFmtTbl->begin(), mpFrmFmtTbl->end(), getIDocumentLayoutAccess().GetCurrentViewShell()->GetLayout()->GetFmt() ) ); - DeleteAndDestroy(*mpFrmFmtTbl, 1, mpFrmFmtTbl->size()); + mpFrmFmtTbl->DeleteAndDestroy(1, mpFrmFmtTbl->size()); mpFrmFmtTbl->push_back( getIDocumentLayoutAccess().GetCurrentViewShell()->GetLayout()->GetFmt() ); } else - DeleteAndDestroy(*mpFrmFmtTbl, 1, mpFrmFmtTbl->size()); + mpFrmFmtTbl->DeleteAndDestroy(1, mpFrmFmtTbl->size()); mxForbiddenCharsTable.clear(); @@ -1156,26 +1126,4 @@ else return aStartAppendIndex; } -sal_uInt16 SwTxtFmtColls::GetPos(const SwTxtFmtColl* p) const -{ - const_iterator it = std::find(begin(), end(), p); - return it == end() ? USHRT_MAX : it - begin(); -} - -void SwGrfFmtColls::DeleteAndDestroy(int nStartIdx, int nEndIdx) -{ - if (nEndIdx < nStartIdx) - return; - for( std::vector<SwGrfFmtColl*>::const_iterator it = mvColls.begin() + nStartIdx; - it != mvColls.begin() + nEndIdx; ++it ) - delete *it; - mvColls.erase( mvColls.begin() + nStartIdx, mvColls.begin() + nEndIdx); -} - -sal_uInt16 SwGrfFmtColls::GetPos(const SwGrfFmtColl* p) const -{ - std::vector<SwGrfFmtColl*>::const_iterator it = std::find(mvColls.begin(), mvColls.end(), p); - return it == mvColls.end() ? USHRT_MAX : it - mvColls.begin(); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/docnode/section.cxx b/sw/source/core/docnode/section.cxx index 89349a1293d3..e1a90b723067 100644 --- a/sw/source/core/docnode/section.cxx +++ b/sw/source/core/docnode/section.cxx @@ -1589,21 +1589,4 @@ bool SwIntrnlSectRefLink::IsInRange( sal_uLong nSttNd, sal_uLong nEndNd, pSttNd->EndOfSectionIndex() < nEndNd; } -sal_uInt16 SwSectionFmts::GetPos(const SwSectionFmt* p) const -{ - const_iterator it = std::find(begin(), end(), p); - return it == end() ? USHRT_MAX : it - begin(); -} - -bool SwSectionFmts::Contains(const SwSectionFmt* p) const -{ - return std::find(begin(), end(), p) != end(); -} - -SwSectionFmts::~SwSectionFmts() -{ - for(const_iterator it = begin(); it != end(); ++it) - delete *it; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/fields/fldbas.cxx b/sw/source/core/fields/fldbas.cxx index cf40aafebd50..f9114ac9ca43 100644 --- a/sw/source/core/fields/fldbas.cxx +++ b/sw/source/core/fields/fldbas.cxx @@ -747,16 +747,4 @@ bool SwField::IsClickable() const return false; } -sal_uInt16 SwFldTypes::GetPos(const SwFieldType* pFieldType) const -{ - const_iterator it = std::find(begin(), end(), pFieldType); - return it == end() ? USHRT_MAX : it - begin(); -} - -SwFldTypes::~SwFldTypes() -{ - for(const_iterator it = begin(); it != end(); ++it) - delete *it; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/tox/tox.cxx b/sw/source/core/tox/tox.cxx index 146ce53b974c..63faef10089d 100644 --- a/sw/source/core/tox/tox.cxx +++ b/sw/source/core/tox/tox.cxx @@ -858,16 +858,4 @@ const SwFormTokens& SwForm::GetPattern(sal_uInt16 nLevel) const return aPattern[nLevel]; } -sal_uInt16 SwTOXTypes::GetPos(const SwTOXType* pTOXType) const -{ - _SwTOXTypes::const_iterator it = std::find(items.begin(), items.end(), pTOXType); - return it == items.end() ? USHRT_MAX : it - items.begin(); -} - -SwTOXTypes::~SwTOXTypes() -{ - for(_SwTOXTypes::const_iterator it = items.begin(); it != items.end(); ++it) - delete *it; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/undo/unattr.cxx b/sw/source/core/undo/unattr.cxx index f0d36ce59119..9069ffd4cd3f 100644 --- a/sw/source/core/undo/unattr.cxx +++ b/sw/source/core/undo/unattr.cxx @@ -150,7 +150,7 @@ void SwUndoFmtAttr::Init() else if ( RES_FRMFMT == m_nFmtWhich ) { SwDoc* pDoc = m_pFmt->GetDoc(); - if ( pDoc->GetTblFrmFmts()->Contains(static_cast<const SwFrmFmt*>(m_pFmt))) + if ( pDoc->GetTblFrmFmts()->Contains( m_pFmt )) { // Table Format: save table position, table formats are volatile! SwTable * pTbl = SwIterator<SwTable,SwFmt>::FirstElement( *m_pFmt ); @@ -160,7 +160,7 @@ void SwUndoFmtAttr::Init() ->FindTableNode()->GetIndex(); } } - else if ( pDoc->GetSections().Contains(static_cast<const SwSectionFmt*>(m_pFmt))) + else if ( pDoc->GetSections().Contains( m_pFmt )) { m_nNodeIndex = m_pFmt->GetCntnt().GetCntntIdx()->GetIndex(); } @@ -237,8 +237,7 @@ bool SwUndoFmtAttr::IsFmtInDoc( SwDoc* pDoc ) switch ( m_nFmtWhich ) { case RES_TXTFMTCOLL: - nPos = pDoc->GetTxtFmtColls()->GetPos( - static_cast<const SwTxtFmtColl*>(m_pFmt) ); + nPos = pDoc->GetTxtFmtColls()->GetPos( m_pFmt ); break; case RES_GRFFMTCOLL: @@ -247,8 +246,7 @@ bool SwUndoFmtAttr::IsFmtInDoc( SwDoc* pDoc ) break; case RES_CHRFMT: - nPos = pDoc->GetCharFmts()->GetPos( - static_cast<SwCharFmt*>(m_pFmt) ); + nPos = pDoc->GetCharFmts()->GetPos( m_pFmt ); break; case RES_FRMFMT: @@ -289,12 +287,10 @@ bool SwUndoFmtAttr::IsFmtInDoc( SwDoc* pDoc ) // no break! case RES_DRAWFRMFMT: case RES_FLYFRMFMT: - nPos = pDoc->GetSpzFrmFmts()->GetPos( - static_cast<const SwFrmFmt*>(m_pFmt) ); + nPos = pDoc->GetSpzFrmFmts()->GetPos( m_pFmt ); if ( USHRT_MAX == nPos ) { - nPos = pDoc->GetFrmFmts()->GetPos( - static_cast<const SwFrmFmt*>(m_pFmt) ); + nPos = pDoc->GetFrmFmts()->GetPos( m_pFmt ); } break; } diff --git a/sw/source/core/undo/undobj1.cxx b/sw/source/core/undo/undobj1.cxx index 2c5485d776c4..d44c2a1e8aae 100644 --- a/sw/source/core/undo/undobj1.cxx +++ b/sw/source/core/undo/undobj1.cxx @@ -537,7 +537,7 @@ void SwUndoSetFlyFmt::UndoImpl(::sw::UndoRedoContext & rContext) SwDoc & rDoc = rContext.GetDoc(); // Is the new Format still existent? - if( USHRT_MAX != rDoc.GetFrmFmts()->GetPos( (const SwFrmFmt*)pOldFmt ) ) + if( USHRT_MAX != rDoc.GetFrmFmts()->GetPos( pOldFmt ) ) { if( bAnchorChgd ) pFrmFmt->DelFrms(); @@ -610,7 +610,7 @@ void SwUndoSetFlyFmt::RedoImpl(::sw::UndoRedoContext & rContext) SwDoc & rDoc = rContext.GetDoc(); // Is the new Format still existent? - if( USHRT_MAX != rDoc.GetFrmFmts()->GetPos( (const SwFrmFmt*)pNewFmt ) ) + if( USHRT_MAX != rDoc.GetFrmFmts()->GetPos( pNewFmt ) ) { if( bAnchorChgd ) |