diff options
Diffstat (limited to 'sw/source')
277 files changed, 5457 insertions, 5488 deletions
diff --git a/sw/source/core/access/accdoc.cxx b/sw/source/core/access/accdoc.cxx index 4d9fb4d60e2e..08de7edba46f 100644 --- a/sw/source/core/access/accdoc.cxx +++ b/sw/source/core/access/accdoc.cxx @@ -66,10 +66,10 @@ using lang::IndexOutOfBoundsException; // SwAccessiblePreview // -SwAccessibleDocumentBase::SwAccessibleDocumentBase ( SwAccessibleMap* pInitMap ) : - SwAccessibleContext( pInitMap, AccessibleRole::DOCUMENT, - pInitMap->GetShell()->getIDocumentLayoutAccess()->GetRootFrm() ), - mxParent( pInitMap->GetShell()->GetWin()->GetAccessibleParentWindow()->GetAccessible() ), +SwAccessibleDocumentBase::SwAccessibleDocumentBase ( SwAccessibleMap *_pMap ) : + SwAccessibleContext( _pMap, AccessibleRole::DOCUMENT, + _pMap->GetShell()->GetLayout() ),//swmod 071107//swmod 071225 + mxParent( _pMap->GetShell()->GetWin()->GetAccessibleParentWindow()->GetAccessible() ), mpChildWin( 0 ) { } diff --git a/sw/source/core/access/accframebase.cxx b/sw/source/core/access/accframebase.cxx index 221c7e1650a2..91cbe0b9324f 100644 --- a/sw/source/core/access/accframebase.cxx +++ b/sw/source/core/access/accframebase.cxx @@ -216,7 +216,7 @@ SwAccessibleFrameBase::~SwAccessibleFrameBase() { } -void SwAccessibleFrameBase::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwAccessibleFrameBase::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ; const SwFlyFrm *pFlyFrm = static_cast< const SwFlyFrm * >( GetFrm() ); @@ -230,13 +230,13 @@ void SwAccessibleFrameBase::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) OUString sOldName( GetName() ); ASSERT( !pOld || - static_cast < SwStringMsgPoolItem * >( pOld )->GetString() == String( sOldName ), + static_cast < const SwStringMsgPoolItem * >( pOld )->GetString() == String( sOldName ), "invalid old name" ); const String& rNewName = pFrmFmt->GetName(); SetName( rNewName ); ASSERT( !pNew || - static_cast < SwStringMsgPoolItem * >( pNew )->GetString() == rNewName, + static_cast < const SwStringMsgPoolItem * >( pNew )->GetString() == rNewName, "invalid new name" ); if( sOldName != GetName() ) @@ -250,18 +250,20 @@ void SwAccessibleFrameBase::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) } break; case RES_OBJECTDYING: + // mba: it seems that this class intentionally does not call code in base class SwClient if( GetRegisteredIn() == - static_cast< SwModify *>( static_cast< SwPtrMsgPoolItem * >( pOld )->pObject ) ) - pRegisteredIn->Remove( this ); + static_cast< SwModify *>( static_cast< const SwPtrMsgPoolItem * >( pOld )->pObject ) ) + GetRegisteredInNonConst()->Remove( this ); break; case RES_FMT_CHG: - if( static_cast< SwFmtChg * >(pNew)->pChangedFmt == GetRegisteredIn() && - static_cast< SwFmtChg * >(pOld)->pChangedFmt->IsFmtInDTOR() ) - pRegisteredIn->Remove( this ); + if( static_cast< const SwFmtChg * >(pNew)->pChangedFmt == GetRegisteredIn() && + static_cast< const SwFmtChg * >(pOld)->pChangedFmt->IsFmtInDTOR() ) + GetRegisteredInNonConst()->Remove( this ); break; + default: - SwClient::Modify( pOld, pNew ); + // mba: former call to base class method removed as it is meant to handle only RES_OBJECTDYING break; } } @@ -271,7 +273,7 @@ void SwAccessibleFrameBase::Dispose( sal_Bool bRecursive ) vos::OGuard aGuard(Application::GetSolarMutex()); if( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); SwAccessibleContext::Dispose( bRecursive ); } diff --git a/sw/source/core/access/accframebase.hxx b/sw/source/core/access/accframebase.hxx index faa4bb492697..551f8b452621 100644 --- a/sw/source/core/access/accframebase.hxx +++ b/sw/source/core/access/accframebase.hxx @@ -51,6 +51,7 @@ protected: virtual void _InvalidateFocus(); virtual ~SwAccessibleFrameBase(); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); public: @@ -60,8 +61,6 @@ public: virtual sal_Bool HasCursor(); // required by map to remember that object - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); - static sal_uInt8 GetNodeType( const SwFlyFrm *pFlyFrm ); // The object is not visible an longer and should be destroyed diff --git a/sw/source/core/access/accfrmobj.cxx b/sw/source/core/access/accfrmobj.cxx index 47b4007c1496..66f41e2d7ec1 100644 --- a/sw/source/core/access/accfrmobj.cxx +++ b/sw/source/core/access/accfrmobj.cxx @@ -356,7 +356,7 @@ const SwFrm* SwAccessibleChild::GetParent( const sal_Bool bInPagePreview ) const if( bInPagePreview ) pParent = pFly->FindPageFrm(); else - pParent = pFly->FindRootFrm(); + pParent = pFly->getRootFrm(); } } else @@ -392,7 +392,7 @@ const SwFrm* SwAccessibleChild::GetParent( const sal_Bool bInPagePreview ) const if( bInPagePreview ) pParent = pContact->GetAnchorFrm()->FindPageFrm(); else - pParent = pContact->GetAnchorFrm()->FindRootFrm(); + pParent = pContact->GetAnchorFrm()->getRootFrm(); } } } diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx index df33bbeaf2fa..6684354ef7ac 100644 --- a/sw/source/core/access/accmap.cxx +++ b/sw/source/core/access/accmap.cxx @@ -68,14 +68,12 @@ #include <com/sun/star/accessibility/AccessibleEventId.hpp> #include <com/sun/star/accessibility/AccessibleStateType.hpp> #include <cppuhelper/implbase1.hxx> -// OD 15.01.2003 #103492# #include <pagepreviewlayout.hxx> -// --> OD 2005-12-13 #i27301# #include <pam.hxx> #include <ndtxt.hxx> -// <-- #include <dflyobj.hxx> #include <prevwpage.hxx> +#include <switerator.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::accessibility; @@ -2722,15 +2720,8 @@ SwAccessibleSelectedParas_Impl* SwAccessibleMap::_BuildSelectedParas() if ( pTxtNode ) { // loop on all text frames registered at the text node. - SwClientIter aIter( *pTxtNode ); - for( SwFrm* pFrm = (SwFrm*)aIter.First( TYPE(SwFrm) ); - pFrm; - pFrm = (SwFrm*)aIter.Next() ) - { - ASSERT( dynamic_cast<SwTxtFrm*>(pFrm), - "<SwAccessibleMap::_BuildSelectedParas()> - unexpected frame type" ); - SwTxtFrm* pTxtFrm( dynamic_cast<SwTxtFrm*>(pFrm) ); - if ( pTxtFrm ) + SwIterator<SwTxtFrm,SwTxtNode> aIter( *pTxtNode ); + for( SwTxtFrm* pTxtFrm = aIter.First(); pTxtFrm; pTxtFrm = aIter.Next() ) { uno::WeakReference < XAccessible > xWeakAcc; SwAccessibleContextMap_Impl::iterator aMapIter = @@ -2758,7 +2749,6 @@ SwAccessibleSelectedParas_Impl* SwAccessibleMap::_BuildSelectedParas() } } } - } // prepare next turn: get next cursor in ring pCrsr = static_cast<SwPaM*>( pCrsr->GetNext() ); diff --git a/sw/source/core/access/accnotextframe.cxx b/sw/source/core/access/accnotextframe.cxx index fea47cb212e5..8764feff8d74 100644 --- a/sw/source/core/access/accnotextframe.cxx +++ b/sw/source/core/access/accnotextframe.cxx @@ -92,7 +92,7 @@ SwAccessibleNoTextFrame::~SwAccessibleNoTextFrame() { } -void SwAccessibleNoTextFrame::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwAccessibleNoTextFrame::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { const sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ; // --> OD 2009-07-14 #i73249# @@ -112,9 +112,9 @@ void SwAccessibleNoTextFrame::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) case RES_TITLE_CHANGED: { const String& sOldTitle( - dynamic_cast<SwStringMsgPoolItem*>(pOld)->GetString() ); + dynamic_cast<const SwStringMsgPoolItem*>(pOld)->GetString() ); const String& sNewTitle( - dynamic_cast<SwStringMsgPoolItem*>(pNew)->GetString() ); + dynamic_cast<const SwStringMsgPoolItem*>(pNew)->GetString() ); if ( sOldTitle == sNewTitle ) { break; @@ -168,7 +168,7 @@ void SwAccessibleNoTextFrame::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) case RES_FMT_CHG: if( static_cast< SwFmtChg * >(pNew)->pChangedFmt == GetRegisteredIn() && static_cast< SwFmtChg * >(pOld)->pChangedFmt->IsFmtInDTOR() ) - pRegisteredIn->Remove( this ); + GetRegisteredIn()->Remove( this ); break; */ } diff --git a/sw/source/core/access/accnotextframe.hxx b/sw/source/core/access/accnotextframe.hxx index 6e070c6dd864..e07d9ff0ffc0 100644 --- a/sw/source/core/access/accnotextframe.hxx +++ b/sw/source/core/access/accnotextframe.hxx @@ -47,14 +47,14 @@ protected: const SwNoTxtNode *GetNoTxtNode() const; + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); + public: SwAccessibleNoTextFrame( SwAccessibleMap* pInitMap, sal_Int16 nInitRole, const SwFlyFrm *pFlyFrm ); - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); - //===== XAccessibleContext ============================================== // --> OD 2009-07-14 #i73249# diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx index 1a1d7312de02..ec8ab7a7c703 100644 --- a/sw/source/core/access/accpara.cxx +++ b/sw/source/core/access/accpara.cxx @@ -2669,10 +2669,10 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getNumberOfLineWithCaret() } // --> OD 2010-02-19 #i108125# -void SwAccessibleParagraph::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwAccessibleParagraph::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { mpParaChangeTrackInfo->reset(); - SwClient::Modify( pOld, pNew ); + CheckRegistration( pOld, pNew ); } // <-- diff --git a/sw/source/core/access/accpara.hxx b/sw/source/core/access/accpara.hxx index 3d3f0bed687f..440fd08c7ebd 100644 --- a/sw/source/core/access/accpara.hxx +++ b/sw/source/core/access/accpara.hxx @@ -234,6 +234,8 @@ protected: ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew); + public: SwAccessibleParagraph( SwAccessibleMap& rInitMap, @@ -243,10 +245,6 @@ public: virtual sal_Bool HasCursor(); // required by map to remember that object - // --> OD 2010-02-19 #i108125# - virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew); - // <-- - //===== XAccessibleContext ============================================== /// Return this object's description. diff --git a/sw/source/core/access/acctable.cxx b/sw/source/core/access/acctable.cxx index 8114f67ec3f0..fd788574aad7 100644 --- a/sw/source/core/access/acctable.cxx +++ b/sw/source/core/access/acctable.cxx @@ -740,7 +740,7 @@ SwAccessibleTable::~SwAccessibleTable() delete mpTableData; } -void SwAccessibleTable::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwAccessibleTable::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ; const SwTabFrm *pTabFrm = static_cast< const SwTabFrm * >( GetFrm() ); @@ -787,13 +787,14 @@ void SwAccessibleTable::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) break; case RES_OBJECTDYING: + // mba: it seems that this class intentionally does not call code in base class SwClient if( GetRegisteredIn() == - static_cast< SwModify *>( static_cast< SwPtrMsgPoolItem * >( pOld )->pObject ) ) - pRegisteredIn->Remove( this ); + static_cast< SwModify *>( static_cast< const SwPtrMsgPoolItem * >( pOld )->pObject ) ) + GetRegisteredInNonConst()->Remove( this ); break; default: - SwClient::Modify( pOld, pNew ); + // mba: former call to base class method removed as it is meant to handle only RES_OBJECTDYING break; } } @@ -1360,7 +1361,7 @@ void SwAccessibleTable::Dispose( sal_Bool bRecursive ) vos::OGuard aGuard(Application::GetSolarMutex()); if( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); SwAccessibleContext::Dispose( bRecursive ); } @@ -1717,7 +1718,7 @@ SwAccessibleTableData_Impl* SwAccessibleTableColHeaders::CreateNewTableData() } -void SwAccessibleTableColHeaders::Modify( SfxPoolItem * /*pOld*/, SfxPoolItem * /*pNew*/ ) +void SwAccessibleTableColHeaders::Modify( const SfxPoolItem * /*pOld*/, const SfxPoolItem * /*pNew*/ ) { } diff --git a/sw/source/core/access/acctable.hxx b/sw/source/core/access/acctable.hxx index 8bdf2e8b49b2..82141c09bead 100644 --- a/sw/source/core/access/acctable.hxx +++ b/sw/source/core/access/acctable.hxx @@ -89,12 +89,12 @@ protected: // Is table data evailable? sal_Bool HasTableData() const { return (mpTableData != 0); } + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); + public: SwAccessibleTable( SwAccessibleMap* pInitMap, const SwTabFrm* pTableFrm ); - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); - //===== XInterface ====================================================== // (XInterface methods need to be implemented to disambigouate @@ -277,13 +277,12 @@ protected: {} virtual SwAccessibleTableData_Impl* CreateNewTableData(); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); public: SwAccessibleTableColHeaders( SwAccessibleMap *pMap, const SwTabFrm *pTabFrm ); - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); - //===== XInterface ====================================================== virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( diff --git a/sw/source/core/access/acctextframe.cxx b/sw/source/core/access/acctextframe.cxx index 75fc1fdebc0e..c0188c7eb193 100644 --- a/sw/source/core/access/acctextframe.cxx +++ b/sw/source/core/access/acctextframe.cxx @@ -84,7 +84,7 @@ SwAccessibleTextFrame::~SwAccessibleTextFrame() { } -void SwAccessibleTextFrame::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwAccessibleTextFrame::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { const sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ; // --> OD 2009-07-14 #i73249# @@ -103,9 +103,9 @@ void SwAccessibleTextFrame::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) case RES_TITLE_CHANGED: { const String& sOldTitle( - dynamic_cast<SwStringMsgPoolItem*>(pOld)->GetString() ); + dynamic_cast<const SwStringMsgPoolItem*>(pOld)->GetString() ); const String& sNewTitle( - dynamic_cast<SwStringMsgPoolItem*>(pNew)->GetString() ); + dynamic_cast<const SwStringMsgPoolItem*>(pNew)->GetString() ); if ( sOldTitle == sNewTitle ) { break; diff --git a/sw/source/core/access/acctextframe.hxx b/sw/source/core/access/acctextframe.hxx index d6c9a7a74331..a2b891de18e4 100644 --- a/sw/source/core/access/acctextframe.hxx +++ b/sw/source/core/access/acctextframe.hxx @@ -46,13 +46,12 @@ protected: virtual ~SwAccessibleTextFrame(); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); + public: SwAccessibleTextFrame( SwAccessibleMap* pInitMap, const SwFlyFrm* pFlyFrm ); - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); - - //===== XAccessibleContext ============================================== // --> OD 2009-07-14 #i73249# diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx index bbdedfea13d4..6a30ed257d41 100644 --- a/sw/source/core/attr/calbck.cxx +++ b/sw/source/core/attr/calbck.cxx @@ -28,127 +28,121 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - -#include <hintids.hxx> // fuer RES_.. +#include <hintids.hxx> // contains RES_.. IDs #include <frame.hxx> #include <hints.hxx> -#include <swcache.hxx> -#include <swfntcch.hxx> - -#ifdef DBG_UTIL -#include <unotextmarkup.hxx> -#endif +#include <swcache.hxx> // mba: get rid of that dependency +#include <swfntcch.hxx> // mba: get rid of that dependency static SwClientIter* pClientIters = 0; -TYPEINIT0(SwClient); //rtti - -/************************************************************************* -|* SwClient::SwClient(SwModify *) -|* -|* Beschreibung callback.doc V1.14 -|* Ersterstellung VB 20.03.91 -|* Letzte Aenderung MA 20. Mar. 95 -*************************************************************************/ - +TYPEINIT0(SwClient); +/*************************************************************************/ SwClient::SwClient(SwModify *pToRegisterIn) - : pLeft( 0 ), pRight( 0 ), pRegisteredIn( 0 ) + : pLeft( 0 ), pRight( 0 ), pRegisteredIn( 0 ), mbIsAllowedToBeRemovedInModifyCall(false) { +<<<<<<< local +======= bModifyLocked = bInModify = bInDocDTOR = bInCache = sal_False; bInSwFntCache = sal_False; +>>>>>>> other if(pToRegisterIn) + // connect to SwModify pToRegisterIn->Add(this); } -/************************************************************************* -|* SwClient::Modify() -|* -|* Beschreibung callback.doc V1.14 -|* Ersterstellung VB 20.03.91 -|* Letzte Aenderung VB 20.03.91 -*************************************************************************/ - - -void SwClient::Modify( SfxPoolItem *pOld, SfxPoolItem * ) +/*************************************************************************/ +void SwClient::CheckRegistration( const SfxPoolItem* pOld, const SfxPoolItem * ) { + // this method only handles notification about dying SwModify objects if( (!pOld || pOld->Which() != RES_OBJECTDYING) ) return; - SwPtrMsgPoolItem *pDead = (SwPtrMsgPoolItem *)pOld; - if(pDead->pObject == pRegisteredIn) + const SwPtrMsgPoolItem *pDead = static_cast<const SwPtrMsgPoolItem*>(pOld); + if(pDead && pDead->pObject == pRegisteredIn) { - SwModify *pAbove = (SwModify*)pRegisteredIn->GetRegisteredIn(); + // I've got a notification from the object I know + SwModify *pAbove = const_cast<SwModify*>(pRegisteredIn->GetRegisteredIn()); if(pAbove) { + // if the dying object itself was listening at an SwModify, I take over + // adding myself to pAbove will automatically remove me from my current pRegisteredIn pAbove->Add(this); return; } + + // destroy connection pRegisteredIn->Remove(this); } } -/************************************************************************* -|* SwClient::~SwClient() -|* -|* Beschreibung callback.doc V1.14 -|* Ersterstellung VB 20.03.91 -|* Letzte Aenderung MA 25. Jan. 94 -*************************************************************************/ +void SwClient::Modify( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue ) +{ + CheckRegistration( pOldValue, pNewValue ); +} +void SwClient::SwClientNotify( const SwModify&, const SfxHint& ) +{ + +} +//************************************************************************* SwClient::~SwClient() { + DBG_ASSERT( !pRegisteredIn || pRegisteredIn->GetDepends(),"SwModify still known, but Client already disconnected!" ); if( pRegisteredIn && pRegisteredIn->GetDepends() ) + // still connected pRegisteredIn->Remove( this ); - - ASSERT( !IsModifyLocked(), "Modify destroyed but locked." ); } +<<<<<<< local +/*************************************************************************/ +BOOL SwClient::GetInfo( SfxPoolItem& ) const +======= // erfrage vom Client Informationen sal_Bool SwClient::GetInfo( SfxPoolItem& ) const +>>>>>>> other { +<<<<<<< local + return TRUE; // no information here, return TRUE to enable continuation +======= return sal_True; // und weiter +>>>>>>> other } -/************************************************************************* -|* SwModify::SwModify( SwModify * ) -|* -|* Beschreibung Dokument 1.7 -|* Ersterstellung JP 20.11.90 -|* Letzte Aenderung VB 20.03.91 -*************************************************************************/ - -SwModify::SwModify( SwModify *pToRegisterIn ) - : SwClient(pToRegisterIn), pRoot( 0 ) +/*************************************************************************/ +SwModify::SwModify() + : SwClient(0), pRoot(0) { + bModifyLocked = FALSE; + bLockClientList = FALSE; + bInDocDTOR = FALSE; + bInCache = FALSE; + bInSwFntCache = FALSE; } -// @@@ forbidden and not implemented, but needs to be accessible (protected). -SwModify::SwModify( const SwModify & ) - : SwClient( 0 ) +SwModify::SwModify( SwModify *pToRegisterIn ) + : SwClient(pToRegisterIn), pRoot( 0 ) { - OSL_PRECOND(0, "SwModify(const SwModify&): not implemented."); + bModifyLocked = FALSE; + bLockClientList = FALSE; + bInDocDTOR = FALSE; + bInCache = FALSE; + bInSwFntCache = FALSE; } -/************************************************************************* -|* SwModify::~SwModify() -|* -|* Beschreibung Dokument 1.7 -|* Ersterstellung JP 20.11.90 -|* Letzte Aenderung JP 15.04.94 -*************************************************************************/ - - - +/*************************************************************************/ SwModify::~SwModify() { + ASSERT( !IsModifyLocked(), "Modify destroyed but locked." ); + if ( IsInCache() ) SwFrm::GetCache().Delete( this ); @@ -157,44 +151,40 @@ SwModify::~SwModify() if( pRoot ) { + // there are depending objects if( IsInDocDTOR() ) { - // alle Clients "logisch" austragen + // if document gets destroyed anyway, just tell clients to forget me + // so that they don't try to get removed from my list later when they also get destroyed SwClientIter aIter( *this ); - SwClient* p; - while( 0 != ( p = aIter++ ) ) - p->pRegisteredIn = 0; - - p = aIter.GoRoot(); // wieder ab Root (==Start) anfangen - do { + SwClient* p = aIter.GoStart(); + while ( p ) + { p->pRegisteredIn = 0; - } while( 0 != ( p = aIter-- ) ); + p = aIter++; + } } else { - // verschicke die Nachricht an die abgeleiteten Objekte. + // notify all clients that they shall remove themselves SwPtrMsgPoolItem aDyObject( RES_OBJECTDYING, this ); - Modify( &aDyObject, &aDyObject ); + NotifyClients( &aDyObject, &aDyObject ); - // Zwangsummeldung aller derjenigen, die sich nicht ausgetragen - // haben, durch Aufruf von SwClient::Modify() + // remove all clients that have not done themselves + // mba: possibly a hotfix for forgotten base class calls?! while( pRoot ) - pRoot->SwClient::Modify(&aDyObject, &aDyObject); + pRoot->CheckRegistration(&aDyObject, &aDyObject); } } } -/************************************************************************* -|* SwModify::Modify( SwHint * pOldValue, SwHint * pNewValue ) -|* -|* Beschreibung Dokument 1.7 -|* Ersterstellung JP 20.11.90 -|* Letzte Aenderung MA 20. Mar. 95 -*************************************************************************/ - - +/*************************************************************************/ +void SwModify::Modify( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue ) +{ + NotifyClients( pOldValue, pNewValue ); +} -void SwModify::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) +void SwModify::NotifyClients( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue ) { if (IsInCache() || IsInSwFntCache()) { @@ -208,31 +198,52 @@ void SwModify::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) LockModify(); +<<<<<<< local + // mba: WTF?! +======= #ifndef DBG_UTIL bInModify = sal_True; #else +>>>>>>> other if( !pOldValue ) +<<<<<<< local + bLockClientList = TRUE; +======= bInModify = sal_True; +>>>>>>> other else - // following Modifies don't calls an ASSRT + { + // following Modifies shouldn't call an ASSERT switch( pOldValue->Which() ) { case RES_OBJECTDYING: case RES_REMOVE_UNO_OBJECT: - bInModify = ((SwPtrMsgPoolItem *)pOldValue)->pObject != this; + bLockClientList = ((SwPtrMsgPoolItem *)pOldValue)->pObject != this; break; case RES_FOOTNOTE_DELETED: case RES_REFMARK_DELETED: case RES_TOXMARK_DELETED: case RES_FIELD_DELETED: +<<<<<<< local + bLockClientList = FALSE; +======= bInModify = sal_False; +>>>>>>> other break; default: +<<<<<<< local + bLockClientList = TRUE; +======= bInModify = sal_True; +>>>>>>> other } -#endif + } +<<<<<<< local + ModifyBroadcast( pOldValue, pNewValue ); + bLockClientList = FALSE; +======= SwClientIter aIter( *this ); SwClient * pLast = aIter.GoStart(); if( pLast ) // konnte zum Anfang gesprungen werden ?? @@ -244,14 +255,23 @@ void SwModify::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) } while( 0 != ( pLast = aIter++ )); bInModify = sal_False; +>>>>>>> other UnlockModify(); } +<<<<<<< local +BOOL SwModify::GetInfo( SfxPoolItem& rInfo ) const +======= // erfrage vom Modify Informationen sal_Bool SwModify::GetInfo( SfxPoolItem& rInfo ) const +>>>>>>> other { +<<<<<<< local + BOOL bRet = TRUE; // means: continue with next one +======= sal_Bool bRet = sal_True; // bedeutet weiter zum naechsten +>>>>>>> other if( pRoot ) { @@ -264,48 +284,38 @@ sal_Bool SwModify::GetInfo( SfxPoolItem& rInfo ) const ; } - return bRet; // und weiter + return bRet; } -/************************************************************************* -|* SwModify::Add( SwClient *pDepend ) -|* -|* Beschreibung Dokument 1.7 -|* Ersterstellung JP 20.11.90 -|* Letzte Aenderung JP 14.09.94 -*************************************************************************/ - - - +/*************************************************************************/ void SwModify::Add(SwClient *pDepend) { - ASSERT( !bInModify, "Client innerhalb des eigenen Modifies einfuegen?" ); + ASSERT( !bLockClientList, "Client inserted while in Modify" ); - // nur wenn das hier noch nicht eingetragen ist einfuegen if(pDepend->pRegisteredIn != this ) { #ifdef DBG_UTIL SwClientIter* pTmp = pClientIters; while( pTmp ) { - ASSERT( &pTmp->rRoot != pRoot, - "Client beim angemeldeten ClientIter einfuegen?" ); + ASSERT( &pTmp->GetModify() != pRoot, "Client added to active ClientIter" ); pTmp = pTmp->pNxtIter; } #endif - // wenn schon wanders angemeldet, dann dort abmelden + // deregister new client in case it is already registered elsewhere if( pDepend->pRegisteredIn != 0 ) pDepend->pRegisteredIn->Remove( pDepend ); if( !pRoot ) { + // first client added pRoot = pDepend; pRoot->pLeft = 0; pRoot->pRight = 0; } else { - // immer hinter die Root haengen + // append client pDepend->pRight = pRoot->pRight; pRoot->pRight = pDepend; pDepend->pLeft = pRoot; @@ -313,29 +323,24 @@ void SwModify::Add(SwClient *pDepend) pDepend->pRight->pLeft = pDepend; } + // connect client to me pDepend->pRegisteredIn = this; } } -/************************************************************************* -|* SwModify::_Remove( SwClient *pDepend ) -|* -|* Beschreibung Dokument 1.7 -|* Ersterstellung JP 20.11.90 -|* Letzte Aenderung JP 14.09.94 -*************************************************************************/ - +/*************************************************************************/ - -SwClient *SwModify::_Remove(SwClient * pDepend) +SwClient* SwModify::Remove(SwClient * pDepend) { - // FME 2007-07-16 #i79641# SwXTextMarkup is allowed to be removed ... - ASSERT( !bInModify || 0 != dynamic_cast<SwXTextMarkup*>(pDepend), "Client innerhalb des eigenen Modifies loeschen?" ); + if ( bInDocDTOR ) + return 0; + + ASSERT( !bLockClientList || pDepend->mbIsAllowedToBeRemovedInModifyCall, "SwClient shall be removed in Modify call!" ); - // loesche das Object aus der Liste und setze den - // Registrierungs-Pointer zurueck if( pDepend->pRegisteredIn == this ) { + // SwClient is my listener + // remove it from my list SwClient* pR = pDepend->pRight; SwClient* pL = pDepend->pLeft; if( pRoot == pDepend ) @@ -346,32 +351,50 @@ SwClient *SwModify::_Remove(SwClient * pDepend) if( pR ) pR->pLeft = pL; - // alle Client-Iters updaten + // update ClientIters SwClientIter* pTmp = pClientIters; while( pTmp ) { - if( pTmp->pAkt == pDepend || pTmp->pDelNext == pDepend ) + if( pTmp->pAct == pDepend || pTmp->pDelNext == pDepend ) + // if object being removed is the current or next object in an iterator, advance this iterator pTmp->pDelNext = pR; - - // --> FME 2006-02-03 #127369# Notify SwClientIter if mpWatchClient is removed - if ( pTmp->mpWatchClient == pDepend ) - pTmp->mpWatchClient = 0; - // <-- - pTmp = pTmp->pNxtIter; } pDepend->pLeft = 0; pDepend->pRight = 0; } +<<<<<<< local + else + { + ASSERT( false, "SwModify::Remove(): pDepend nicht gefunden" ); +======= else { ASSERT( sal_False, "SwModify::Remove(): pDepend nicht gefunden"); +>>>>>>> other } + + // disconnect client from me pDepend->pRegisteredIn = 0; return pDepend; } +int SwModify::GetClientCount() const +{ + int nRet=0; + SwClientIter aIter( *this ); + SwClient *pLast = aIter.GoStart(); + if( pLast ) + do + { + ++nRet; + } while( 0 != ( pLast = aIter++ )); + return nRet; +} +<<<<<<< local +/*************************************************************************/ +======= /************************************************************************* |* SwModify::CheckCaching( const sal_uInt16 nWhich ) |* @@ -380,6 +403,7 @@ SwClient *SwModify::_Remove(SwClient * pDepend) *************************************************************************/ +>>>>>>> other void SwModify::CheckCaching( const sal_uInt16 nWhich ) { @@ -411,19 +435,33 @@ void SwModify::CheckCaching( const sal_uInt16 nWhich ) } } +void SwModify::CallSwClientNotify( const SfxHint& rHint ) const +{ + SwClientIter aIter(*this); + SwClient * pClient = aIter.GoStart(); + while (pClient) + { + pClient->SwClientNotify( *this, rHint ); + pClient = aIter++; + } +} + +void SwModify::ModifyBroadcast( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue, TypeId nType ) +{ + SwClientIter aIter(*this); + SwClient * pClient = aIter.First( nType ); + while (pClient) + { + pClient->Modify( pOldValue, pNewValue ); + pClient = aIter.Next(); + } +} // ---------- // SwDepend // ---------- -/************************************************************************* -|* SwDepend::SwDepend(SwClient *pTellHim,SwModify *pDepend) -|* -|* Beschreibung callback.doc V1.14 -|* Ersterstellung VB 20.03.91 -|* Letzte Aenderung VB 20.03.91 -*************************************************************************/ - +/*************************************************************************/ SwDepend::SwDepend(SwClient *pTellHim, SwModify *pDepend) : SwClient(pDepend) @@ -431,42 +469,41 @@ SwDepend::SwDepend(SwClient *pTellHim, SwModify *pDepend) pToTell = pTellHim; } -/************************************************************************* -|* -|* SwDepend::Modify(SwHint *, SwHint *) -|* -|* Beschreibung callback.doc V1.14 -|* Ersterstellung VB 20.03.91 -|* Letzte Aenderung VB 20.03.91 -|* -*************************************************************************/ +/*************************************************************************/ - -void SwDepend::Modify( SfxPoolItem *pOldValue, SfxPoolItem *pNewValue ) +void SwDepend::Modify( const SfxPoolItem* pOldValue, const SfxPoolItem *pNewValue ) { if(pNewValue && pNewValue->Which() == RES_OBJECTDYING) - SwClient::Modify(pOldValue,pNewValue); + CheckRegistration(pOldValue,pNewValue); else if(pToTell) - pToTell->Modify(pOldValue, pNewValue); + pToTell->ModifyNotification(pOldValue, pNewValue); } +void SwDepend::SwClientNotify( const SwModify& rMod, const SfxHint& rHint ) +{ + if ( pToTell ) + pToTell->SwClientNotifyCall( rMod, rHint ); +} +<<<<<<< local +BOOL SwDepend::GetInfo( SfxPoolItem& rInfo ) const +======= // erfrage vom Modify Informationen sal_Bool SwDepend::GetInfo( SfxPoolItem& rInfo ) const +>>>>>>> other { return pToTell ? pToTell->GetInfo( rInfo ) : sal_True; } /********************************************************************/ - -SwClientIter::SwClientIter( SwModify const& rModify ) +SwClientIter::SwClientIter( const SwModify& rModify ) : rRoot( rModify ) { - // hinten einketten! pNxtIter = 0; if( pClientIters ) { + // append to list of ClientIters SwClientIter* pTmp = pClientIters; while( pTmp->pNxtIter ) pTmp = pTmp->pNxtIter; @@ -475,9 +512,8 @@ SwClientIter::SwClientIter( SwModify const& rModify ) else pClientIters = this; - pAkt = rRoot.pRoot; - pDelNext = pAkt; - mpWatchClient = 0; + pAct = const_cast<SwClient*>(rRoot.GetDepends()); + pDelNext = pAct; } @@ -486,6 +522,7 @@ SwClientIter::~SwClientIter() { if( pClientIters ) { + // reorganize list of ClientIters if( pClientIters == this ) pClientIters = pNxtIter; else @@ -503,132 +540,109 @@ SwClientIter::~SwClientIter() } -#ifndef CFRONT - // Postfix Operator SwClient* SwClientIter::operator++(int) { -// solange der CFRONT Prefix und PostFix nicht unterscheiden kann, immer -// als Prefix-Operator arbeiten. Wenn der CFRONT es kann, muss auch der -// Code entsprechen umgestellt werden !!! - if( pDelNext == pAkt ) + if( pDelNext == pAct ) { - pAkt = pAkt->pRight; - pDelNext = pAkt; + pAct = pAct->pRight; + pDelNext = pAct; } else - pAkt = pDelNext; - return pAkt; + pAct = pDelNext; + return pAct; } -#endif - - // Prefix Operator -SwClient* SwClientIter::operator++() +SwClient* SwClientIter::GoStart() { - if( pDelNext == pAkt ) - { - pAkt = pAkt->pRight; - pDelNext = pAkt; - } - else - pAkt = pDelNext; - return pAkt; + pAct = const_cast<SwClient*>(rRoot.GetDepends()); + if( pAct ) + while( pAct->pLeft ) + pAct = pAct->pLeft; + pDelNext = pAct; + return pAct; } - -#ifndef CFRONT - // Postfix Operator -SwClient* SwClientIter::operator--(int) -{ -// solange der CFRONT Prefix und PostFix nicht unterscheiden kann, immer -// als Prefix-Operator arbeiten. Wenn der CFRONT es kann, muss auch der -// Code entsprechen umgestellt werden !!! - if( pDelNext == pAkt ) - pAkt = pAkt->pLeft; - else - pAkt = pDelNext->pLeft; - pDelNext = pAkt; - return pAkt; -} -#endif - - - // Prefix Operator -SwClient* SwClientIter::operator--() -{ - if( pDelNext == pAkt ) - pAkt = pAkt->pLeft; - else - pAkt = pDelNext->pLeft; - pDelNext = pAkt; - return pAkt; -} - - -SwClient* SwClientIter::GoStart() // zum Anfang des Baums -{ - pAkt = rRoot.pRoot; - if( pAkt ) - while( pAkt->pLeft ) - pAkt = pAkt->pLeft; - pDelNext = pAkt; - return pAkt; -} - - -SwClient* SwClientIter::GoEnd() // zum End des Baums +SwClient* SwClientIter::GoEnd() { - pAkt = pDelNext; - if( !pAkt ) - pAkt = rRoot.pRoot; - if( pAkt ) - while( pAkt->pRight ) - pAkt = pAkt->pRight; - pDelNext = pAkt; - return pAkt; + pAct = pDelNext; + if( !pAct ) + pAct = const_cast<SwClient*>(rRoot.GetDepends()); + if( pAct ) + while( pAct->pRight ) + pAct = pAct->pRight; + pDelNext = pAct; + return pAct; } - - SwClient* SwClientIter::First( TypeId nType ) { aSrchId = nType; GoStart(); - if( pAkt ) + if( pAct ) do { - if( pAkt->IsA( aSrchId ) ) + if( pAct->IsA( aSrchId ) ) break; - if( pDelNext == pAkt ) + if( pDelNext == pAct ) { - pAkt = pAkt->pRight; - pDelNext = pAkt; + pAct = pAct->pRight; + pDelNext = pAct; } else - pAkt = pDelNext; + pAct = pDelNext; - } while( pAkt ); - return pAkt; + } while( pAct ); + return pAct; } - SwClient* SwClientIter::Next() { do { - // erstmal zum naechsten - if( pDelNext == pAkt ) + if( pDelNext == pAct ) { - pAkt = pAkt->pRight; - pDelNext = pAkt; + pAct = pAct->pRight; + pDelNext = pAct; } else - pAkt = pDelNext; + pAct = pDelNext; - if( pAkt && pAkt->IsA( aSrchId ) ) + if( pAct && pAct->IsA( aSrchId ) ) break; - } while( pAkt ); - return pAkt; + } while( pAct ); + return pAct; } +SwClient* SwClientIter::Last( TypeId nType ) +{ + aSrchId = nType; + GoEnd(); + if( pAct ) + do { + if( pAct->IsA( aSrchId ) ) + break; + + if( pDelNext == pAct ) + pAct = pAct->pLeft; + else + pAct = pDelNext->pLeft; + pDelNext = pAct; + } while( pAct ); + return pAct; +} + +SwClient* SwClientIter::Previous() +{ + do { + if( pDelNext == pAct ) + pAct = pAct->pLeft; + else + pAct = pDelNext->pLeft; + pDelNext = pAct; + + if( pAct && pAct->IsA( aSrchId ) ) + break; + } while( pAct ); + return pAct; +} diff --git a/sw/source/core/attr/cellatr.cxx b/sw/source/core/attr/cellatr.cxx index cb5624b615e4..e171b4408018 100644 --- a/sw/source/core/attr/cellatr.cxx +++ b/sw/source/core/attr/cellatr.cxx @@ -29,9 +29,7 @@ #include "precompiled_sw.hxx" #include <float.h> - #include <rtl/math.hxx> - #include <hintids.hxx> // fuer RES_.. #include <cellatr.hxx> #include <calc.hxx> @@ -41,7 +39,7 @@ #include <node.hxx> #include <hints.hxx> #include <rolbck.hxx> - +#include <switerator.hxx> //TYPEINIT1( SwFmt, SwClient ); //rtti fuer SwFmt @@ -112,9 +110,9 @@ const SwNode* SwTblBoxFormula::GetNodeOfFormula() const const SwNode* pRet = 0; if( pDefinedIn ) { - SwClient* pBox = SwClientIter( *pDefinedIn ).First( TYPE( SwTableBox )); + SwTableBox* pBox = SwIterator<SwTableBox,SwModify>::FirstElement( *pDefinedIn ); if( pBox ) - pRet = ((SwTableBox*)pBox)->GetSttNd(); + pRet = pBox->GetSttNd(); } return pRet; } @@ -124,8 +122,7 @@ SwTableBox* SwTblBoxFormula::GetTableBox() { SwTableBox* pBox = 0; if( pDefinedIn ) - pBox = (SwTableBox*)SwClientIter( *pDefinedIn ). - First( TYPE( SwTableBox )); + pBox = SwIterator<SwTableBox,SwModify>::FirstElement( *pDefinedIn ); return pBox; } diff --git a/sw/source/core/attr/format.cxx b/sw/source/core/attr/format.cxx index f1c9142b7193..8c80a87738ea 100644 --- a/sw/source/core/attr/format.cxx +++ b/sw/source/core/attr/format.cxx @@ -36,9 +36,7 @@ #include <doc.hxx> #include <paratr.hxx> // fuer SwParaFmt - SwHyphenBug #include <swcache.hxx> -// --> OD 2006-11-22 #i71574# #include <fmtcolfunc.hxx> -// <-- TYPEINIT1( SwFmt, SwClient ); //rtti fuer SwFmt @@ -142,16 +140,16 @@ SwFmt &SwFmt::operator=(const SwFmt& rFmt) { SwAttrSetChg aChgOld( aSet, aOld ); SwAttrSetChg aChgNew( aSet, aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } - if( pRegisteredIn != rFmt.pRegisteredIn ) + if( GetRegisteredIn() != rFmt.GetRegisteredIn() ) { - if( pRegisteredIn ) - pRegisteredIn->Remove(this); - if(rFmt.pRegisteredIn) + if( GetRegisteredIn() ) + GetRegisteredInNonConst()->Remove(this); + if(rFmt.GetRegisteredIn()) { - rFmt.pRegisteredIn->Add(this); + const_cast<SwFmt&>(rFmt).GetRegisteredInNonConst()->Add(this); aSet.SetParent( &rFmt.aSet ); } else @@ -170,7 +168,7 @@ void SwFmt::SetName( const String& rNewName, sal_Bool bBroadcast ) SwStringMsgPoolItem aOld( RES_NAME_CHANGED, aFmtName ); SwStringMsgPoolItem aNew( RES_NAME_CHANGED, rNewName ); aFmtName = rNewName; - Modify( &aOld, &aNew ); + ModifyNotification( &aOld, &aNew ); } else { @@ -229,7 +227,7 @@ void SwFmt::CopyAttrs( const SwFmt& rFmt, sal_Bool bReplace ) SwAttrSetChg aChgOld( aSet, aOld ); SwAttrSetChg aChgNew( aSet, aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } } @@ -269,7 +267,7 @@ SwFmt::~SwFmt() SwFmtChg aNewFmt(pParentFmt); SwClient * pDepend = (SwClient*)GetDepends(); pParentFmt->Add(pDepend); - pDepend->Modify(&aOldFmt, &aNewFmt); + pDepend->ModifyNotification(&aOldFmt, &aNewFmt); } } } @@ -277,7 +275,7 @@ SwFmt::~SwFmt() /************************************************************************* -|* void SwFmt::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) +|* void SwFmt::Modify( const SfxPoolItem* pOldValue, const SfxPoolItem* pNewValue ) |* |* Beschreibung Dokument 1.14 |* Ersterstellung JP 22.11.90 @@ -285,7 +283,7 @@ SwFmt::~SwFmt() *************************************************************************/ -void SwFmt::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) +void SwFmt::Modify( const SfxPoolItem* pOldValue, const SfxPoolItem* pNewValue ) { sal_Bool bWeiter = sal_True; // sal_True = Propagierung an die Abhaengigen @@ -302,9 +300,9 @@ void SwFmt::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) SwFmt * pFmt = (SwFmt *) ((SwPtrMsgPoolItem *)pNewValue)->pObject; // nicht umhaengen wenn dieses das oberste Format ist !! - if( pRegisteredIn && pRegisteredIn == pFmt ) + if( GetRegisteredIn() && GetRegisteredIn() == pFmt ) { - if( pFmt->pRegisteredIn ) + if( pFmt->GetRegisteredIn() ) { // wenn Parent, dann im neuen Parent wieder anmelden pFmt->DerivedFrom()->Add( this ); @@ -332,8 +330,13 @@ void SwFmt::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) if( aNew.Count() ) // keine mehr gesetzt, dann Ende !! +<<<<<<< local + NotifyClients( &aOld, &aNew ); + bWeiter = FALSE; +======= SwModify::Modify( &aOld, &aNew ); bWeiter = sal_False; +>>>>>>> other } break; case RES_FMT_CHG: @@ -353,13 +356,22 @@ void SwFmt::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) { // IsWritten-Flag zuruecksetzen. Hint nur an abhanegige // Formate (und keine Frames) propagieren. + // mba: the code does the opposite from what is written in the comment! ResetWritten(); +<<<<<<< local + // mba: here we don't use the additional stuff from NotifyClients(). + // should we?! + // mba: move the code that ignores this event to the clients + ModifyBroadcast( pOldValue, pNewValue, TYPE(SwFmt) ); + bWeiter = FALSE; +======= SwClientIter aIter( *this ); for( SwClient *pClient = aIter.First( TYPE(SwFmt) ); pClient; pClient = aIter.Next() ) pClient->Modify( pOldValue, pNewValue ); bWeiter = sal_False; +>>>>>>> other } break; @@ -383,7 +395,7 @@ ASSERT( RES_PARATR_DROP == nWhich, "Modify ohne Absender verschickt" ); if( bWeiter ) { // laufe durch alle abhaengigen Formate - SwModify::Modify( pOldValue, pNewValue ); + NotifyClients( pOldValue, pNewValue ); } } @@ -431,7 +443,7 @@ sal_Bool SwFmt::SetDerivedFrom(SwFmt *pDerFrom) SwFmtChg aOldFmt(this); SwFmtChg aNewFmt(this); - Modify( &aOldFmt, &aNewFmt ); + ModifyNotification( &aOldFmt, &aNewFmt ); return sal_True; } @@ -476,7 +488,7 @@ sal_Bool SwFmt::SetFmtAttr(const SfxPoolItem& rAttr ) SwAttrSetChg aChgOld( aSet, aOld ); SwAttrSetChg aChgNew( aSet, aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } } return bRet; @@ -524,7 +536,7 @@ sal_Bool SwFmt::SetFmtAttr( const SfxItemSet& rSet ) aSet.SetModifyAtAttr( this ); SwAttrSetChg aChgOld( aSet, aOld ); SwAttrSetChg aChgNew( aSet, aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } } return bRet; @@ -561,7 +573,7 @@ sal_Bool SwFmt::ResetFmtAttr( sal_uInt16 nWhich1, sal_uInt16 nWhich2 ) { SwAttrSetChg aChgOld( aSet, aOld ); SwAttrSetChg aChgNew( aSet, aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } return bRet; } @@ -595,7 +607,7 @@ sal_uInt16 SwFmt::ResetAllFmtAttr() { SwAttrSetChg aChgOld( aSet, aOld ); SwAttrSetChg aChgNew( aSet, aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } return aNew.Count(); } @@ -644,7 +656,7 @@ void SwFmt::DelDiffs( const SfxItemSet& rSet ) { SwAttrSetChg aChgOld( aSet, aOld ); SwAttrSetChg aChgNew( aSet, aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } } diff --git a/sw/source/core/crsr/bookmrk.cxx b/sw/source/core/crsr/bookmrk.cxx index 18dc67cfc958..5b6d5701ed62 100644 --- a/sw/source/core/crsr/bookmrk.cxx +++ b/sw/source/core/crsr/bookmrk.cxx @@ -166,9 +166,9 @@ namespace sw { namespace mark } - void MarkBase::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) + void MarkBase::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew ) { - SwModify::Modify(pOld, pNew); + NotifyClients(pOld, pNew); if (pOld && (RES_REMOVE_UNO_OBJECT == pOld->Which())) { // invalidate cached uno object SetXBookmark(uno::Reference<text::XTextContent>(0)); diff --git a/sw/source/core/crsr/callnk.cxx b/sw/source/core/crsr/callnk.cxx index 74275c1014ef..f47e06b81914 100644 --- a/sw/source/core/crsr/callnk.cxx +++ b/sw/source/core/crsr/callnk.cxx @@ -69,7 +69,7 @@ SwCallLink::SwCallLink( SwCrsrShell & rSh ) bHasSelection = ( *pCrsr->GetPoint() != *pCrsr->GetMark() ); if( ND_TEXTNODE & nNdTyp ) - nLeftFrmPos = SwCallLink::GetFrm( (SwTxtNode&)rNd, nCntnt, + nLeftFrmPos = SwCallLink::getLayoutFrm( rShell.GetLayout(), (SwTxtNode&)rNd, nCntnt, !rShell.ActionPend() ); else { @@ -124,7 +124,7 @@ SwCallLink::~SwCallLink() { // nur wenn mit Left/right getravellt, dann Text-Hints pruefen // und sich nicht der Frame geaendert hat (Spalten!) - if( nLeftFrmPos == SwCallLink::GetFrm( (SwTxtNode&)*pCNd, nAktCntnt, + if( nLeftFrmPos == SwCallLink::getLayoutFrm( rShell.GetLayout(), (SwTxtNode&)*pCNd, nAktCntnt, !rShell.ActionPend() ) && (( nCmp = nCntnt ) + 1 == nAktCntnt || // Right nCntnt -1 == ( nCmp = nAktCntnt )) ) // Left @@ -191,7 +191,11 @@ SwCallLink::~SwCallLink() const SwFrm* pFrm; const SwFlyFrm *pFlyFrm; +<<<<<<< local + if( !rShell.ActionPend() && 0 != ( pFrm = pCNd->getLayoutFrm(rShell.GetLayout(),0,0,FALSE) ) && +======= if( !rShell.ActionPend() && 0 != ( pFrm = pCNd->GetFrm(0,0,sal_False) ) && +>>>>>>> other 0 != ( pFlyFrm = pFrm->FindFlyFrm() ) && !rShell.IsTableMode() ) { const SwNodeIndex* pIndex = pFlyFrm->GetFmt()->GetCntnt().GetCntntIdx(); @@ -208,9 +212,13 @@ SwCallLink::~SwCallLink() } } +<<<<<<< local +long SwCallLink::getLayoutFrm( const SwRootFrm* pRoot, SwTxtNode& rNd, xub_StrLen nCntPos, BOOL bCalcFrm ) +======= long SwCallLink::GetFrm( SwTxtNode& rNd, xub_StrLen nCntPos, sal_Bool bCalcFrm ) +>>>>>>> other { - SwTxtFrm* pFrm = (SwTxtFrm*)rNd.GetFrm(0,0,bCalcFrm), *pNext = pFrm; + SwTxtFrm* pFrm = (SwTxtFrm*)rNd.getLayoutFrm(pRoot,0,0,bCalcFrm), *pNext = pFrm; if ( pFrm && !pFrm->IsHiddenNow() ) { if( pFrm->HasFollow() ) diff --git a/sw/source/core/crsr/callnk.hxx b/sw/source/core/crsr/callnk.hxx index ad2ea384cc8b..0952bbb256b7 100644 --- a/sw/source/core/crsr/callnk.hxx +++ b/sw/source/core/crsr/callnk.hxx @@ -31,6 +31,7 @@ class SwCrsrShell; class SwTxtNode; +class SwRootFrm; class SwCallLink { @@ -48,7 +49,11 @@ public: bool bAktSelection ); ~SwCallLink(); +<<<<<<< local + static long getLayoutFrm( const SwRootFrm*, SwTxtNode& rNd, xub_StrLen nCntPos, BOOL bCalcFrm ); +======= static long GetFrm( SwTxtNode& rNd, xub_StrLen nCntPos, sal_Bool bCalcFrm ); +>>>>>>> other }; diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx index 8e77c070d62d..db5ecf0778ca 100644 --- a/sw/source/core/crsr/crsrsh.cxx +++ b/sw/source/core/crsr/crsrsh.cxx @@ -201,8 +201,13 @@ SwPaM* SwCrsrShell::GetCrsr( sal_Bool bMakeTblCrsr ) const const SwCntntNode* pCNd; if( pTblCrsr->GetPoint()->nNode.GetIndex() && pTblCrsr->GetMark()->nNode.GetIndex() && +<<<<<<< local + 0 != ( pCNd = pTblCrsr->GetCntntNode() ) && pCNd->getLayoutFrm( GetLayout() ) && + 0 != ( pCNd = pTblCrsr->GetCntntNode(FALSE) ) && pCNd->getLayoutFrm( GetLayout() ) ) +======= 0 != ( pCNd = pTblCrsr->GetCntntNode() ) && pCNd->GetFrm() && 0 != ( pCNd = pTblCrsr->GetCntntNode(sal_False) ) && pCNd->GetFrm()) +>>>>>>> other { SwShellTableCrsr* pTC = (SwShellTableCrsr*)pTblCrsr; GetLayout()->MakeTblCrsrs( *pTC ); @@ -230,7 +235,11 @@ void SwCrsrShell::StartAction() nAktNdTyp = rNd.GetNodeType(); bAktSelection = *pCurCrsr->GetPoint() != *pCurCrsr->GetMark(); if( ND_TEXTNODE & nAktNdTyp ) +<<<<<<< local + nLeftFrmPos = SwCallLink::getLayoutFrm( GetLayout(), (SwTxtNode&)rNd, nAktCntnt, TRUE ); +======= nLeftFrmPos = SwCallLink::GetFrm( (SwTxtNode&)rNd, nAktCntnt, sal_True ); +>>>>>>> other else nLeftFrmPos = 0; } @@ -322,6 +331,7 @@ if( GetWin() ) sal_uInt16 nParm = SwCrsrShell::CHKRANGE; if ( !bIdleEnd ) nParm |= SwCrsrShell::SCROLLWIN; + if( !IsViewLocked() ) UpdateCrsr( nParm, bIdleEnd ); // Cursor-Aenderungen anzeigen { @@ -598,8 +608,13 @@ sal_Bool SwCrsrShell::MovePage( SwWhichPage fnWhichPage, SwPosPage fnPosPage ) SwCrsrSaveState aSaveState( *pCurCrsr ); Point& rPt = pCurCrsr->GetPtPos(); SwCntntFrm * pFrm = pCurCrsr->GetCntntNode()-> +<<<<<<< local + getLayoutFrm( GetLayout(), &rPt, pCurCrsr->GetPoint(), FALSE ); + if( pFrm && TRUE == ( bRet = GetFrmInPage( pFrm, fnWhichPage, +======= GetFrm( &rPt, pCurCrsr->GetPoint() ); if( pFrm && sal_True == ( bRet = GetFrmInPage( pFrm, fnWhichPage, +>>>>>>> other fnPosPage, pCurCrsr ) ) && !pCurCrsr->IsSelOvr( nsSwCursorSelOverFlags::SELOVER_TOGGLE | nsSwCursorSelOverFlags::SELOVER_CHANGEPOS )) @@ -644,7 +659,11 @@ SwFrm* lcl_IsInHeaderFooter( const SwNodeIndex& rIdx, Point& rPt ) SwCntntNode* pCNd = rIdx.GetNode().GetCntntNode(); if( pCNd ) { +<<<<<<< local + pFrm = pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout(), &rPt, 0, FALSE )->GetUpper(); +======= pFrm = pCNd->GetFrm( &rPt, 0, sal_False )->GetUpper(); +>>>>>>> other while( pFrm && !pFrm->IsHeaderFrm() && !pFrm->IsFooterFrm() ) pFrm = pFrm->IsFlyFrm() ? ((SwFlyFrm*)pFrm)->AnchorFrm() : pFrm->GetUpper(); @@ -730,10 +749,17 @@ int SwCrsrShell::SetCrsr( const Point &rLPt, sal_Bool bOnlyText, bool bBlock ) else if( aPos.nNode.GetNode().IsCntntNode() ) { // im gleichen Frame gelandet? +<<<<<<< local + SwFrm* pOld = ((SwCntntNode&)aPos.nNode.GetNode()).getLayoutFrm( + GetLayout(), &aCharRect.Pos(), 0, FALSE ); + SwFrm* pNew = ((SwCntntNode&)aPos.nNode.GetNode()).getLayoutFrm( + GetLayout(), &aPt, 0, FALSE ); +======= SwFrm* pOld = ((SwCntntNode&)aPos.nNode.GetNode()).GetFrm( &aCharRect.Pos(), 0, sal_False ); SwFrm* pNew = ((SwCntntNode&)aPos.nNode.GetNode()).GetFrm( &aPt, 0, sal_False ); +>>>>>>> other if( pNew == pOld ) return bRet; } @@ -1263,7 +1289,7 @@ void SwCrsrShell::UpdateCrsrPos() Size aOldSz( GetDocSize() ); SwCntntNode *pCNode = pShellCrsr->GetCntntNode(); SwCntntFrm *pFrm = pCNode ? - pCNode->GetFrm( &pShellCrsr->GetPtPos(), pShellCrsr->GetPoint() ) :0; + pCNode->getLayoutFrm( GetLayout(), &pShellCrsr->GetPtPos(), pShellCrsr->GetPoint(), FALSE ) :0; if( !pFrm || (pFrm->IsTxtFrm() && ((SwTxtFrm*)pFrm)->IsHiddenNow()) ) { SwCrsrMoveState aTmpState( MV_NONE ); @@ -1400,7 +1426,7 @@ void SwCrsrShell::UpdateCrsr( sal_uInt16 eFlags, sal_Bool bIdleEnd ) } SwCntntFrm *pTblFrm = pPos->nNode.GetNode().GetCntntNode()-> - GetFrm( &aTmpPt, pPos ); + getLayoutFrm( GetLayout(), &aTmpPt, pPos, FALSE ); ASSERT( pTblFrm, "Tabelle Crsr nicht im Content ??" ); @@ -1417,7 +1443,12 @@ void SwCrsrShell::UpdateCrsr( sal_uInt16 eFlags, sal_Bool bIdleEnd ) // Second check if mark is in repeated headline: if ( !bInRepeatedHeadline ) { +<<<<<<< local + SwCntntFrm* pMarkTblFrm = pITmpCrsr->GetCntntNode( FALSE )-> + getLayoutFrm( GetLayout(), &aTmpMk, pITmpCrsr->GetMark(), FALSE ); +======= SwCntntFrm* pMarkTblFrm = pITmpCrsr->GetCntntNode( sal_False )->GetFrm( &aTmpMk, pITmpCrsr->GetMark() ); +>>>>>>> other ASSERT( pMarkTblFrm, "Tabelle Crsr nicht im Content ??" ); if ( pMarkTblFrm ) @@ -1629,9 +1660,15 @@ void SwCrsrShell::UpdateCrsr( sal_uInt16 eFlags, sal_Bool bIdleEnd ) do { sal_Bool bAgainst; do { +<<<<<<< local + bAgainst = FALSE; + pFrm = pShellCrsr->GetCntntNode()->getLayoutFrm( GetLayout(), + &pShellCrsr->GetPtPos(), pShellCrsr->GetPoint(), FALSE ); +======= bAgainst = sal_False; pFrm = pShellCrsr->GetCntntNode()->GetFrm( &pShellCrsr->GetPtPos(), pShellCrsr->GetPoint() ); +>>>>>>> other // ist der Frm nicht mehr vorhanden, dann muss das gesamte Layout // erzeugt werden, weil ja mal hier einer vorhanden war !! if ( !pFrm ) @@ -1639,8 +1676,8 @@ void SwCrsrShell::UpdateCrsr( sal_uInt16 eFlags, sal_Bool bIdleEnd ) do { CalcLayout(); - pFrm = pShellCrsr->GetCntntNode()->GetFrm( - &pShellCrsr->GetPtPos(), pShellCrsr->GetPoint() ); + pFrm = pShellCrsr->GetCntntNode()->getLayoutFrm( GetLayout(), + &pShellCrsr->GetPtPos(), pShellCrsr->GetPoint(), FALSE ); } while( !pFrm ); } else if ( Imp()->IsIdleAction() ) @@ -1826,7 +1863,7 @@ void SwCrsrShell::RefreshBlockCursor() ASSERT( pBlockCrsr, "Don't call me without a block cursor" ); SwShellCrsr &rBlock = pBlockCrsr->getShellCrsr(); Point aPt = rBlock.GetPtPos(); - SwCntntFrm* pFrm = rBlock.GetCntntNode()->GetFrm( &aPt, rBlock.GetPoint() ); + SwCntntFrm* pFrm = rBlock.GetCntntNode()->getLayoutFrm( GetLayout(), &aPt, rBlock.GetPoint(), FALSE ); Point aMk; if( pBlockCrsr->getEndPoint() && pBlockCrsr->getStartPoint() ) { @@ -2144,13 +2181,22 @@ SwCntntFrm *SwCrsrShell::GetCurrFrm( const sal_Bool bCalcFrm ) const const sal_uInt16* pST = &nStartAction; ++(*((sal_uInt16*)pST)); const Size aOldSz( GetDocSize() ); +<<<<<<< local + pRet = pNd->getLayoutFrm( GetLayout(), &pCurCrsr->GetPtPos(), pCurCrsr->GetPoint() ); + --(*((USHORT*)pST)); +======= pRet = pNd->GetFrm( &pCurCrsr->GetPtPos(), pCurCrsr->GetPoint() ); --(*((sal_uInt16*)pST)); +>>>>>>> other if( aOldSz != GetDocSize() ) ((SwCrsrShell*)this)->SizeChgNotify(); } else +<<<<<<< local + pRet = pNd->getLayoutFrm( GetLayout(), &pCurCrsr->GetPtPos(), pCurCrsr->GetPoint(), FALSE); +======= pRet = pNd->GetFrm( &pCurCrsr->GetPtPos(), pCurCrsr->GetPoint(), sal_False); +>>>>>>> other } return pRet; } @@ -2160,7 +2206,7 @@ SwCntntFrm *SwCrsrShell::GetCurrFrm( const sal_Bool bCalcFrm ) const // Link weitergeleitet. -void SwCrsrShell::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwCrsrShell::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { const sal_uInt16 nWhich = pOld ? pOld->Which() : @@ -2330,7 +2376,7 @@ sal_Bool SwCrsrShell::SetVisCrsr( const Point &rPt ) pSectNd->GetSection().IsProtectFlag())) ) return sal_False; - SwCntntFrm *pFrm = pTxtNd->GetFrm( &aPt, &aPos ); + SwCntntFrm *pFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt, &aPos ); if ( Imp()->IsIdleAction() ) pFrm->PrepareCrsr(); SwRect aTmp( aCharRect ); @@ -2686,7 +2732,7 @@ SwCrsrShell::~SwCrsrShell() // der CursorShell haengt keine Chance geben, sich an den // TextNode zu haengen. if( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); } SwShellCrsr* SwCrsrShell::getShellCrsr( bool bBlock ) @@ -2783,7 +2829,11 @@ sal_Bool SwCrsrShell::FindValidCntntNode( sal_Bool bOnlyText ) SwCntntNode* pCNd = rNdIdx.GetNode().GetCntntNode(); const SwCntntFrm * pFrm; +<<<<<<< local + if( pCNd && 0 != (pFrm = pCNd->getLayoutFrm( GetLayout(),0,pCurCrsr->GetPoint(),FALSE)) && +======= if( pCNd && 0 != (pFrm = pCNd->GetFrm(0,pCurCrsr->GetPoint(),sal_False)) && +>>>>>>> other !IsReadOnlyAvailable() && pFrm->IsProtected() && nNdIdx < rNds.GetEndOfExtras().GetIndex() ) { @@ -2899,7 +2949,11 @@ sal_Bool SwCrsrShell::FindValidCntntNode( sal_Bool bOnlyText ) if( bOk && rNdIdx.GetIndex() < rNds.GetEndOfExtras().GetIndex() ) { // Teste mal auf Fly - kann auch noch geschuetzt sein!! +<<<<<<< local + if( 0 == (pFrm = pCNd->getLayoutFrm( GetLayout(),0,0,FALSE)) || +======= if( 0 == (pFrm = pCNd->GetFrm(0,0,sal_False)) || +>>>>>>> other ( !IsReadOnlyAvailable() && pFrm->IsProtected() ) || ( bOnlyText && pCNd->IsNoTxtNode() ) ) { @@ -2931,7 +2985,11 @@ sal_Bool SwCrsrShell::FindValidCntntNode( sal_Bool bOnlyText ) // falls Cursor im versteckten Bereich ist, auf jedenfall schon mal // verschieben!! +<<<<<<< local + if( !pCNd || !pCNd->getLayoutFrm( GetLayout(),0,0,FALSE) ) +======= if( !pCNd || !pCNd->GetFrm(0,0,sal_False) ) +>>>>>>> other { SwCrsrMoveState aTmpState( MV_NONE ); aTmpState.bSetInReadOnly = IsReadOnlyAvailable(); @@ -3496,7 +3554,11 @@ void SwCrsrShell::GetSmartTagTerm( const Point& rPt, SwRect& rSelectRect, SwCrsrMoveState aState; aState.bRealWidth = sal_True; SwCntntNode* pCntntNode = pCrsr->GetCntntNode(); +<<<<<<< local + SwCntntFrm *pCntntFrame = pCntntNode->getLayoutFrm( GetLayout(), &rPt, pCrsr->GetPoint(), FALSE); +======= SwCntntFrm *pCntntFrame = pCntntNode->GetFrm( &rPt, pCrsr->GetPoint(), sal_False); +>>>>>>> other pCntntFrame->GetCharRect( aStartRect, *pCrsr->GetPoint(), &aState ); rContent = nWordEnd; diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx index 08936c85210b..3270ca0a0e7e 100644 --- a/sw/source/core/crsr/crstrvl.cxx +++ b/sw/source/core/crsr/crstrvl.cxx @@ -72,7 +72,7 @@ #include <fmturl.hxx> #include "txtfrm.hxx" #include <wrong.hxx> - +#include <switerator.hxx> #include <vcl/window.hxx> #include <docufld.hxx> // OD 2008-06-19 #i90516# @@ -93,7 +93,7 @@ sal_Bool SwCrsrShell::GotoNextNum() // dann versuche den Cursor auf die Position zu setzen, // auf halber Heohe vom Char-SRectangle Point aPt( pCurCrsr->GetPtPos() ); - SwCntntFrm * pFrm = pCurCrsr->GetCntntNode()->GetFrm( &aPt, + SwCntntFrm * pFrm = pCurCrsr->GetCntntNode()->getLayoutFrm( GetLayout(), &aPt, pCurCrsr->GetPoint() ); pFrm->GetCharRect( aCharRect, *pCurCrsr->GetPoint() ); pFrm->Calc(); @@ -133,7 +133,7 @@ sal_Bool SwCrsrShell::GotoPrevNum() // dann versuche den Cursor auf die Position zu setzen, // auf halber Heohe vom Char-SRectangle Point aPt( pCurCrsr->GetPtPos() ); - SwCntntFrm * pFrm = pCurCrsr->GetCntntNode()->GetFrm( &aPt, + SwCntntFrm * pFrm = pCurCrsr->GetCntntNode()->getLayoutFrm( GetLayout(), &aPt, pCurCrsr->GetPoint() ); pFrm->GetCharRect( aCharRect, *pCurCrsr->GetPoint() ); pFrm->Calc(); @@ -277,7 +277,11 @@ sal_Bool SwCrsrShell::SetCrsrInHdFt( sal_uInt16 nDescNo, sal_Bool bInHeader ) const SwFrm* pFrm; Point aPt( pCurCrsr->GetPtPos() ); +<<<<<<< local + if( pCNd && 0 != ( pFrm = pCNd->getLayoutFrm( GetLayout(), &aPt, 0, FALSE ) )) +======= if( pCNd && 0 != ( pFrm = pCNd->GetFrm( &aPt, 0, sal_False ) )) +>>>>>>> other { // dann kann der Cursor ja auch hinein gesetzt werden SwCallLink aLk( *this ); // Crsr-Moves ueberwachen, evt. Link callen @@ -328,7 +332,7 @@ sal_Bool SwCrsrShell::GotoNextTOXBase( const String* pName ) const SwCntntFrm* pCFrm; if( pCNd && pCNd->EndOfSectionIndex() <= pSectNd->EndOfSectionIndex() && - 0 != ( pCFrm = pCNd->GetFrm() ) && + 0 != ( pCFrm = pCNd->getLayoutFrm( GetLayout() ) ) && ( IsReadOnlyAvailable() || !pCFrm->IsProtected() )) { pFnd = pCNd; @@ -378,7 +382,7 @@ sal_Bool SwCrsrShell::GotoPrevTOXBase( const String* pName ) const SwCntntFrm* pCFrm; if( pCNd && pCNd->EndOfSectionIndex() <= pSectNd->EndOfSectionIndex() && - 0 != ( pCFrm = pCNd->GetFrm() ) && + 0 != ( pCFrm = pCNd->getLayoutFrm( GetLayout() ) ) && ( IsReadOnlyAvailable() || !pCFrm->IsProtected() )) { pFnd = pCNd; @@ -412,14 +416,13 @@ sal_Bool SwCrsrShell::GotoTOXMarkBase() // dann nehme den 1. und hole den Verzeichnis-Typ. // Suche in seiner Abhaengigkeitsliste nach dem eigentlichem // Verzeichnis - SwModify* pType = (SwModify*)aMarks[0]->GetRegisteredIn(); - SwClientIter aIter( *pType ); + const SwTOXType* pType = aMarks[0]->GetTOXType(); + SwIterator<SwTOXBase,SwTOXType> aIter( *pType ); const SwSectionNode* pSectNd; const SwSectionFmt* pSectFmt; - for( SwTOXBase* pTOX = - (SwTOXBase*)aIter.First( TYPE( SwTOXBase )); - pTOX; pTOX = (SwTOXBase*)aIter.Next() ) + for( SwTOXBase* pTOX = aIter.First(); pTOX; pTOX = aIter.Next() ) + { if( pTOX->ISA( SwTOXBaseSection ) && 0 != ( pSectFmt = ((SwTOXBaseSection*)pTOX)->GetFmt() ) && 0 != ( pSectNd = pSectFmt->GetSectionNode() )) @@ -431,7 +434,7 @@ sal_Bool SwCrsrShell::GotoTOXMarkBase() const SwCntntFrm* pCFrm; if( pCNd && pCNd->EndOfSectionIndex() < pSectNd->EndOfSectionIndex() && - 0 != ( pCFrm = pCNd->GetFrm() ) && + 0 != ( pCFrm = pCNd->getLayoutFrm( GetLayout() ) ) && ( IsReadOnlyAvailable() || !pCFrm->IsProtected() )) { SwCallLink aLk( *this ); // Crsr-Moves ueberwachen, @@ -446,6 +449,7 @@ sal_Bool SwCrsrShell::GotoTOXMarkBase() } } } + } return bRet; } @@ -479,8 +483,13 @@ sal_Bool SwCrsrShell::GotoNxtPrvTblFormula( sal_Bool bNext, sal_Bool bOnlyErrors if( rPos.nNode < GetDoc()->GetNodes().GetEndOfExtras() ) // auch beim Einsammeln wird nur der erste Frame benutzt! +<<<<<<< local + aCurGEF.SetBodyPos( *rPos.nNode.GetNode().GetCntntNode()->getLayoutFrm( GetLayout(), + &aPt, &rPos, FALSE ) ); +======= aCurGEF.SetBodyPos( *rPos.nNode.GetNode().GetCntntNode()->GetFrm( &aPt, &rPos, sal_False ) ); +>>>>>>> other { const SfxPoolItem* pItem; @@ -499,7 +508,11 @@ sal_Bool SwCrsrShell::GotoNxtPrvTblFormula( sal_Bool bNext, sal_Bool bOnlyErrors const SwCntntFrm* pCFrm; SwNodeIndex aIdx( *pTBox->GetSttNd() ); const SwCntntNode* pCNd = GetDoc()->GetNodes().GoNext( &aIdx ); +<<<<<<< local + if( pCNd && 0 != ( pCFrm = pCNd->getLayoutFrm( GetLayout(), &aPt, 0, FALSE ) ) && +======= if( pCNd && 0 != ( pCFrm = pCNd->GetFrm( &aPt, 0, sal_False ) ) && +>>>>>>> other (IsReadOnlyAvailable() || !pCFrm->IsProtected() )) { _SetGetExpFld aCmp( *pTBox ); @@ -550,7 +563,11 @@ sal_Bool SwCrsrShell::GotoNxtPrvTOXMark( sal_Bool bNext ) if( rPos.nNode.GetIndex() < GetDoc()->GetNodes().GetEndOfExtras().GetIndex() ) // auch beim Einsammeln wird nur der erste Frame benutzt! aCurGEF.SetBodyPos( *rPos.nNode.GetNode(). +<<<<<<< local + GetCntntNode()->getLayoutFrm( GetLayout(), &aPt, &rPos, FALSE ) ); +======= GetCntntNode()->GetFrm( &aPt, &rPos, sal_False ) ); +>>>>>>> other { const SfxPoolItem* pItem; @@ -564,7 +581,11 @@ sal_Bool SwCrsrShell::GotoNxtPrvTOXMark( sal_Bool bNext ) RES_TXTATR_TOXMARK, n ) ) && 0 != (pTxtTOX = ((SwTOXMark*)pItem)->GetTxtTOXMark() ) && ( pTxtNd = &pTxtTOX->GetTxtNode())->GetNodes().IsDocNodes() && +<<<<<<< local + 0 != ( pCFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt, 0, FALSE )) && +======= 0 != ( pCFrm = pTxtNd->GetFrm( &aPt, 0, sal_False )) && +>>>>>>> other ( IsReadOnlyAvailable() || !pCFrm->IsProtected() )) { SwNodeIndex aNdIndex( *pTxtNd ); // UNIX benoetigt dieses Obj. @@ -631,18 +652,29 @@ void lcl_MakeFldLst( _SetGetExpFlds& rLst, const SwFieldType& rFldType, // es muss immer der 1. Frame gesucht werden Point aPt; SwTxtFld* pTxtFld; +<<<<<<< local + SwIterator<SwFmtFld,SwFieldType> aIter(rFldType); + BOOL bSubType = nSubType != USHRT_MAX; + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) + if( 0 != ( pTxtFld = pFmtFld->GetTxtFld() ) && +======= SwClientIter aIter( (SwFieldType&)rFldType ); sal_Bool bSubType = nSubType != USHRT_MAX; for( SwClient* pLast = aIter.First( TYPE( SwFmtFld )); pLast; pLast = aIter.Next() ) if( 0 != ( pTxtFld = ((SwFmtFld*)pLast)->GetTxtFld() ) && +>>>>>>> other ( !bChkInpFlag || ((SwSetExpField*)pTxtFld->GetFld().GetFld()) ->GetInputFlag() ) && - (!bSubType || (((SwFmtFld*)pLast)->GetFld()->GetSubType() + (!bSubType || (pFmtFld->GetFld()->GetSubType() & 0xff ) == nSubType )) { SwCntntFrm* pCFrm; const SwTxtNode& rTxtNode = pTxtFld->GetTxtNode(); +<<<<<<< local + if( 0 != ( pCFrm = rTxtNode.getLayoutFrm( rTxtNode.GetDoc()->GetCurrentLayout(), &aPt, 0, FALSE )) && +======= if( 0 != ( pCFrm = rTxtNode.GetFrm( &aPt, 0, sal_False )) && +>>>>>>> other ( bInReadOnly || !pCFrm->IsProtected() )) { _SetGetExpFld* pNew = new _SetGetExpFld( @@ -727,7 +759,11 @@ sal_Bool SwCrsrShell::MoveFldType( const SwFieldType* pFldType, sal_Bool bNext, { // auch beim Einsammeln wird nur der erste Frame benutzt! Point aPt; +<<<<<<< local + aSrch.SetBodyPos( *pTNd->getLayoutFrm( GetLayout(), &aPt, &rPos, FALSE ) ); +======= aSrch.SetBodyPos( *pTNd->GetFrm( &aPt, &rPos, sal_False ) ); +>>>>>>> other } sal_Bool bFound = aSrtLst.Seek_Entry( &aSrch, &nPos ); @@ -1112,7 +1148,7 @@ sal_Bool SwCrsrShell::GetContentAtPos( const Point& rPt, rCntntAtPos.eCntntAtPos = SwContentAtPos::SW_SMARTTAG; // rCntntAtPos.pFndTxtAttr = pTxtAttr; - if( pFldRect && 0 != ( pFrm = pTxtNd->GetFrm( &aPt ) ) ) + if( pFldRect && 0 != ( pFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt ) ) ) pFrm->GetCharRect( *pFldRect, aPos, &aTmpState ); } } @@ -1132,7 +1168,7 @@ sal_Bool SwCrsrShell::GetContentAtPos( const Point& rPt, if( pFld ) { - if( pFldRect && 0 != ( pFrm = pTxtNd->GetFrm( &aPt ) ) ) + if( pFldRect && 0 != ( pFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt ) ) ) pFrm->GetCharRect( *pFldRect, aPos, &aTmpState ); if( bSetCrsr ) @@ -1230,7 +1266,7 @@ sal_Bool SwCrsrShell::GetContentAtPos( const Point& rPt, rCntntAtPos.pFndTxtAttr = pTxtAttr; rCntntAtPos.aFnd.pAttr = &pTxtAttr->GetAttr(); - if( pFldRect && 0 != ( pFrm = pTxtNd->GetFrm( &aPt ) ) ) + if( pFldRect && 0 != ( pFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt ) ) ) pFrm->GetCharRect( *pFldRect, aPos, &aTmpState ); } } @@ -1298,7 +1334,7 @@ sal_Bool SwCrsrShell::GetContentAtPos( const Point& rPt, rCntntAtPos.pFndTxtAttr = pTxtAttr; rCntntAtPos.aFnd.pAttr = &pTxtAttr->GetAttr(); - if( pFldRect && 0 != ( pFrm = pTxtNd->GetFrm( &aPt ) ) ) + if( pFldRect && 0 != ( pFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt ) ) ) pFrm->GetCharRect( *pFldRect, aPos, &aTmpState ); } } @@ -1335,7 +1371,7 @@ sal_Bool SwCrsrShell::GetContentAtPos( const Point& rPt, rCntntAtPos.eCntntAtPos = SwContentAtPos::SW_INETATTR; rCntntAtPos.pFndTxtAttr = pTxtAttr; - if( pFldRect && 0 != ( pFrm = pTxtNd->GetFrm( &aPt ) ) ) + if( pFldRect && 0 != ( pFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt ) ) ) pFrm->GetCharRect( *pFldRect, aPos, &aTmpState ); } } @@ -1351,7 +1387,7 @@ sal_Bool SwCrsrShell::GetContentAtPos( const Point& rPt, rCntntAtPos.pFndTxtAttr = 0; bRet = sal_True; - if( pFldRect && 0 != ( pFrm = pTxtNd->GetFrm( &aPt ) ) ) + if( pFldRect && 0 != ( pFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt ) ) ) pFrm->GetCharRect( *pFldRect, aPos, &aTmpState ); } } @@ -1382,7 +1418,7 @@ sal_Bool SwCrsrShell::GetContentAtPos( const Point& rPt, #endif ) { - SwFrm* pF = pTxtNd->GetFrm( &aPt ); + SwFrm* pF = pTxtNd->getLayoutFrm( GetLayout(), &aPt ); if( pF ) { // dann aber den CellFrame @@ -1590,7 +1626,11 @@ sal_Bool SwContentAtPos::IsInProtectSect() const const SwCntntFrm* pFrm; return pNd && ( pNd->IsInProtectSect() || +<<<<<<< local + ( 0 != ( pFrm = pNd->getLayoutFrm( pNd->GetDoc()->GetCurrentLayout(), 0,0,FALSE)) && +======= ( 0 != ( pFrm = pNd->GetFrm(0,0,sal_False)) && +>>>>>>> other pFrm->IsProtected() )); } bool SwContentAtPos::IsInRTLText()const @@ -1612,20 +1652,16 @@ bool SwContentAtPos::IsInRTLText()const } if(pNd) { - SwClientIter aClientIter( * const_cast<SwTxtNode*>(pNd) ); - SwClient* pLast = aClientIter.GoStart(); - while( pLast ) + SwIterator<SwTxtFrm,SwTxtNode> aIter(*pNd); + SwTxtFrm* pTmpFrm = aIter.First(); + while( pTmpFrm ) { - if ( pLast->ISA( SwTxtFrm ) ) - { - SwTxtFrm* pTmpFrm = static_cast<SwTxtFrm*>( pLast ); if ( !pTmpFrm->IsFollow()) { bRet = pTmpFrm->IsRightToLeft(); break; } - } - pLast = ++aClientIter; + pTmpFrm = aIter.Next(); } } return bRet; @@ -2102,7 +2138,7 @@ sal_Bool SwCrsrShell::SelectNxtPrvHyperlink( sal_Bool bNext ) { const SwCntntNode* pCNd = aCurPos.GetNodeFromCntnt()->GetCntntNode(); SwCntntFrm* pFrm; - if( pCNd && 0 != ( pFrm = pCNd->GetFrm( &aPt )) ) + if( pCNd && 0 != ( pFrm = pCNd->getLayoutFrm( GetLayout(), &aPt )) ) aCurPos.SetBodyPos( *pFrm ); } @@ -2112,19 +2148,18 @@ sal_Bool SwCrsrShell::SelectNxtPrvHyperlink( sal_Bool bNext ) const SwCharFmts* pFmts = GetDoc()->GetCharFmts(); for( sal_uInt16 n = pFmts->Count(); 1 < n; ) { - SwClientIter aIter( *(*pFmts)[ --n ] ); + SwIterator<SwTxtINetFmt,SwCharFmt> aIter(*(*pFmts)[--n]); - for( SwClient* pFnd = aIter.First(TYPE( SwTxtINetFmt )); - pFnd; pFnd = aIter.Next() ) - if( 0 != ( pTxtNd = ((SwTxtINetFmt*)pFnd)->GetpTxtNode()) && + for( SwTxtINetFmt* pFnd = aIter.First(); pFnd; pFnd = aIter.Next() ) + if( 0 != ( pTxtNd = pFnd->GetpTxtNode()) && pTxtNd->GetNodes().IsDocNodes() ) { - SwTxtINetFmt& rAttr = *(SwTxtINetFmt*)pFnd; + SwTxtINetFmt& rAttr = *pFnd; SwPosition aTmpPos( *pTxtNd ); _SetGetExpFld aPos( aTmpPos.nNode, rAttr ); SwCntntFrm* pFrm; if( pTxtNd->GetIndex() < nBodySttNdIdx && - 0 != ( pFrm = pTxtNd->GetFrm( &aPt )) ) + 0 != ( pFrm = pTxtNd->getLayoutFrm( GetLayout(), &aPt )) ) aPos.SetBodyPos( *pFrm ); if( bNext diff --git a/sw/source/core/crsr/crstrvl1.cxx b/sw/source/core/crsr/crstrvl1.cxx index 55c407d1f209..3bdd40e7efd0 100644 --- a/sw/source/core/crsr/crstrvl1.cxx +++ b/sw/source/core/crsr/crstrvl1.cxx @@ -95,7 +95,7 @@ sal_Bool SwCrsrShell::GoStartSentence() sal_Bool SwCrsrShell::SelectWord( const Point* pPt ) { - return pCurCrsr->SelectWord( pPt ); + return pCurCrsr->SelectWord( this, pPt ); } sal_Bool SwCrsrShell::ExpandToSentenceBorders() diff --git a/sw/source/core/crsr/pam.cxx b/sw/source/core/crsr/pam.cxx index 48e22c79ec6b..b6615ffae076 100644 --- a/sw/source/core/crsr/pam.cxx +++ b/sw/source/core/crsr/pam.cxx @@ -640,7 +640,11 @@ sal_uInt16 SwPaM::GetPageNum( sal_Bool bAtPoint, const Point* pLayPos ) const SwPosition* pPos = bAtPoint ? m_pPoint : m_pMark; if( 0 != ( pNd = pPos->nNode.GetNode().GetCntntNode() ) && +<<<<<<< local + 0 != ( pCFrm = pNd->getLayoutFrm( pNd->GetDoc()->GetCurrentLayout(), pLayPos, pPos, FALSE )) && +======= 0 != ( pCFrm = pNd->GetFrm( pLayPos, pPos, sal_False )) && +>>>>>>> other 0 != ( pPg = pCFrm->FindPageFrm() )) return pPg->GetPhyPageNum(); return 0; @@ -683,7 +687,11 @@ sal_Bool SwPaM::HasReadonlySel( bool bFormView ) const const SwCntntFrm *pFrm; if( 0 != ( pNd = GetPoint()->nNode.GetNode().GetCntntNode() )) +<<<<<<< local + pFrm = pNd->getLayoutFrm( pNd->GetDoc()->GetCurrentLayout(), &aTmpPt, GetPoint(), FALSE ); +======= pFrm = pNd->GetFrm( &aTmpPt, GetPoint(), sal_False ); +>>>>>>> other else pFrm = 0; @@ -711,7 +719,11 @@ sal_Bool SwPaM::HasReadonlySel( bool bFormView ) const if( !bRet && HasMark() && GetPoint()->nNode != GetMark()->nNode ) { if( 0 != ( pNd = GetMark()->nNode.GetNode().GetCntntNode() )) +<<<<<<< local + pFrm = pNd->getLayoutFrm( pNd->GetDoc()->GetCurrentLayout(), &aTmpPt, GetMark(), FALSE ); +======= pFrm = pNd->GetFrm( &aTmpPt, GetMark(), sal_False ); +>>>>>>> other else pFrm = 0; @@ -868,7 +880,7 @@ SwCntntNode* GetNode( SwPaM & rPam, sal_Bool& rbFirst, SwMoveFn fnMove, { if( ( - 0 == ( pFrm = pNd->GetFrm()) || + 0 == ( pFrm = pNd->getLayoutFrm( pNd->GetDoc()->GetCurrentLayout() ) ) || ( !bInReadOnly && pFrm->IsProtected() ) || (pFrm->IsTxtFrm() && ((SwTxtFrm*)pFrm)->IsHiddenNow()) ) || @@ -905,7 +917,7 @@ SwCntntNode* GetNode( SwPaM & rPam, sal_Bool& rbFirst, SwMoveFn fnMove, { // nur in der AutoTextSection koennen Node stehen, die // nicht angezeigt werden !! - if( 0 == ( pFrm = pNd->GetFrm()) || + if( 0 == ( pFrm = pNd->getLayoutFrm( pNd->GetDoc()->GetCurrentLayout() ) ) || ( !bInReadOnly && pFrm->IsProtected() ) || ( pFrm->IsTxtFrm() && ((SwTxtFrm*)pFrm)->IsHiddenNow() ) ) @@ -1236,7 +1248,7 @@ void SwPaM::InvalidatePaM() SwInsTxt aHint( Start()->nContent.GetIndex(), End()->nContent.GetIndex() - Start()->nContent.GetIndex() + 1 ); SwModify *_pModify=(SwModify*)_pTxtNd; - _pModify->Modify( 0, &aHint); + _pModify->ModifyNotification( 0, &aHint); } } diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx index b7106ade751c..ac76ca3f2d04 100644 --- a/sw/source/core/crsr/swcrsr.cxx +++ b/sw/source/core/crsr/swcrsr.cxx @@ -31,10 +31,8 @@ #include <hintids.hxx> #include <editeng/protitem.hxx> - #include <com/sun/star/i18n/WordType.hdl> #include <com/sun/star/i18n/CharType.hdl> - #include <unotools/charclass.hxx> #include <svl/ctloptions.hxx> #include <swmodule.hxx> @@ -54,6 +52,7 @@ #include <scriptinfo.hxx> #include <crstate.hxx> #include <docsh.hxx> +#include <viewsh.hxx> #include <frmatr.hxx> #include <breakit.hxx> #include <crsskip.hxx> @@ -350,7 +349,7 @@ sal_Bool SwCursor::IsSelOvr( int eFlags ) const SwNode* pNd = &GetPoint()->nNode.GetNode(); if( pNd->IsCntntNode() && !dynamic_cast<SwUnoCrsr*>(this) ) { - const SwCntntFrm* pFrm = ((SwCntntNode*)pNd)->GetFrm(); + const SwCntntFrm* pFrm = ((SwCntntNode*)pNd)->getLayoutFrm( pDoc->GetCurrentLayout() ); if( pFrm && pFrm->IsValid() && 0 == pFrm->Frm().Height() && 0 != ( nsSwCursorSelOverFlags::SELOVER_CHANGEPOS & eFlags ) ) { @@ -367,7 +366,7 @@ sal_Bool SwCursor::IsSelOvr( int eFlags ) if( !pFrm ) { bGoNxt = !bGoNxt; - pFrm = ((SwCntntNode*)pNd)->GetFrm(); + pFrm = ((SwCntntNode*)pNd)->getLayoutFrm( pDoc->GetCurrentLayout() ); while ( pFrm && 0 == pFrm->Frm().Height() ) { pFrm = bGoNxt ? pFrm->GetNextCntntFrm() @@ -424,7 +423,7 @@ sal_Bool SwCursor::IsSelOvr( int eFlags ) const SwTableNode* pPtNd = pNd->FindTableNode(); if( (pNd = &GetMark()->nNode.GetNode())->IsCntntNode() && - !((SwCntntNode*)pNd)->GetFrm() && !dynamic_cast<SwUnoCrsr*>(this) ) + !((SwCntntNode*)pNd)->getLayoutFrm( pDoc->GetCurrentLayout() ) && !dynamic_cast<SwUnoCrsr*>(this) ) { DeleteMark(); RestoreSavePos(); @@ -695,7 +694,7 @@ sal_Bool SwCursor::IsAtValidPos( sal_Bool bPoint ) const const SwPosition* pPos = bPoint ? GetPoint() : GetMark(); const SwNode* pNd = &pPos->nNode.GetNode(); - if( pNd->IsCntntNode() && !((SwCntntNode*)pNd)->GetFrm() && + if( pNd->IsCntntNode() && !((SwCntntNode*)pNd)->getLayoutFrm( pDoc->GetCurrentLayout() ) && !dynamic_cast<const SwUnoCrsr*>(this) ) { return sal_False; @@ -1176,9 +1175,13 @@ sal_Bool SwCursor::GoPrevWord() return GoPrevWordWT( WordType::ANYWORD_IGNOREWHITESPACES ); } +<<<<<<< local +BOOL SwCursor::SelectWord( ViewShell* pViewShell, const Point* pPt ) +======= sal_Bool SwCursor::SelectWord( const Point* pPt ) +>>>>>>> other { - return SelectWordWT( WordType::ANYWORD_IGNOREWHITESPACES, pPt ); + return SelectWordWT( pViewShell, WordType::ANYWORD_IGNOREWHITESPACES, pPt ); } sal_Bool SwCursor::IsStartWordWT( sal_Int16 nWordType ) const @@ -1354,20 +1357,24 @@ sal_Bool SwCursor::GoPrevWordWT( sal_Int16 nWordType ) return bRet; } +<<<<<<< local +BOOL SwCursor::SelectWordWT( ViewShell* pViewShell, sal_Int16 nWordType, const Point* pPt ) +======= sal_Bool SwCursor::SelectWordWT( sal_Int16 nWordType, const Point* pPt ) +>>>>>>> other { SwCrsrSaveState aSave( *this ); sal_Bool bRet = sal_False; sal_Bool bForward = sal_True; DeleteMark(); - SwRootFrm* pLayout; - if( pPt && 0 != (pLayout = GetDoc()->GetRootFrm()) ) + const SwRootFrm* pLayout = pViewShell->GetLayout(); + if( pPt && 0 != pLayout ) { // set the cursor to the layout position Point aPt( *pPt ); pLayout->GetCrsrOfst( GetPoint(), aPt ); - } + } //swmod 071107//swmod 071225 const SwTxtNode* pTxtNd = GetNode()->GetTxtNode(); if( pTxtNd && pBreakIt->GetBreakIter().is() ) @@ -1573,7 +1580,7 @@ SwCursor::DoSetBidiLevelLeftRight( // for visual cursor travelling (used in bidi layout) // we first have to convert the logic to a visual position Point aPt; - pSttFrm = rTNd.GetFrm( &aPt, GetPoint() ); + pSttFrm = rTNd.getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, GetPoint() ); if( pSttFrm ) { sal_uInt8 nCrsrLevel = GetCrsrBidiLevel(); @@ -1712,7 +1719,7 @@ sal_Bool SwCursor::LeftRight( sal_Bool bLeft, sal_uInt16 nCnt, sal_uInt16 nMode, if ( &rTmpNode != &rNode && rTmpNode.IsTxtNode() ) { Point aPt; - const SwCntntFrm* pEndFrm = ((SwTxtNode&)rTmpNode).GetFrm( &aPt, GetPoint() ); + const SwCntntFrm* pEndFrm = ((SwTxtNode&)rTmpNode).getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, GetPoint() ); if ( pEndFrm ) { if ( ! pEndFrm->IsRightToLeft() != ! pSttFrm->IsRightToLeft() ) @@ -1781,7 +1788,7 @@ sal_Bool SwCursor::UpDown( sal_Bool bUp, sal_uInt16 nCnt, Point aPt; if( pPt ) aPt = *pPt; - SwCntntFrm* pFrm = GetCntntNode()->GetFrm( &aPt, GetPoint() ); + SwCntntFrm* pFrm = GetCntntNode()->getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, GetPoint() ); if( pFrm ) { @@ -1819,7 +1826,7 @@ sal_Bool SwCursor::UpDown( sal_Bool bUp, sal_uInt16 nCnt, const SwNode* pEndNd = pTblNd->EndOfSectionNode(); GetPoint()->nNode = *pEndNd; pTblCrsr->Move( fnMoveBackward, fnGoNode ); - pFrm = GetCntntNode()->GetFrm( &aPt, GetPoint() ); + pFrm = GetCntntNode()->getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, GetPoint() ); } } @@ -1828,7 +1835,7 @@ sal_Bool SwCursor::UpDown( sal_Bool bUp, sal_uInt16 nCnt, : pFrm->UnitDown( this, nUpDownX, bInReadOnly ) ) && CheckNodesRange( aOldPos.nNode, GetPoint()->nNode, bChkRange )) { - pFrm = GetCntntNode()->GetFrm( &aPt, GetPoint() ); + pFrm = GetCntntNode()->getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, GetPoint() ); --nCnt; } @@ -1839,7 +1846,7 @@ sal_Bool SwCursor::UpDown( sal_Bool bUp, sal_uInt16 nCnt, { // dann versuche den Cursor auf die Position zu setzen, // auf halber Heohe vom Char-Rectangle - pFrm = GetCntntNode()->GetFrm( &aPt, GetPoint() ); + pFrm = GetCntntNode()->getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, GetPoint() ); SwCrsrMoveState eTmpState( MV_UPDOWN ); eTmpState.bSetInReadOnly = bInReadOnly; SwRect aTmpRect; @@ -1872,7 +1879,7 @@ sal_Bool SwCursor::UpDown( sal_Bool bUp, sal_uInt16 nCnt, sal_Bool SwCursor::LeftRightMargin( sal_Bool bLeft, sal_Bool bAPI ) { Point aPt; - SwCntntFrm * pFrm = GetCntntNode()->GetFrm( &aPt, GetPoint() ); + SwCntntFrm * pFrm = GetCntntNode()->getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, GetPoint() ); // calculate cursor bidi level if ( pFrm ) @@ -1886,7 +1893,7 @@ sal_Bool SwCursor::IsAtLeftRightMargin( sal_Bool bLeft, sal_Bool bAPI ) const { sal_Bool bRet = sal_False; Point aPt; - SwCntntFrm * pFrm = GetCntntNode()->GetFrm( &aPt, GetPoint() ); + SwCntntFrm * pFrm = GetCntntNode()->getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, GetPoint() ); if( pFrm ) { SwPaM aPam( *GetPoint() ); diff --git a/sw/source/core/crsr/trvlfnfl.cxx b/sw/source/core/crsr/trvlfnfl.cxx index e20724fe157d..c3eeaf61b952 100644 --- a/sw/source/core/crsr/trvlfnfl.cxx +++ b/sw/source/core/crsr/trvlfnfl.cxx @@ -95,7 +95,7 @@ sal_Bool SwCrsrShell::GotoFtnTxt() _GetCrsr()->GetPoint()->nNode.GetNode().GetTxtNode() : NULL; if( pTxtNd ) { - const SwFrm *pFrm = pTxtNd->GetFrm( &_GetCrsr()->GetSttPos(), + const SwFrm *pFrm = pTxtNd->getLayoutFrm( GetLayout(), &_GetCrsr()->GetSttPos(), _GetCrsr()->Start() ); const SwFtnBossFrm* pFtnBoss; sal_Bool bSkip = pFrm && pFrm->IsInFtn(); diff --git a/sw/source/core/crsr/trvltbl.cxx b/sw/source/core/crsr/trvltbl.cxx index 0c6a659f2eb0..0ecc02da4e4a 100644 --- a/sw/source/core/crsr/trvltbl.cxx +++ b/sw/source/core/crsr/trvltbl.cxx @@ -193,8 +193,13 @@ sal_Bool SwCrsrShell::_SelTblRowOrCol( bool bRow, bool bRowSimple ) { const SwShellCrsr *pCrsr = _GetCrsr(); const SwFrm* pStartFrm = pFrm; +<<<<<<< local + const SwCntntNode *pCNd = pCrsr->GetCntntNode( FALSE ); + const SwFrm* pEndFrm = pCNd ? pCNd->getLayoutFrm( GetLayout(), &pCrsr->GetMkPos() ) : 0; +======= const SwCntntNode *pCNd = pCrsr->GetCntntNode( sal_False ); const SwFrm* pEndFrm = pCNd ? pCNd->GetFrm( &pCrsr->GetMkPos() ) : 0; +>>>>>>> other if ( bRow ) { @@ -381,7 +386,7 @@ bool lcl_FindNextCell( SwNodeIndex& rIdx, sal_Bool bInReadOnly ) if ( !pCNd ) return false; - SwCntntFrm* pFrm = pCNd->GetFrm(); + SwCntntFrm* pFrm = pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout() ); if ( 0 == pFrm || pCNd->FindTableNode() != pTblNd || (!bInReadOnly && pFrm->IsProtected() ) ) @@ -413,7 +418,7 @@ bool lcl_FindNextCell( SwNodeIndex& rIdx, sal_Bool bInReadOnly ) return false; // check if we have found a suitable table cell: - pFrm = pCNd->GetFrm(); + pFrm = pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout() ); if ( 0 != pFrm && pCNd->FindTableNode() == pTblNd && (bInReadOnly || !pFrm->IsProtected() ) ) @@ -455,7 +460,7 @@ bool lcl_FindPrevCell( SwNodeIndex& rIdx, sal_Bool bInReadOnly ) if ( !pCNd ) return false; - SwCntntFrm* pFrm = pCNd->GetFrm(); + SwCntntFrm* pFrm = pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout() ); if( 0 == pFrm || pCNd->FindTableNode() != pTblNd || (!bInReadOnly && pFrm->IsProtected() )) @@ -476,7 +481,7 @@ bool lcl_FindPrevCell( SwNodeIndex& rIdx, sal_Bool bInReadOnly ) if ( !pCNd ) return false; - pFrm = pCNd->GetFrm(); + pFrm = pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout() ); if( 0 != pFrm && pCNd->FindTableNode() == pTblNd && (bInReadOnly || !pFrm->IsProtected() ) ) @@ -747,7 +752,7 @@ String SwCrsrShell::GetBoxNms() const if( IsTableMode() ) { SwCntntNode *pCNd = pTblCrsr->Start()->nNode.GetNode().GetCntntNode(); - pFrm = pCNd ? pCNd->GetFrm() : 0; + pFrm = pCNd ? pCNd->getLayoutFrm( GetLayout() ) : 0; if( !pFrm ) return sNm; @@ -769,7 +774,7 @@ String SwCrsrShell::GetBoxNms() const } SwCntntNode* pCNd = pPos->nNode.GetNode().GetCntntNode(); - pFrm = pCNd ? pCNd->GetFrm() : 0; + pFrm = pCNd ? pCNd->getLayoutFrm( GetLayout() ) : 0; if( pFrm ) { diff --git a/sw/source/core/crsr/unocrsr.cxx b/sw/source/core/crsr/unocrsr.cxx index b57e423623a2..050306cdc8a7 100644 --- a/sw/source/core/crsr/unocrsr.cxx +++ b/sw/source/core/crsr/unocrsr.cxx @@ -47,14 +47,6 @@ SwUnoCrsr::SwUnoCrsr( const SwPosition &rPos, SwPaM* pRing ) {} -// @@@ semantic: no copy ctor. -SwUnoCrsr::SwUnoCrsr( SwUnoCrsr& rICrsr ) - : SwCursor( rICrsr ), SwModify( 0 ), - bRemainInSection( rICrsr.bRemainInSection ), - bSkipOverHiddenSections( rICrsr.bSkipOverHiddenSections ), - bSkipOverProtectSections( rICrsr.bSkipOverProtectSections ) -{} - SwUnoCrsr::~SwUnoCrsr() { SwDoc* pDoc = GetDoc(); @@ -252,9 +244,15 @@ void SwUnoTableCrsr::MakeBoxSels() const SwCntntNode* pCNd; bool bMakeTblCrsrs = true; if( GetPoint()->nNode.GetIndex() && GetMark()->nNode.GetIndex() && +<<<<<<< local + 0 != ( pCNd = GetCntntNode() ) && pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout() ) && + 0 != ( pCNd = GetCntntNode(FALSE) ) && pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout() ) ) + bMakeTblCrsrs = GetDoc()->GetCurrentLayout()->MakeTblCrsrs( *this ); //swmod 080218 +======= 0 != ( pCNd = GetCntntNode() ) && pCNd->GetFrm() && 0 != ( pCNd = GetCntntNode(sal_False) ) && pCNd->GetFrm() ) bMakeTblCrsrs = GetDoc()->GetRootFrm()->MakeTblCrsrs( *this ); +>>>>>>> other if ( !bMakeTblCrsrs ) { diff --git a/sw/source/core/crsr/viscrs.cxx b/sw/source/core/crsr/viscrs.cxx index 53cd935289de..2dc08a28dfd5 100644 --- a/sw/source/core/crsr/viscrs.cxx +++ b/sw/source/core/crsr/viscrs.cxx @@ -454,7 +454,11 @@ void SwVisCrsr::_SetPosAndShow() if( rNode.IsTxtNode() ) { const SwTxtNode& rTNd = *rNode.GetTxtNode(); +<<<<<<< local + const SwFrm* pFrm = rTNd.getLayoutFrm( pCrsrShell->GetLayout(), 0, 0, FALSE ); +======= const SwFrm* pFrm = rTNd.GetFrm( 0, 0, sal_False ); +>>>>>>> other if ( pFrm ) { const SwScriptInfo* pSI = ((SwTxtFrm*)pFrm)->GetScriptInfo(); @@ -735,11 +739,11 @@ void SwShellCrsr::FillRects() // die neuen Rechtecke berechnen if( HasMark() && GetPoint()->nNode.GetNode().IsCntntNode() && - GetPoint()->nNode.GetNode().GetCntntNode()->GetFrm() && + GetPoint()->nNode.GetNode().GetCntntNode()->getLayoutFrm( GetShell()->GetLayout() ) && (GetMark()->nNode == GetPoint()->nNode || (GetMark()->nNode.GetNode().IsCntntNode() && - GetMark()->nNode.GetNode().GetCntntNode()->GetFrm() ) )) - GetDoc()->GetRootFrm()->CalcFrmRects( *this, GetShell()->IsTableMode() ); + GetMark()->nNode.GetNode().GetCntntNode()->getLayoutFrm( GetShell()->GetLayout() ) ) )) + GetShell()->GetLayout()->CalcFrmRects( *this, GetShell()->IsTableMode() ); //swmod 071107//swmod 071225 } @@ -811,8 +815,13 @@ short SwShellCrsr::MaxReplaceArived() // alte Actions beenden; die Tabellen-Frames werden angelegt und // eine SSelection kann erzeugt werden SvUShorts aArr; +<<<<<<< local + USHORT nActCnt; + ViewShell *pShell = const_cast< SwCrsrShell* >( GetShell() ), +======= sal_uInt16 nActCnt; ViewShell *pShell = GetDoc()->GetRootFrm()->GetCurrShell(), +>>>>>>> other *pSh = pShell; do { for( nActCnt = 0; pSh->ActionPend(); ++nActCnt ) @@ -829,7 +838,7 @@ short SwShellCrsr::MaxReplaceArived() for( nActCnt = aArr[n]; nActCnt--; ) pSh->StartAction(); pSh = (ViewShell*)pSh->GetNext(); - } + } //swmod 071107//swmod 071225 } else // ansonsten aus dem Basic, und dann auf RET_YES schalten @@ -942,7 +951,7 @@ void SwShellTableCrsr::FillRects() if( !pCNd ) continue; - SwFrm* pFrm = pCNd->GetFrm( &GetSttPos() ); + SwFrm* pFrm = pCNd->getLayoutFrm( GetShell()->GetLayout(), &GetSttPos() ); while( pFrm && !pFrm->IsCellFrm() ) pFrm = pFrm->GetUpper(); @@ -978,7 +987,7 @@ sal_Bool SwShellTableCrsr::IsInside( const Point& rPt ) const if( !pCNd ) continue; - SwFrm* pFrm = pCNd->GetFrm( &GetPtPos() ); + SwFrm* pFrm = pCNd->getLayoutFrm( GetShell()->GetLayout(), &GetPtPos() ); while( pFrm && !pFrm->IsCellFrm() ) pFrm = pFrm->GetUpper(); ASSERT( pFrm, "Node nicht in einer Tabelle" ); diff --git a/sw/source/core/doc/acmplwrd.cxx b/sw/source/core/doc/acmplwrd.cxx index e53679d8d92e..f1285cd48ba1 100644 --- a/sw/source/core/doc/acmplwrd.cxx +++ b/sw/source/core/doc/acmplwrd.cxx @@ -66,11 +66,12 @@ public: SwAutoCompleteClient& operator=(const SwAutoCompleteClient& rClient); - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); const SwDoc& GetDoc(){return *pDoc;} #ifdef DBG_UTIL static sal_uLong GetElementCount() {return nSwAutoCompleteClientCount;} #endif +protected: + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); }; /* -----------------------------05.08.2002 12:48------------------------------ @@ -156,15 +157,15 @@ SwAutoCompleteClient& SwAutoCompleteClient::operator=(const SwAutoCompleteClient pAutoCompleteWord = rClient.pAutoCompleteWord; pDoc = rClient.pDoc; if(rClient.GetRegisteredIn()) - rClient.pRegisteredIn->Add(this); + ((SwModify*)rClient.GetRegisteredIn())->Add(this); else if(GetRegisteredIn()) - pRegisteredIn->Remove(this); + GetRegisteredInNonConst()->Remove(this); return *this; } /* -----------------------------05.08.2002 12:49------------------------------ ---------------------------------------------------------------------------*/ -void SwAutoCompleteClient::Modify(SfxPoolItem *pOld, SfxPoolItem *) +void SwAutoCompleteClient::Modify( const SfxPoolItem* pOld, const SfxPoolItem *) { switch( pOld ? pOld->Which() : 0 ) { diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx index 47dc02014aa7..3271a497f24b 100644 --- a/sw/source/core/doc/doc.cxx +++ b/sw/source/core/doc/doc.cxx @@ -112,14 +112,19 @@ #include <SwUndoFmt.hxx> #include <unocrsr.hxx> #include <docsh.hxx> +#include <viewopt.hxx> #include <docfld.hxx> // _SetGetExpFld #include <docufld.hxx> // SwPostItField #include <viewsh.hxx> #include <shellres.hxx> #include <txtfrm.hxx> +<<<<<<< local +#include <attrhint.hxx> +======= #include <wdocsh.hxx> // SwWebDocShell #include <prtopt.hxx> // SwPrintOptions +>>>>>>> other #include <vector> #include <map> @@ -127,6 +132,8 @@ #include <osl/interlck.h> #include <vbahelper/vbaaccesshelper.hxx> +#include "switerator.hxx" + /* @@@MAINTAINABILITY-HORROR@@@ Probably unwanted dependency on SwDocShell */ @@ -203,7 +210,7 @@ bool SwDoc::get(/*[in]*/ DocumentSettingId id) const // <-- // COMPATIBILITY FLAGS END - case BROWSE_MODE: return mbBrowseMode; + case BROWSE_MODE: return mbLastBrowseMode; // Attention: normally the ViewShell has to be asked! case HTML_MODE: return mbHTMLMode; case GLOBAL_DOCUMENT: return mbIsGlobalDoc; case GLOBAL_DOCUMENT_SAVE_LINKS: return mbGlblDocSaveLinks; @@ -327,8 +334,8 @@ void SwDoc::set(/*[in]*/ DocumentSettingId id, /*[in]*/ bool value) // <-- // COMPATIBILITY FLAGS END - case BROWSE_MODE: - mbBrowseMode = value; + case BROWSE_MODE: //can be used temporary (load/save) when no ViewShell is avaiable + mbLastBrowseMode = value; break; case HTML_MODE: mbHTMLMode = value; @@ -370,8 +377,13 @@ const i18n::ForbiddenCharacters* return pRet; } +<<<<<<< local +void SwDoc::setForbiddenCharacters(/*[in]*/ USHORT nLang, + /*[in]*/ const com::sun::star::i18n::ForbiddenCharacters& rFChars ) +======= void SwDoc::setForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, /*[in]*/ const i18n::ForbiddenCharacters& rFChars ) +>>>>>>> other { if( !xForbiddenCharsTable.isValid() ) { @@ -388,12 +400,14 @@ void SwDoc::setForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, pDrawModel->ReformatAllTextObjects(); } - if( pLayout && !mbInReading ) + SwRootFrm* pTmpRoot = GetCurrentLayout(); + if( pTmpRoot && !mbInReading ) { - pLayout->StartAllAction(); - pLayout->InvalidateAllCntnt(); - pLayout->EndAllAction(); - } + pTmpRoot->StartAllAction(); + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(), std::bind2nd(std::mem_fun(&SwRootFrm::InvalidateAllCntnt), INV_SIZE)); + pTmpRoot->EndAllAction(); + }//swmod 080310 SetModified(); } @@ -457,12 +471,14 @@ void SwDoc::setCharacterCompressionType( /*[in]*/SwCharCompressType n ) pDrawModel->ReformatAllTextObjects(); } - if( pLayout && !mbInReading ) + SwRootFrm* pTmpRoot = GetCurrentLayout(); + if( pTmpRoot && !mbInReading ) { - pLayout->StartAllAction(); - pLayout->InvalidateAllCntnt(); - pLayout->EndAllAction(); - } + pTmpRoot->StartAllAction(); + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(), std::bind2nd(std::mem_fun(&SwRootFrm::InvalidateAllCntnt), INV_SIZE)); + pTmpRoot->EndAllAction(); + }//swmod 080310 SetModified(); } } @@ -1088,10 +1104,16 @@ sal_uInt16 _PostItFld::GetPageNo( //sondern die des ersten Auftretens des PostIts innerhalb des selektierten //Bereichs ermittelt werden. rVirtPgNo = 0; +<<<<<<< local + USHORT nPos = GetCntnt(); + SwIterator<SwTxtFrm,SwTxtNode> aIter( GetFld()->GetTxtNode() ); + for( SwTxtFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) +======= sal_uInt16 nPos = GetCntnt(); SwClientIter aIter( (SwModify &)GetFld()->GetTxtNode() ); for( SwTxtFrm* pFrm = (SwTxtFrm*)aIter.First( TYPE( SwFrm )); pFrm; pFrm = (SwTxtFrm*)aIter.Next() ) +>>>>>>> other { if( pFrm->GetOfst() > nPos || (pFrm->HasFollow() && pFrm->GetFollow()->GetOfst() <= nPos) ) @@ -1121,13 +1143,11 @@ bool lcl_GetPostIts( if( pFldType->GetDepends() ) { // Modify-Object gefunden, trage alle Felder ins Array ein - SwClientIter aIter( *pFldType ); - SwClient* pLast; + SwIterator<SwFmtFld,SwFieldType> aIter( *pFldType ); const SwTxtFld* pTxtFld; - - for( pLast = aIter.First( TYPE(SwFmtFld)); pLast; pLast = aIter.Next() ) + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) { - if( 0 != ( pTxtFld = ((SwFmtFld*)pLast)->GetTxtFld() ) && + if( 0 != ( pTxtFld = pFld->GetTxtFld() ) && pTxtFld->GetTxtNode().GetNodes().IsDocNodes() ) { bHasPostIts = true; @@ -1218,15 +1238,12 @@ static sal_Int32 lcl_GetPaperBin( const SwPageFrm *pStartFrm ) void SwDoc::CalculatePagesForPrinting( + const SwRootFrm& rLayout, /* out */ SwRenderData &rData, const SwPrintUIOptions &rOptions, bool bIsPDFExport, sal_Int32 nDocPageCount ) { - DBG_ASSERT( pLayout, "no layout present" ); - if (!pLayout) - return; - const sal_Int32 nContent = rOptions.getIntValue( "PrintContent", 0 ); const bool bPrintSelection = nContent == 2; @@ -1243,7 +1260,7 @@ void SwDoc::CalculatePagesForPrinting( aMulti.SetTotalRange( Range( 0, RANGE_MAX ) ); aMulti.Select( aPages ); - const SwPageFrm *pStPage = (SwPageFrm*)pLayout->Lower(); + const SwPageFrm *pStPage = dynamic_cast<const SwPageFrm*>( rLayout.Lower() ); const SwFrm *pEndPage = pStPage; sal_uInt16 nFirstPageNo = 0; @@ -1442,7 +1459,7 @@ void SwDoc::UpdatePagesForPrintingWithPostItData( { // get the correct number of current pages for the post-it document rData.m_pPostItShell->CalcLayout(); - const sal_Int32 nPages = rData.m_pPostItDoc->GetPageCount(); + const sal_Int32 nPages = rData.m_pPostItShell->GetPageCount(); aPostItLastStartPageNum[ nPhyPageNum ] = nPages; } } @@ -1450,7 +1467,7 @@ void SwDoc::UpdatePagesForPrintingWithPostItData( // format post-it doc to get correct number of pages rData.m_pPostItShell->CalcLayout(); - const sal_Int32 nPostItDocPageCount = rData.m_pPostItDoc->GetPageCount(); + const sal_Int32 nPostItDocPageCount = rData.m_pPostItShell->GetPageCount(); if (nPostItMode == POSTITS_ONLY || nPostItMode == POSTITS_ENDDOC) { @@ -1569,6 +1586,7 @@ void SwDoc::UpdatePagesForPrintingWithPostItData( void SwDoc::CalculatePagePairsForProspectPrinting( + const SwRootFrm& rLayout, /* out */ SwRenderData &rData, const SwPrintUIOptions &rOptions, sal_Int32 nDocPageCount ) @@ -1597,11 +1615,10 @@ void SwDoc::CalculatePagePairsForProspectPrinting( } StringRangeEnumerator aRange( aPageRange, 1, nDocPageCount, 0 ); - DBG_ASSERT( pLayout, "no layout present" ); - if (!pLayout || aRange.size() <= 0) + if ( aRange.size() <= 0) return; - const SwPageFrm *pStPage = (SwPageFrm*)pLayout->Lower(); + const SwPageFrm *pStPage = dynamic_cast<const SwPageFrm*>( rLayout.Lower() ); sal_Int32 i = 0; for ( i = 1; pStPage && i < nDocPageCount; ++i ) pStPage = (SwPageFrm*)pStPage->GetNext(); @@ -1611,7 +1628,7 @@ void SwDoc::CalculatePagePairsForProspectPrinting( // currently for prospect printing all pages are valid to be printed // thus we add them all to the respective map and set for later use sal_Int32 nPageNum = 0; - const SwPageFrm *pPageFrm = (SwPageFrm*)pLayout->Lower(); + const SwPageFrm *pPageFrm = dynamic_cast<const SwPageFrm*>( rLayout.Lower() ); while( pPageFrm && nPageNum < nDocPageCount ) { DBG_ASSERT( pPageFrm, "Empty page frame. How are we going to print this?" ); @@ -1714,38 +1731,6 @@ void SwDoc::CalculatePagePairsForProspectPrinting( // thus we are done here. } - -sal_uInt16 SwDoc::GetPageCount() const -{ - return GetRootFrm() ? GetRootFrm()->GetPageNum() : 0; -} - -const Size SwDoc::GetPageSize( sal_uInt16 nPageNum, bool bSkipEmptyPages ) const -{ - Size aSize; - if ( GetRootFrm() && nPageNum ) - { - const SwPageFrm* pPage = static_cast<const SwPageFrm*> - (GetRootFrm()->Lower()); - - while ( --nPageNum && pPage->GetNext() ) - { - pPage = static_cast<const SwPageFrm*>( pPage->GetNext() ); - } - - // switch to next page for an empty page, if empty pages are not skipped - // in order to get a sensible page size for an empty page - e.g. for printing. - if ( !bSkipEmptyPages && pPage->IsEmptyPage() && pPage->GetNext() ) - { - pPage = static_cast<const SwPageFrm*>( pPage->GetNext() ); - } - - aSize = pPage->Frm().SSize(); - } - return aSize; -} - - /************************************************************************* * void UpdateDocStat( const SwDocStat& rStat ); *************************************************************************/ @@ -1775,10 +1760,8 @@ void SwDoc::UpdateDocStat( SwDocStat& rStat ) // #i93174#: notes contain paragraphs that are not nodes { SwFieldType * const pPostits( GetSysFldType(RES_POSTITFLD) ); - SwClientIter aIter(*pPostits); - SwFmtFld const * pFmtFld = - static_cast<SwFmtFld const*>(aIter.First( TYPE(SwFmtFld) )); - while (pFmtFld) + SwIterator<SwFmtFld,SwFieldType> aIter( *pPostits ); + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) { if (pFmtFld->IsFldInDoc()) { @@ -1786,12 +1769,16 @@ void SwDoc::UpdateDocStat( SwDocStat& rStat ) static_cast<SwPostItField const*>(pFmtFld->GetFld())); rStat.nAllPara += pField->GetNumberOfParagraphs(); } - pFmtFld = static_cast<SwFmtFld const*>(aIter.Next()); } } +<<<<<<< local + rStat.nPage = GetCurrentLayout() ? GetCurrentLayout()->GetPageNum() : 0; //swmod 080218 + rStat.bModified = FALSE; +======= rStat.nPage = GetRootFrm() ? GetRootFrm()->GetPageNum() : 0; rStat.bModified = sal_False; +>>>>>>> other SetDocStat( rStat ); com::sun::star::uno::Sequence < com::sun::star::beans::NamedValue > aStat( rStat.nPage ? 7 : 6); @@ -2096,33 +2083,30 @@ sal_Bool lcl_CheckSmartTagsAgain( const SwNodePtr& rpNd, void* ) void SwDoc::SpellItAgainSam( sal_Bool bInvalid, sal_Bool bOnlyWrong, sal_Bool bSmartTags ) { - ASSERT( GetRootFrm(), "SpellAgain: Where's my RootFrm?" ); + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();//swmod 080307 + ASSERT( GetCurrentLayout(), "SpellAgain: Where's my RootFrm?" ); if( bInvalid ) { - SwPageFrm *pPage = (SwPageFrm*)GetRootFrm()->Lower(); - while ( pPage ) - { - if ( bSmartTags ) - pPage->InvalidateSmartTags(); - - pPage->InvalidateSpelling(); - pPage = (SwPageFrm*)pPage->GetNext(); - } - GetRootFrm()->SetNeedGrammarCheck( true ); - + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::AllInvalidateSmartTagsOrSpelling),bSmartTags));//swmod 080305 + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::SetNeedGrammarCheck), true) ); if ( bSmartTags ) GetNodes().ForEach( lcl_CheckSmartTagsAgain, &bOnlyWrong ); - GetNodes().ForEach( lcl_SpellAndGrammarAgain, &bOnlyWrong ); } - GetRootFrm()->SetIdleFlags(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::SetIdleFlags));//swmod 080307 } void SwDoc::InvalidateAutoCompleteFlag() { - if( GetRootFrm() ) + SwRootFrm* pTmpRoot = GetCurrentLayout(); + if( pTmpRoot ) { +<<<<<<< local + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllInvalidateAutoCompleteWords));//swmod 080305 + for( ULONG nNd = 1, nCnt = GetNodes().Count(); nNd < nCnt; ++nNd ) +======= SwPageFrm *pPage = (SwPageFrm*)GetRootFrm()->Lower(); while ( pPage ) { @@ -2130,12 +2114,14 @@ void SwDoc::InvalidateAutoCompleteFlag() pPage = (SwPageFrm*)pPage->GetNext(); } for( sal_uLong nNd = 1, nCnt = GetNodes().Count(); nNd < nCnt; ++nNd ) +>>>>>>> other { SwTxtNode* pTxtNode = GetNodes()[ nNd ]->GetTxtNode(); if ( pTxtNode ) pTxtNode->SetAutoCompleteWordDirty( true ); } - GetRootFrm()->SetIdleFlags(); - } + + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::SetIdleFlags));//swmod 080228 + } //swmod 080219 } const SwFmtINetFmt* SwDoc::FindINetAttr( const String& rName ) const @@ -2241,9 +2227,8 @@ bool SwDoc::RemoveInvisibleContent() { SwTxtNode* pTxtNd; - SwClientIter aIter( *GetSysFldType( RES_HIDDENPARAFLD ) ); - for( SwFmtFld* pFmtFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); - pFmtFld; pFmtFld = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *GetSysFldType( RES_HIDDENPARAFLD ) ); + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) { if( pFmtFld->GetTxtFld() && 0 != ( pTxtNd = (SwTxtNode*)pFmtFld->GetTxtFld()->GetpTxtNode() ) && @@ -2486,14 +2471,11 @@ sal_Bool SwDoc::ConvertFieldsToText() if ( RES_POSTITFLD == pCurType->Which() ) continue; - SwClientIter aIter( *(SwFieldType*)pCurType ); - const SwFmtFld* pCurFldFmt = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); + SwIterator<SwFmtFld,SwFieldType> aIter( *pCurType ); ::std::vector<const SwFmtFld*> aFieldFmts; - while (pCurFldFmt) - { + for( SwFmtFld* pCurFldFmt = aIter.First(); pCurFldFmt; pCurFldFmt = aIter.Next() ) aFieldFmts.push_back(pCurFldFmt); - pCurFldFmt = (SwFmtFld*)aIter.Next(); - } + ::std::vector<const SwFmtFld*>::iterator aBegin = aFieldFmts.begin(); ::std::vector<const SwFmtFld*>::iterator aEnd = aFieldFmts.end(); while(aBegin != aEnd) @@ -2785,21 +2767,8 @@ void SwDoc::ChkCondColls() for (sal_uInt16 n = 0; n < pTxtFmtCollTbl->Count(); n++) { SwTxtFmtColl *pColl = (*pTxtFmtCollTbl)[n]; - if (RES_CONDTXTFMTCOLL == pColl->Which()) - { - SwClientIter aIter(*pColl); - - SwClient * pClient = aIter.First(TYPE(SwTxtNode)); - while (pClient) - { - SwTxtNode * pTxtNode = static_cast<SwTxtNode *>(pClient); - - pTxtNode->ChkCondColl(); - - pClient = aIter.Next(); - } - } + pColl->CallSwClientNotify( SwAttrHint(RES_CONDTXTFMTCOLL) ); } } diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx index 50fb0e7b98f7..f0cc94b6ee19 100644 --- a/sw/source/core/doc/docbm.cxx +++ b/sw/source/core/doc/docbm.cxx @@ -1285,7 +1285,7 @@ void _SaveCntntIdx(SwDoc* pDoc, if( pNode ) { - SwFrm* pFrm = pNode->GetFrm(); + SwFrm* pFrm = pNode->getLayoutFrm( pDoc->GetCurrentLayout() ); #if OSL_DEBUG_LEVEL > 1 static sal_Bool bViaDoc = sal_False; if( bViaDoc ) @@ -1489,7 +1489,7 @@ void _RestoreCntntIdx(SwDoc* pDoc, { SwFrmFmt *pFrmFmt = (*pSpz)[ aSave.GetCount() ]; SfxPoolItem *pAnchor = (SfxPoolItem*)&pFrmFmt->GetAnchor(); - pFrmFmt->SwModify::Modify( pAnchor, pAnchor ); + pFrmFmt->NotifyClients( pAnchor, pAnchor ); } break; diff --git a/sw/source/core/doc/docchart.cxx b/sw/source/core/doc/docchart.cxx index 1d1890521acf..95cdd4caed1b 100644 --- a/sw/source/core/doc/docchart.cxx +++ b/sw/source/core/doc/docchart.cxx @@ -132,7 +132,7 @@ IMPL_LINK( SwDoc, DoUpdateAllCharts, Timer *, EMPTYARG ) return 0; } -void SwDoc::_UpdateCharts( const SwTable& rTbl, ViewShell& /*rVSh*/ ) const +void SwDoc::_UpdateCharts( const SwTable& rTbl, ViewShell& rVSh ) const { String aName( rTbl.GetFrmFmt()->GetName() ); SwOLENode *pONd; @@ -144,7 +144,7 @@ void SwDoc::_UpdateCharts( const SwTable& rTbl, ViewShell& /*rVSh*/ ) const SwFrm* pFrm; if( 0 != ( pONd = aIdx.GetNode().GetOLENode() ) && aName.Equals( pONd->GetChartTblName() ) && - 0 != ( pFrm = pONd->GetFrm() ) ) + 0 != ( pFrm = pONd->getLayoutFrm( rVSh.GetLayout() ) ) ) { SwChartDataProvider *pPCD = GetChartDataProvider(); if (pPCD) @@ -248,7 +248,7 @@ void SwDoc::CreateChartInternalDataProviders( const SwTable *pTable ) aIdx++; if( 0 != ( pONd = aIdx.GetNode().GetOLENode() ) && aName.Equals( pONd->GetChartTblName() ) /* OLE node is chart? */ && - 0 != (pONd->GetFrm()) /* chart frame is not hidden */ ) + 0 != (pONd->getLayoutFrm( GetCurrentLayout() )) /* chart frame is not hidden */ ) { uno::Reference < embed::XEmbeddedObject > xIP = pONd->GetOLEObj().GetOleRef(); if ( svt::EmbeddedObjectRef::TryRunningState( xIP ) ) diff --git a/sw/source/core/doc/doccorr.cxx b/sw/source/core/doc/doccorr.cxx index 3477619fba33..6585b3359004 100644 --- a/sw/source/core/doc/doccorr.cxx +++ b/sw/source/core/doc/doccorr.cxx @@ -43,8 +43,6 @@ #include <swundo.hxx> #include <hints.hxx> -/* */ - /* * MACROS um ueber alle CrsrShells zu iterieren */ @@ -192,7 +190,7 @@ void PaMCorrAbs( const SwPaM& rRange, { // the UNO cursor has left its section. We need to notify it! SwMsgPoolItem aHint( RES_UNOCURSOR_LEAVES_SECTION ); - pUnoCursor->Modify( &aHint, NULL ); + pUnoCursor->ModifyNotification( &aHint, NULL ); } } } @@ -334,9 +332,9 @@ void SwDoc::CorrRel(const SwNodeIndex& rOldNode, SwEditShell* SwDoc::GetEditShell( ViewShell** ppSh ) const { // Layout und OLE-Shells sollten vorhanden sein! - if( pLayout && pLayout->GetCurrShell() ) + if( pCurrentView ) { - ViewShell *pSh = pLayout->GetCurrShell(), *pVSh = pSh; + ViewShell *pSh = pCurrentView, *pVSh = pSh; if( ppSh ) *ppSh = pSh; @@ -348,7 +346,7 @@ SwEditShell* SwDoc::GetEditShell( ViewShell** ppSh ) const } while( pVSh != ( pSh = (ViewShell*)pSh->GetNext() )); } else if( ppSh ) - *ppSh = 0; + *ppSh = 0; //swmod 071029//swmod 071225 return 0; } diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx index 463e15bf6b6e..f64f37e02011 100644 --- a/sw/source/core/doc/docdesc.cxx +++ b/sw/source/core/doc/docdesc.cxx @@ -70,10 +70,14 @@ #include <GetMetricVal.hxx> #include <unotools/syslocale.hxx> #include <statstr.hrc> +<<<<<<< local +#include <switerator.hxx> +======= #include <hints.hxx> +>>>>>>> other #include <SwUndoPageDesc.hxx> - +#include <pagedeschint.hxx> #include <tgrditem.hxx> using namespace com::sun::star; @@ -201,6 +205,7 @@ void SwDoc::ChgPageDesc( sal_uInt16 i, const SwPageDesc &rChged ) ASSERT( i < aPageDescs.Count(), "PageDescs ueberindiziert." ); SwPageDesc *pDesc = aPageDescs[i]; + SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219 if (GetIDocumentUndoRedo().DoesUndo()) { @@ -396,9 +401,12 @@ void SwDoc::ChgPageDesc( sal_uInt16 i, const SwPageDesc &rChged ) } } - if ( (bUseOn || bFollow) && GetRootFrm() ) + if ( (bUseOn || bFollow) && pTmpRoot) //Layot benachrichtigen! - GetRootFrm()->CheckPageDescs( (SwPageFrm*)GetRootFrm()->Lower() ); + { + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllCheckPageDescs));//swmod 080304 + } //Jetzt noch die Seiten-Attribute uebernehmen. ::lcl_DescSetAttr( rChged.GetMaster(), pDesc->GetMaster() ); @@ -411,16 +419,10 @@ void SwDoc::ChgPageDesc( sal_uInt16 i, const SwPageDesc &rChged ) pDesc->SetFtnInfo( rChged.GetFtnInfo() ); SwMsgPoolItem aInfo( RES_PAGEDESC_FTNINFO ); { - SwClientIter aIter( pDesc->GetMaster() ); - for( SwClient* pLast = aIter.First(TYPE(SwFrm)); pLast; - pLast = aIter.Next() ) - pLast->Modify( &aInfo, 0 ); + pDesc->GetMaster().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) ); } { - SwClientIter aIter( pDesc->GetLeft() ); - for( SwClient* pLast = aIter.First(TYPE(SwFrm)); pLast; - pLast = aIter.Next() ) - pLast->Modify( &aInfo, 0 ); + pDesc->GetLeft().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) ); } } SetModified(); @@ -443,6 +445,8 @@ void SwDoc::ChgPageDesc( sal_uInt16 i, const SwPageDesc &rChged ) |* |*************************************************************************/ +<<<<<<< local +======= void lcl_RemoveFrms( SwFrmFmt& rFmt, sal_Bool& rbFtnsRemoved ) { SwClientIter aIter( rFmt ); @@ -462,36 +466,51 @@ void lcl_RemoveFrms( SwFrmFmt& rFmt, sal_Bool& rbFtnsRemoved ) } } +>>>>>>> other // #i7983# void SwDoc::PreDelPageDesc(SwPageDesc * pDel) { if (0 == pDel) return; - SwFmtPageDesc aDfltDesc( aPageDescs[0] ); - SwClientIter aIter( *pDel ); - SwClient* pLast; - while( 0 != ( pLast = aIter.GoRoot() )) + // mba: test iteration as clients are removed while iteration + SwPageDescHint aHint( aPageDescs[0] ); + pDel->CallSwClientNotify( aHint ); + + bool bHasLayout = HasLayout(); + if ( pFtnInfo->DependsOn( pDel ) ) + { + pFtnInfo->ChgPageDesc( aPageDescs[0] ); + if ( bHasLayout ) + { + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::CheckFtnPageDescs), false)); + } + } + else if ( pEndNoteInfo->DependsOn( pDel ) ) + { + pEndNoteInfo->ChgPageDesc( aPageDescs[0] ); + if ( bHasLayout ) + { + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::CheckFtnPageDescs), true)); + } + } + +<<<<<<< local + for ( USHORT j = 0; j < aPageDescs.Count(); ++j ) { - if( pLast->ISA( SwFmtPageDesc ) ) + if ( aPageDescs[j]->GetFollow() == pDel ) { - const SwModify* pMod = ((SwFmtPageDesc*)pLast)->GetDefinedIn(); - if ( pMod ) + aPageDescs[j]->SetFollow( 0 ); + if( bHasLayout ) { - if( pMod->ISA( SwCntntNode ) ) - ((SwCntntNode*)pMod)->SetAttr( aDfltDesc ); - else if( pMod->ISA( SwFmt )) - ((SwFmt*)pMod)->SetFmtAttr( aDfltDesc ); - else - { - ASSERT( !this, "was ist das fuer ein Mofify-Obj?" ); - aPageDescs[0]->Add( pLast ); - } + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllCheckPageDescs));//swmod 080228 } - else //Es kann noch eine Undo-Kopie existieren - aPageDescs[0]->Add( pLast ); } - + } +======= sal_Bool bFtnInf = sal_False; if ( sal_True == (bFtnInf = pLast == pFtnInfo->GetPageDescDep()) || pLast == pEndNoteInfo->GetPageDescDep() ) @@ -530,6 +549,7 @@ void SwDoc::PreDelPageDesc(SwPageDesc * pDel) ::lcl_RemoveFrms( pDel->GetMaster(), bFtnsRemoved ); ::lcl_RemoveFrms( pDel->GetLeft(), bFtnsRemoved ); } +>>>>>>> other } // #116530# @@ -667,25 +687,35 @@ void SwDoc::PrtDataChanged() ASSERT( get(IDocumentSettingAccess::USE_VIRTUAL_DEVICE) || 0 != getPrinter( sal_False ), "PrtDataChanged will be called recursive!" ) // <-- - + SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219 SwWait *pWait = 0; sal_Bool bEndAction = sal_False; if( GetDocShell() ) GetDocShell()->UpdateFontList(); +<<<<<<< local + BOOL bDraw = TRUE; + if ( pTmpRoot ) +======= sal_Bool bDraw = sal_True; if ( GetRootFrm() ) +>>>>>>> other { - ViewShell *pSh = GetRootFrm()->GetCurrShell(); - if( !get(IDocumentSettingAccess::BROWSE_MODE) || - ( pSh && pSh->GetViewOptions()->IsPrtFormat() ) ) + ViewShell *pSh = GetCurrentViewShell(); + if( !pSh->GetViewOptions()->getBrowseMode() || + pSh->GetViewOptions()->IsPrtFormat() ) { if ( GetDocShell() ) pWait = new SwWait( *GetDocShell(), sal_True ); +<<<<<<< local + pTmpRoot->StartAllAction(); + bEndAction = TRUE; +======= GetRootFrm()->StartAllAction(); bEndAction = sal_True; +>>>>>>> other bDraw = sal_False; if( pDrawModel ) @@ -695,7 +725,9 @@ void SwDoc::PrtDataChanged() } pFntCache->Flush(); - GetRootFrm()->InvalidateAllCntnt(); + + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::InvalidateAllCntnt), INV_SIZE));//swmod 080304 if ( pSh ) { @@ -704,11 +736,11 @@ void SwDoc::PrtDataChanged() pSh->InitPrt( pPrt ); pSh = (ViewShell*)pSh->GetNext(); } - while ( pSh != GetRootFrm()->GetCurrShell() ); + while ( pSh != GetCurrentViewShell() ); } } - } + } //swmod 080218 if ( bDraw && pDrawModel ) { const sal_Bool bTmpAddExtLeading = get(IDocumentSettingAccess::ADD_EXT_LEADING); @@ -723,7 +755,7 @@ void SwDoc::PrtDataChanged() PrtOLENotify( sal_True ); if ( bEndAction ) - GetRootFrm()->EndAllAction(); + pTmpRoot->EndAllAction(); //swmod 080218 delete pWait; } @@ -737,18 +769,18 @@ extern SvPtrarr *pGlobalOLEExcludeList; void SwDoc::PrtOLENotify( sal_Bool bAll ) { SwFEShell *pShell = 0; - if ( GetRootFrm() && GetRootFrm()->GetCurrShell() ) + if ( GetCurrentViewShell() ) { - ViewShell *pSh = GetRootFrm()->GetCurrShell(); + ViewShell *pSh = GetCurrentViewShell(); if ( !pSh->ISA(SwFEShell) ) do { pSh = (ViewShell*)pSh->GetNext(); } while ( !pSh->ISA(SwFEShell) && - pSh != GetRootFrm()->GetCurrShell() ); + pSh != GetCurrentViewShell() ); if ( pSh->ISA(SwFEShell) ) pShell = (SwFEShell*)pSh; - } + } //swmod 071107//swmod 071225 if ( !pShell ) { //Das hat ohne Shell und damit ohne Client keinen Sinn, weil nur darueber @@ -767,28 +799,12 @@ void SwDoc::PrtOLENotify( sal_Bool bAll ) mbOLEPrtNotifyPending = mbAllOLENotify = sal_False; - - SwOLENodes *pNodes = 0; - SwClientIter aIter( *(SwModify*)GetDfltGrfFmtColl() ); - for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) ); - pNd; - pNd = (SwCntntNode*)aIter.Next() ) - { - SwOLENode *pONd; - if ( 0 != (pONd = pNd->GetOLENode()) && - (bAll || pONd->IsOLESizeInvalid()) ) - { - if ( !pNodes ) - pNodes = new SwOLENodes; - pNodes->Insert( pONd, pNodes->Count() ); - } - } - + SwOLENodes *pNodes = SwCntntNode::CreateOLENodesArray( *GetDfltGrfFmtColl(), !bAll ); if ( pNodes ) { ::StartProgress( STR_STATSTR_SWGPRTOLENOTIFY, 0, pNodes->Count(), GetDocShell()); - GetRootFrm()->StartAllAction(); + GetCurrentLayout()->StartAllAction(); //swmod 080218 for( sal_uInt16 i = 0; i < pNodes->Count(); ++i ) { @@ -844,7 +860,7 @@ void SwDoc::PrtOLENotify( sal_Bool bAll ) } } delete pNodes; - GetRootFrm()->EndAllAction(); + GetCurrentLayout()->EndAllAction(); //swmod 080218 ::EndProgress( GetDocShell() ); } } @@ -857,32 +873,29 @@ IMPL_LINK( SwDoc, DoUpdateModifiedOLE, Timer *, ) { mbOLEPrtNotifyPending = mbAllOLENotify = sal_False; - SwOLENodes aOLENodes; - SwClientIter aIter( *(SwModify*)GetDfltGrfFmtColl() ); - for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) ); - pNd; - pNd = (SwCntntNode*)aIter.Next() ) - { - SwOLENode *pONd = pNd->GetOLENode(); - if( pONd && pONd->IsOLESizeInvalid() ) - { - aOLENodes.Insert( pONd, aOLENodes.Count() ); - } - } - - if( aOLENodes.Count() ) + SwOLENodes *pNodes = SwCntntNode::CreateOLENodesArray( *GetDfltGrfFmtColl(), true ); + if( pNodes ) { ::StartProgress( STR_STATSTR_SWGPRTOLENOTIFY, - 0, aOLENodes.Count(), GetDocShell()); - GetRootFrm()->StartAllAction(); + 0, pNodes->Count(), GetDocShell()); + GetCurrentLayout()->StartAllAction(); //swmod 080218 SwMsgPoolItem aMsgHint( RES_UPDATE_ATTR ); +<<<<<<< local + for( USHORT i = 0; i < pNodes->Count(); ++i ) +======= for( sal_uInt16 i = 0; i < aOLENodes.Count(); ++i ) +>>>>>>> other { ::SetProgressState( i, GetDocShell() ); +<<<<<<< local + SwOLENode* pOLENd = (*pNodes)[i]; + pOLENd->SetOLESizeInvalid( FALSE ); +======= SwOLENode* pOLENd = aOLENodes[i]; pOLENd->SetOLESizeInvalid( sal_False ); +>>>>>>> other //Kennen wir nicht, also muss das Objekt geladen werden. //Wenn es keine Benachrichtigung wuenscht @@ -902,11 +915,12 @@ IMPL_LINK( SwDoc, DoUpdateModifiedOLE, Timer *, ) pOLENd->SetOLESizeInvalid( sal_True ); }*/ // repaint it - pOLENd->Modify( &aMsgHint, &aMsgHint ); + pOLENd->ModifyNotification( &aMsgHint, &aMsgHint ); } } - GetRootFrm()->EndAllAction(); + GetCurrentLayout()->EndAllAction(); //swmod 080218 ::EndProgress( GetDocShell() ); + delete pNodes; } } return 0; diff --git a/sw/source/core/doc/docdraw.cxx b/sw/source/core/doc/docdraw.cxx index 051efd2b0948..5c93ac5b8201 100644 --- a/sw/source/core/doc/docdraw.cxx +++ b/sw/source/core/doc/docdraw.cxx @@ -65,21 +65,15 @@ #include <dflyobj.hxx> #include <svx/svdetc.hxx> #include <editeng/fhgtitem.hxx> - -// OD 26.06.2003 #108784# #include <svx/svdpagv.hxx> -// OD 2004-04-01 #i26791# #include <dcontact.hxx> #include <txtfrm.hxx> #include <frmfmt.hxx> #include <editeng/frmdiritem.hxx> #include <fmtornt.hxx> -// --> OD 2006-03-14 #i62875# #include <svx/svditer.hxx> -// <-- -// --> OD 2006-11-01 #130889# #include <vector> -// <-- +#include <switerator.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::linguistic2; @@ -553,28 +547,29 @@ _ZSortFly::_ZSortFly( const SwFrmFmt* pFrmFmt, const SwFmtAnchor* pFlyAn, // #i11176# // This also needs to work when no layout exists. Thus, for // FlyFrames an alternative method is used now in that case. - SwClientIter aIter( (SwFmt&)*pFmt ); - if( RES_FLYFRMFMT == pFmt->Which() ) { - if( pFmt->getIDocumentLayoutAccess()->GetRootFrm() ) + if( pFmt->getIDocumentLayoutAccess()->GetCurrentViewShell() ) //swmod 071107//swmod 071225 { // Schauen, ob es ein SdrObject dafuer gibt - if( aIter.First( TYPE( SwFlyFrm) ) ) - nOrdNum = ((SwFlyFrm*)aIter())->GetVirtDrawObj()->GetOrdNum(); + SwFlyFrm* pFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement( *pFrmFmt ); + if( pFly ) + nOrdNum = pFly->GetVirtDrawObj()->GetOrdNum(); } else { // Schauen, ob es ein SdrObject dafuer gibt - if( aIter.First( TYPE(SwFlyDrawContact) ) ) - nOrdNum = ((SwFlyDrawContact*)aIter())->GetMaster()->GetOrdNum(); + SwFlyDrawContact* pContact = SwIterator<SwFlyDrawContact,SwFmt>::FirstElement( *pFrmFmt ); + if( pContact ) + nOrdNum = pContact->GetMaster()->GetOrdNum(); } } else if( RES_DRAWFRMFMT == pFmt->Which() ) { // Schauen, ob es ein SdrObject dafuer gibt - if( aIter.First( TYPE(SwDrawContact) ) ) - nOrdNum = ((SwDrawContact*)aIter())->GetMaster()->GetOrdNum(); + SwDrawContact* pContact = SwIterator<SwDrawContact,SwFmt>::FirstElement( *pFrmFmt ); + if( pContact ) + nOrdNum = pContact->GetMaster()->GetOrdNum(); } else { ASSERT( !this, "was ist das fuer ein Format?" ); @@ -659,7 +654,12 @@ void SwDoc::InitDrawModel() nInvisibleControls = pDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID(); } +<<<<<<< local + SdrPage* pMasterPage = pDrawModel->AllocPage( FALSE ); + pDrawModel->InsertPage( pMasterPage ); +======= pDrawModel->InsertPage( pDrawModel->AllocPage( sal_False ) ); +>>>>>>> other RTL_LOGFILE_CONTEXT_TRACE( aLog, "after create DrawDocument" ); RTL_LOGFILE_CONTEXT_TRACE( aLog, "before create Spellchecker/Hyphenator" ); @@ -684,10 +684,24 @@ void SwDoc::InitDrawModel() pDrawModel->SetRefDevice( pRefDev ); pDrawModel->SetNotifyUndoActionHdl( LINK( this, SwDoc, AddDrawUndo )); - if ( pLayout ) + if ( pCurrentView ) { - pLayout->SetDrawPage( pDrawModel->GetPage( 0 ) ); - pLayout->GetDrawPage()->SetSize( pLayout->Frm().SSize() ); + ViewShell* pViewSh = pCurrentView; + do + { + SwRootFrm* pRoot = pViewSh->GetLayout(); + if( pRoot && !pRoot->GetDrawPage() ) + { + // Disable "multiple layout" for the moment: + // use pMasterPage instead of a new created SdrPage + // pDrawModel->AllocPage( FALSE ); + // pDrawModel->InsertPage( pDrawPage ); + SdrPage* pDrawPage = pMasterPage; + pRoot->SetDrawPage( pDrawPage ); + pDrawPage->SetSize( pRoot->Frm().SSize() ); + } + pViewSh = (ViewShell*)pViewSh->GetNext(); + }while( pViewSh != pCurrentView ); } } @@ -853,14 +867,14 @@ SdrModel* SwDoc::_MakeDrawModel() { ASSERT( !pDrawModel, "_MakeDrawModel: Why?" ); InitDrawModel(); - if ( pLayout && pLayout->GetCurrShell() ) + if ( pCurrentView ) { - ViewShell* pTmp = pLayout->GetCurrShell(); + ViewShell* pTmp = pCurrentView; do { pTmp->MakeDrawView(); pTmp = (ViewShell*) pTmp->GetNext(); - } while ( pTmp != pLayout->GetCurrShell() ); + } while ( pTmp != pCurrentView ); //Broadcast, damit die FormShell mit der DrawView verbunden werden kann if( GetDocShell() ) @@ -868,7 +882,7 @@ SdrModel* SwDoc::_MakeDrawModel() SfxSimpleHint aHnt( SW_BROADCAST_DRAWVIEWS_CREATED ); GetDocShell()->Broadcast( aHnt ); } - } + } //swmod 071029//swmod 071225 return pDrawModel; } diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx index 6e5c259a9d04..ef5ecb8c255c 100644 --- a/sw/source/core/doc/docedt.cxx +++ b/sw/source/core/doc/docedt.cxx @@ -219,7 +219,7 @@ void _RestFlyInRange( _SaveFlyArr & rArr, const SwNodeIndex& rSttIdx, pFmt, pFmt->GetDoc()->GetSpzFrmFmts()->Count() ); pFmt->SetFmtAttr( aAnchor ); SwCntntNode* pCNd = aPos.nNode.GetNode().GetCntntNode(); - if( pCNd && pCNd->GetFrm( 0, 0, sal_False ) ) + if( pCNd && pCNd->getLayoutFrm( pFmt->GetDoc()->GetCurrentLayout(), 0, 0, sal_False ) ) pFmt->MakeFrms(); } } @@ -416,7 +416,7 @@ bool lcl_SaveFtn( const SwNodeIndex& rSttNd, const SwNodeIndex& rEndNd, } else { - pSrch->DelFrms(); + pSrch->DelFrms(0); rFtnArr.Remove( nPos ); if( bSaveFtn ) rSaveArr.Insert( pSrch ); @@ -444,7 +444,7 @@ bool lcl_SaveFtn( const SwNodeIndex& rSttNd, const SwNodeIndex& rEndNd, } else { - pSrch->DelFrms(); + pSrch->DelFrms(0); rFtnArr.Remove( nPos ); if( bSaveFtn ) rSaveArr.Insert( pSrch ); @@ -846,13 +846,7 @@ bool SwDoc::Overwrite( const SwPaM &rRg, const String &rStr ) if( nOldAttrCnt != nNewAttrCnt ) { SwUpdateAttr aHint( 0, 0, 0 ); - SwClientIter aIter( *pNode ); - SwClient* pGTO = aIter.First(TYPE( SwCrsrShell )); - while( pGTO ) - { - pGTO->Modify( 0, &aHint ); - pGTO = aIter.Next(); - } + pNode->ModifyBroadcast( 0, &aHint, TYPE( SwCrsrShell ) ); } if (!GetIDocumentUndoRedo().DoesUndo() && @@ -1923,7 +1917,7 @@ uno::Any SwDoc::Spell( SwPaM& rPaM, switch( pNd->GetNodeType() ) { case ND_TEXTNODE: - if( 0 != ( pCntFrm = ((SwTxtNode*)pNd)->GetFrm()) ) + if( 0 != ( pCntFrm = ((SwTxtNode*)pNd)->getLayoutFrm( GetCurrentLayout() )) ) { // geschutze Cellen/Flys ueberspringen, ausgeblendete //ebenfalls @@ -2153,7 +2147,7 @@ sal_Bool lcl_HyphenateNode( const SwNodePtr& rpNd, void* pArgs ) SwHyphArgs *pHyphArgs = (SwHyphArgs*)pArgs; if( pNode ) { - SwCntntFrm* pCntFrm = pNode->GetFrm(); + SwCntntFrm* pCntFrm = pNode->getLayoutFrm( pNode->GetDoc()->GetCurrentLayout() ); if( pCntFrm && !((SwTxtFrm*)pCntFrm)->IsHiddenNow() ) { sal_uInt16 *pPageSt = pHyphArgs->GetPageSt(); diff --git a/sw/source/core/doc/docfld.cxx b/sw/source/core/doc/docfld.cxx index 28d41e9e5364..67d14f505fb9 100644 --- a/sw/source/core/doc/docfld.cxx +++ b/sw/source/core/doc/docfld.cxx @@ -73,6 +73,7 @@ #include <poolfmt.hrc> // fuer InitFldTypes #include <SwUndoField.hxx> +#include "switerator.hxx" using namespace ::com::sun::star::uno; @@ -360,10 +361,10 @@ void SwDoc::UpdateFlds( SfxPoolItem *pNewHt, bool bCloseDB ) if( !pNewHt ) { SwMsgPoolItem aUpdateDDE( RES_UPDATEDDETBL ); - (*pFldTypes)[i]->Modify( 0, &aUpdateDDE ); + (*pFldTypes)[i]->ModifyNotification( 0, &aUpdateDDE ); } else - (*pFldTypes)[i]->Modify( 0, pNewHt ); + (*pFldTypes)[i]->ModifyNotification( 0, pNewHt ); break; } case RES_GETEXPFLD: @@ -374,7 +375,7 @@ void SwDoc::UpdateFlds( SfxPoolItem *pNewHt, bool bCloseDB ) if( !pNewHt ) break; default: - (*pFldTypes)[i]->Modify( 0, pNewHt ); + (*pFldTypes)[i]->ModifyNotification ( 0, pNewHt ); } } @@ -426,7 +427,7 @@ void SwDoc::UpdateRefFlds( SfxPoolItem* pHt ) SwFieldType* pFldType; for( sal_uInt16 i = 0; i < pFldTypes->Count(); ++i ) if( RES_GETREFFLD == ( pFldType = (*pFldTypes)[i] )->Which() ) - pFldType->Modify( 0, pHt ); + pFldType->ModifyNotification( 0, pHt ); } void SwDoc::UpdateTblFlds( SfxPoolItem* pHt ) @@ -444,9 +445,9 @@ void SwDoc::UpdateTblFlds( SfxPoolItem* pHt ) if( pHt && RES_TABLEFML_UPDATE == pHt->Which() ) pUpdtFld = (SwTableFmlUpdate*)pHt; - SwClientIter aIter( *pFldType ); - for( SwFmtFld* pFmtFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); - pFmtFld; pFmtFld = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pFldType ); + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) + { if( pFmtFld->GetTxtFld() ) { SwTblField* pFld = (SwTblField*)pFmtFld->GetFld(); @@ -497,6 +498,7 @@ void SwDoc::UpdateTblFlds( SfxPoolItem* pHt ) // setze bei allen das Value-Flag zurueck pFld->ChgValid( sal_False ); } + } break; } @@ -525,16 +527,13 @@ void SwDoc::UpdateTblFlds( SfxPoolItem* pHt ) if( pFldType ) { - SwClient* pLast; - SwClientIter aIter( *pFldType ); - // dann rechne mal schoen - // JP 27.03.97: Beim Berechnen am Ende anfangen - weil neue - // Felder immer am Anfang der Modifykette eingefuegt - // werden. Beim Import haben wir damit eine bessere/ - // schnellere Berechnung bei "Kettenformeln" - if( 0 != ( pLast = aIter.GoEnd() )) - do { - SwFmtFld* pFmtFld = (SwFmtFld*)pLast; + SwIterator<SwFmtFld,SwFieldType> aIter( *pFldType ); + for( SwFmtFld* pFmtFld = aIter.Last(); pFmtFld; pFmtFld = aIter.Previous() ) + { + // start calculation at the end + // new fields are inserted at the beginning of the modify chain + // that gives faster calculation on import + // mba: do we really need this "optimization"? Is it still valid? SwTblField* pFld; if( !pFmtFld->GetTxtFld() || (nsSwExtendedSubType::SUB_CMD & (pFld = (SwTblField*)pFmtFld->GetFld())->GetSubType() )) @@ -567,7 +566,7 @@ void SwDoc::UpdateTblFlds( SfxPoolItem* pHt ) { // steht im Sonderbereich, wird teuer !! Point aPt; // den im Layout 1. Frame returnen - Tab.Kopfzeile !! - pFrm = rTxtNd.GetFrm( &aPt ); + pFrm = rTxtNd.getLayoutFrm( GetCurrentLayout(), &aPt ); if( pFrm ) { SwPosition aPos( *pTblNd ); @@ -603,8 +602,8 @@ void SwDoc::UpdateTblFlds( SfxPoolItem* pHt ) } pCalc->SetCalcError( CALC_NOERR ); } - pFmtFld->Modify( 0, pHt ); - } while( 0 != ( pLast = aIter-- )); + pFmtFld->ModifyNotification( 0, pHt ); + } } // dann berechene noch die Formeln an den Boxen @@ -639,7 +638,7 @@ void SwDoc::UpdateTblFlds( SfxPoolItem* pHt ) if( !pCNd ) pCNd = GetNodes().GoNext( &aCNdIdx ); - if( pCNd && 0 != (pFrm = pCNd->GetFrm( &aPt )) ) + if( pCNd && 0 != (pFrm = pCNd->getLayoutFrm( GetCurrentLayout(), &aPt )) ) { SwPosition aPos( *pCNd ); if( GetBodyTxtNode( *this, aPos, *pFrm ) ) @@ -702,10 +701,10 @@ void SwDoc::UpdatePageFlds( SfxPoolItem* pMsgHnt ) case RES_CHAPTERFLD: case RES_GETEXPFLD: case RES_REFPAGEGETFLD: - pFldType->Modify( 0, pMsgHnt ); + pFldType->ModifyNotification( 0, pMsgHnt ); break; case RES_DOCSTATFLD: - pFldType->Modify( 0, 0 ); + pFldType->ModifyNotification( 0, 0 ); break; } SetNewFldLst(true); @@ -1544,7 +1543,7 @@ void SwDoc::UpdateExpFlds( SwTxtFld* pUpdtFld, bool bUpdRefFlds ) } } // switch - pFmtFld->Modify( 0, 0 ); // Formatierung anstossen + pFmtFld->ModifyNotification( 0, 0 ); // Formatierung anstossen if( pUpdtFld == pTxtFld ) // sollte nur dieses geupdatet werden { @@ -1687,9 +1686,8 @@ const SwDBData& SwDoc::GetDBDesc() case RES_DBNUMSETFLD: case RES_DBSETNUMBERFLD: { - SwClientIter aIter( rFldType ); - SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); - while(pFld) + SwIterator<SwFmtFld,SwFieldType> aIter( rFldType ); + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) { if(pFld->IsFldInDoc()) { @@ -1701,7 +1699,6 @@ const SwDBData& SwDoc::GetDBDesc() aDBData = (static_cast < SwDBNameInfField* > (pFld->GetFld()))->GetRealDBData(); break; } - pFld = (SwFmtFld*)aIter.Next(); } } break; @@ -1957,7 +1954,7 @@ void SwDoc::ChangeDBFields( const SvStringsDtor& rOldNames, SwDBFieldType* pTyp = (SwDBFieldType*)InsertFldType( SwDBFieldType(this, pOldTyp->GetColumnName(), aNewDBData)); - pTyp->Add(pFmtFld); // Feld auf neuen Typ umhaengen + pFmtFld->RegisterToFieldType( *pTyp ); pFld->ChgTyp(pTyp); ((SwDBField*)pFld)->ClearInitialized(); @@ -2102,10 +2099,8 @@ void SwDoc::SetFixFields( bool bOnlyTimeDate, const DateTime* pNewDateTime ) for( ; nStt < 5; ++nStt ) { SwFieldType* pFldType = GetSysFldType( aTypes[ nStt ] ); - SwClientIter aDocInfIter( *pFldType ); - - for( SwFmtFld* pFld = (SwFmtFld*)aDocInfIter.First( TYPE( SwFmtFld )); - pFld; pFld = (SwFmtFld*)aDocInfIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pFldType ); + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) { if( pFld && pFld->GetTxtFld() ) { @@ -2173,7 +2168,7 @@ void SwDoc::SetFixFields( bool bOnlyTimeDate, const DateTime* pNewDateTime ) // Formatierung anstossen if( bChgd ) - pFld->Modify( 0, 0 ); + pFld->ModifyNotification( 0, 0 ); } } } @@ -2437,7 +2432,7 @@ void SwDocUpdtFld::_MakeFldList( SwDoc& rDoc, int eGetMode ) pFormel = 0; // Formatierung anstossen - ((SwFmtFld*)pFmtFld)->Modify( 0, 0 ); + ((SwFmtFld*)pFmtFld)->ModifyNotification( 0, 0 ); } break; @@ -2457,7 +2452,7 @@ void SwDocUpdtFld::_MakeFldList( SwDoc& rDoc, int eGetMode ) // Feld Evaluieren ((SwHiddenTxtField*)pFld)->Evaluate(&rDoc); // Formatierung anstossen - ((SwFmtFld*)pFmtFld)->Modify( 0, 0 ); + ((SwFmtFld*)pFmtFld)->ModifyNotification( 0, 0 ); } break; @@ -2534,7 +2529,11 @@ void SwDocUpdtFld::GetBodyNode( const SwTxtFld& rTFld, sal_uInt16 nFldWhich ) // immer den ersten !! (in Tab-Headline, Kopf-/Fuss ) Point aPt; +<<<<<<< local + const SwCntntFrm* pFrm = rTxtNd.getLayoutFrm( rDoc.GetCurrentLayout(), &aPt, 0, FALSE ); +======= const SwCntntFrm* pFrm = rTxtNd.GetFrm( &aPt, 0, sal_False ); +>>>>>>> other _SetGetExpFld* pNew = NULL; sal_Bool bIsInBody = sal_False; @@ -2600,7 +2599,11 @@ void SwDocUpdtFld::GetBodyNode( const SwSectionNode& rSectNd ) // immer den ersten !! (in Tab-Headline, Kopf-/Fuss ) Point aPt; +<<<<<<< local + const SwCntntFrm* pFrm = pCNd->getLayoutFrm( rDoc.GetCurrentLayout(), &aPt, 0, FALSE ); +======= const SwCntntFrm* pFrm = pCNd->GetFrm( &aPt, 0, sal_False ); +>>>>>>> other if( !pFrm ) break; @@ -2761,7 +2764,7 @@ bool SwDoc::UpdateFld(SwTxtFld * pDstTxtFld, SwField & rSrcFld, if (bUpdateFlds) UpdateTblFlds( &aTblUpdate ); else - pNewFld->GetTyp()->Modify(0, &aTblUpdate); + pNewFld->GetTyp()->ModifyNotification(0, &aTblUpdate); if (! bUpdateFlds) bTblSelBreak = sal_True; @@ -2772,7 +2775,7 @@ bool SwDoc::UpdateFld(SwTxtFld * pDstTxtFld, SwField & rSrcFld, case RES_MACROFLD: if( bUpdateFlds && pDstTxtFld->GetpTxtNode() ) (pDstTxtFld->GetpTxtNode())-> - Modify( 0, pDstFmtFld ); + ModifyNotification( 0, pDstFmtFld ); break; case RES_DBNAMEFLD: @@ -2799,7 +2802,7 @@ bool SwDoc::UpdateFld(SwTxtFld * pDstTxtFld, SwField & rSrcFld, // kein break; default: - pDstFmtFld->Modify( 0, pMsgHnt ); + pDstFmtFld->ModifyNotification( 0, pMsgHnt ); } // Die Felder die wir berechnen koennen werden hier expli. diff --git a/sw/source/core/doc/docfly.cxx b/sw/source/core/doc/docfly.cxx index fb0ccdd97a80..e26669f7b604 100644 --- a/sw/source/core/doc/docfly.cxx +++ b/sw/source/core/doc/docfly.cxx @@ -65,20 +65,22 @@ #include <UndoAttribute.hxx> #include <fmtcnct.hxx> #include <dflyobj.hxx> - -// --> OD 2009-07-20 #i73249# #include <undoflystrattr.hxx> -// <-- +#include <switerator.hxx> extern sal_uInt16 GetHtmlMode( const SwDocShell* ); using namespace ::com::sun::star; +<<<<<<< local +USHORT SwDoc::GetFlyCount( FlyCntType eType ) const +======= /*-----------------17.02.98 08:35------------------- --------------------------------------------------*/ sal_uInt16 SwDoc::GetFlyCount( FlyCntType eType ) const +>>>>>>> other { const SwSpzFrmFmts& rFmts = *GetSpzFrmFmts(); sal_uInt16 nSize = rFmts.Count(); @@ -119,9 +121,6 @@ sal_uInt16 SwDoc::GetFlyCount( FlyCntType eType ) const return nCount; } -/*-----------------17.02.98 08:35------------------- - ---------------------------------------------------*/ // If you change this, also update SwXFrameEnumeration in unocoll. SwFrmFmt* SwDoc::GetFlyNum( sal_uInt16 nIdx, FlyCntType eType ) { @@ -162,21 +161,11 @@ SwFrmFmt* SwDoc::GetFlyNum( sal_uInt16 nIdx, FlyCntType eType ) return pRetFmt; } -/* */ - -/*********************************************************************** -#* Class : SwDoc -#* Methode : SetFlyFrmAnchor -#* Beschreibung: Das Ankerattribut des FlyFrms aendert sich. -#* Datum : MA 01. Feb. 94 -#* Update : JP 09.03.98 -#***********************************************************************/ - Point lcl_FindAnchorLayPos( SwDoc& rDoc, const SwFmtAnchor& rAnch, const SwFrmFmt* pFlyFmt ) { Point aRet; - if( rDoc.GetRootFrm() ) + if( rDoc.GetCurrentViewShell() ) //swmod 071107//swmod 071225 switch( rAnch.GetAnchorId() ) { case FLY_AS_CHAR: @@ -194,7 +183,11 @@ Point lcl_FindAnchorLayPos( SwDoc& rDoc, const SwFmtAnchor& rAnch, { const SwPosition *pPos = rAnch.GetCntntAnchor(); const SwCntntNode* pNd = pPos->nNode.GetNode().GetCntntNode(); +<<<<<<< local + const SwFrm* pOld = pNd ? pNd->getLayoutFrm( rDoc.GetCurrentLayout(), &aRet, 0, FALSE ) : 0; +======= const SwFrm* pOld = pNd ? pNd->GetFrm( &aRet, 0, sal_False ) : 0; +>>>>>>> other if( pOld ) aRet = pOld->Frm().Pos(); } @@ -213,9 +206,15 @@ Point lcl_FindAnchorLayPos( SwDoc& rDoc, const SwFmtAnchor& rAnch, case FLY_AT_PAGE: { +<<<<<<< local + USHORT nPgNum = rAnch.GetPageNum(); + const SwPageFrm *pPage = (SwPageFrm*)rDoc.GetCurrentLayout()->Lower(); + for( USHORT i = 1; (i <= nPgNum) && pPage; ++i, +======= sal_uInt16 nPgNum = rAnch.GetPageNum(); const SwPageFrm *pPage = (SwPageFrm*)rDoc.GetRootFrm()->Lower(); for( sal_uInt16 i = 1; (i <= nPgNum) && pPage; ++i, +>>>>>>> other pPage = (const SwPageFrm*)pPage->GetNext() ) if( i == nPgNum ) { @@ -527,6 +526,10 @@ void SwDoc::SetFlyFrmDescription( SwFlyFrmFmt& rFlyFrmFmt, } // <-- +<<<<<<< local +BOOL SwDoc::SetFrmFmtToFly( SwFrmFmt& rFmt, SwFrmFmt& rNewFmt, + SfxItemSet* pSet, BOOL bKeepOrient ) +======= /*************************************************************************** * Methode : sal_Bool SwDoc::SetFrmFmtToFly( SwFlyFrm&, SwFrmFmt& ) * Beschreibung: @@ -536,6 +539,7 @@ void SwDoc::SetFlyFrmDescription( SwFlyFrmFmt& rFlyFrmFmt, sal_Bool SwDoc::SetFrmFmtToFly( SwFrmFmt& rFmt, SwFrmFmt& rNewFmt, SfxItemSet* pSet, sal_Bool bKeepOrient ) +>>>>>>> other { sal_Bool bChgAnchor = sal_False, bFrmSz = sal_False; @@ -617,7 +621,7 @@ sal_Bool SwDoc::SetFrmFmtToFly( SwFrmFmt& rFmt, SwFrmFmt& rNewFmt, rFmt.MakeFrms(); if( pUndo ) - rFmt.Remove( pUndo ); + pUndo->DeRegisterFromFormat( rFmt ); SetModified(); @@ -633,21 +637,12 @@ void SwDoc::GetGrfNms( const SwFlyFrmFmt& rFmt, String* pGrfName, pGrfNd->GetFileFilterNms( pGrfName, pFltName ); } -/************************************************************************* -|* -|* SwDoc::ChgAnchor() -|* -|* Ersterstellung MA 10. Jan. 95 -|* Letzte Aenderung JP 08.07.98 -|* -*************************************************************************/ - sal_Bool SwDoc::ChgAnchor( const SdrMarkList& _rMrkList, RndStdIds _eAnchorType, const sal_Bool _bSameOnly, const sal_Bool _bPosCorr ) { - ASSERT( GetRootFrm(), "Ohne Layout geht gar nichts" ); + ASSERT( GetCurrentLayout(), "Ohne Layout geht gar nichts" ); //swmod 080218 if ( !_rMrkList.GetMarkCount() || _rMrkList.GetMark( 0 )->GetMarkedSdrObj()->GetUpGroup() ) @@ -745,11 +740,15 @@ sal_Bool SwDoc::ChgAnchor( const SdrMarkList& _rMrkList, SwPosition aPos( GetNodes() ); Point aPoint( aPt ); aPoint.X() -= 1; - GetRootFrm()->GetCrsrOfst( &aPos, aPoint, &aState ); + GetCurrentLayout()->GetCrsrOfst( &aPos, aPoint, &aState ); // OD 20.06.2003 #108784# - consider that drawing objects // can be in header/footer. Thus, <GetFrm()> by left-top-corner pTxtFrm = aPos.nNode.GetNode(). +<<<<<<< local + GetCntntNode()->getLayoutFrm( GetCurrentLayout(), &aPt, 0, FALSE ); +======= GetCntntNode()->GetFrm( &aPt, 0, sal_False ); +>>>>>>> other } const SwFrm *pTmp = ::FindAnchor( pTxtFrm, aPt ); pNewAnchorFrm = pTmp->FindFlyFrm(); @@ -767,7 +766,7 @@ sal_Bool SwDoc::ChgAnchor( const SdrMarkList& _rMrkList, } case FLY_AT_PAGE: { - pNewAnchorFrm = GetRootFrm()->Lower(); + pNewAnchorFrm = GetCurrentLayout()->Lower(); while ( pNewAnchorFrm && !pNewAnchorFrm->Frm().IsInside( aPt ) ) pNewAnchorFrm = pNewAnchorFrm->GetNext(); if ( !pNewAnchorFrm ) @@ -806,7 +805,7 @@ sal_Bool SwDoc::ChgAnchor( const SdrMarkList& _rMrkList, // es muss ein TextNode gefunden werden, denn nur dort // ist ein inhaltsgebundenes DrawObjekt zu verankern SwCrsrMoveState aState( MV_SETONLYTEXT ); - GetRootFrm()->GetCrsrOfst( &aPos, aPoint, &aState ); + GetCurrentLayout()->GetCrsrOfst( &aPos, aPoint, &aState ); //swmod 080218 } else { @@ -893,9 +892,6 @@ sal_Bool SwDoc::ChgAnchor( const SdrMarkList& _rMrkList, } -/* -----------------23.07.98 13:56------------------- - * - * --------------------------------------------------*/ int SwDoc::Chainable( const SwFrmFmt &rSource, const SwFrmFmt &rDest ) { //Die Source darf noch keinen Follow haben. @@ -994,9 +990,7 @@ int SwDoc::Chainable( const SwFrmFmt &rSource, const SwFrmFmt &rDest ) return bAllowed ? SW_CHAIN_OK : SW_CHAIN_WRONG_AREA; } -/* -----------------23.07.98 13:56------------------- - * - * --------------------------------------------------*/ + int SwDoc::Chain( SwFrmFmt &rSource, const SwFrmFmt &rDest ) { int nErr = Chainable( rSource, rDest ); @@ -1027,8 +1021,7 @@ int SwDoc::Chain( SwFrmFmt &rSource, const SwFrmFmt &rDest ) SwFmtFrmSize aSize( rSource.GetFrmSize() ); if ( aSize.GetHeightSizeType() != ATT_FIX_SIZE ) { - SwClientIter aIter( rSource ); - SwFlyFrm *pFly = (SwFlyFrm*)aIter.First( TYPE(SwFlyFrm) ); + SwFlyFrm *pFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement( rSource ); if ( pFly ) aSize.SetHeight( pFly->Frm().Height() ); aSize.SetHeightSizeType( ATT_FIX_SIZE ); @@ -1040,9 +1033,7 @@ int SwDoc::Chain( SwFrmFmt &rSource, const SwFrmFmt &rDest ) } return nErr; } -/* -----------------23.07.98 13:56------------------- - * - * --------------------------------------------------*/ + void SwDoc::Unchain( SwFrmFmt &rFmt ) { SwFmtChain aChain( rFmt.GetChain() ); diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index 1154fbf61d88..d0f60e5bb058 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -1367,7 +1367,7 @@ void SwDoc::SetDefault( const SfxItemSet& rSet ) { SwFmtChg aChgFmt( pDfltCharFmt ); // dann sage mal den Frames bescheid - aCallMod.Modify( &aChgFmt, &aChgFmt ); + aCallMod.ModifyNotification( &aChgFmt, &aChgFmt ); } } } @@ -1376,7 +1376,7 @@ void SwDoc::SetDefault( const SfxItemSet& rSet ) { SwAttrSetChg aChgOld( aOld, aOld ); SwAttrSetChg aChgNew( aNew, aNew ); - aCallMod.Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + aCallMod.ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } // und die default-Formate wieder beim Object austragen @@ -2045,15 +2045,17 @@ void SwDoc::CopyFmtArr( const SvPtrarr& rSourceArr, continue; pDest = FindFmtByName( rDestArr, pSrc->GetName() ); +<<<<<<< local + pDest->SetAuto( FALSE ); +======= pDest->SetAuto( sal_False ); // pDest->ResetAllAttr(); // pDest->CopyAttrs( *pSrc, sal_True ); // kopiere Attribute //JP 19.02.96: ist so wohl optimaler - loest ggfs. kein Modify aus! +>>>>>>> other pDest->DelDiffs( *pSrc ); - // --> OD 2009-03-23 #i94285# - // copy existing <SwFmtPageDesc> instance, before copying attributes -// pDest->SetFmtAttr( pSrc->GetAttrSet() ); // kopiere Attribute - //JP 18.08.98: Bug 55115 - copy PageDescAttribute in this case + + // #i94285#: existing <SwFmtPageDesc> instance, before copying attributes const SfxPoolItem* pItem; if( &GetAttrPool() != pSrc->GetAttrSet().GetPool() && SFX_ITEM_SET == pSrc->GetAttrSet().GetItemState( @@ -2067,8 +2069,7 @@ void SwDoc::CopyFmtArr( const SvPtrarr& rSourceArr, { pPageDesc = aPageDescs[ MakePageDesc( rNm ) ]; } - pPageDesc->Add( &aPageDesc ); -// pDest->SetFmtAttr( aPageDesc ); + aPageDesc.RegisterToPageDesc( *pPageDesc ); SwAttrSet aTmpAttrSet( pSrc->GetAttrSet() ); aTmpAttrSet.Put( aPageDesc ); pDest->SetFmtAttr( aTmpAttrSet ); @@ -2077,7 +2078,6 @@ void SwDoc::CopyFmtArr( const SvPtrarr& rSourceArr, { pDest->SetFmtAttr( pSrc->GetAttrSet() ); } - // <-- pDest->SetPoolFmtId( pSrc->GetPoolFmtId() ); pDest->SetPoolHelpId( pSrc->GetPoolHelpId() ); @@ -2165,9 +2165,9 @@ void SwDoc::CopyPageDescHeaderFooterImpl( bool bCpyHeader, pNewFmt->ResetFmtAttr( RES_CNTNT ); } if( bCpyHeader ) - pNewFmt->Add( (SwFmtHeader*)pNewItem ); + ((SwFmtHeader*)pNewItem)->RegisterToFormat(*pNewFmt); else - pNewFmt->Add( (SwFmtFooter*)pNewItem ); + ((SwFmtFooter*)pNewItem)->RegisterToFormat(*pNewFmt); rDestFmt.SetFmtAttr( *pNewItem ); } delete pNewItem; @@ -2176,7 +2176,12 @@ void SwDoc::CopyPageDescHeaderFooterImpl( bool bCpyHeader, void SwDoc::CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc, sal_Bool bCopyPoolIds ) { +<<<<<<< local + BOOL bNotifyLayout = FALSE; + SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219 +======= sal_Bool bNotifyLayout = sal_False; +>>>>>>> other rDstDesc.SetLandscape( rSrcDesc.GetLandscape() ); rDstDesc.SetNumType( rSrcDesc.GetNumType() ); @@ -2240,9 +2245,11 @@ void SwDoc::CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc, else rDstDesc.GetLeft().SetFmtAttr( rDstDesc.GetMaster().GetFooter() ); - if( bNotifyLayout && GetRootFrm() ) - //Layot benachrichtigen! - GetRootFrm()->CheckPageDescs( (SwPageFrm*)GetRootFrm()->Lower() ); + if( bNotifyLayout && pTmpRoot ) + { + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();//swmod 080225 + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllCheckPageDescs));//swmod 080226 + } //Wenn sich FussnotenInfo veraendert, so werden die Seiten //angetriggert. @@ -2251,16 +2258,10 @@ void SwDoc::CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc, rDstDesc.SetFtnInfo( rSrcDesc.GetFtnInfo() ); SwMsgPoolItem aInfo( RES_PAGEDESC_FTNINFO ); { - SwClientIter aIter( rDstDesc.GetMaster() ); - for( SwClient* pLast = aIter.First(TYPE(SwFrm)); pLast; - pLast = aIter.Next() ) - pLast->Modify( &aInfo, 0 ); + rDstDesc.GetMaster().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) ); } { - SwClientIter aIter( rDstDesc.GetLeft() ); - for( SwClient* pLast = aIter.First(TYPE(SwFrm)); pLast; - pLast = aIter.Next() ) - pLast->Modify( &aInfo, 0 ); + rDstDesc.GetLeft().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) ); } } } diff --git a/sw/source/core/doc/docftn.cxx b/sw/source/core/doc/docftn.cxx index 80798546d041..2d8d911cbc9c 100644 --- a/sw/source/core/doc/docftn.cxx +++ b/sw/source/core/doc/docftn.cxx @@ -51,8 +51,8 @@ SwEndNoteInfo& SwEndNoteInfo::operator=(const SwEndNoteInfo& rInfo) { if( rInfo.GetFtnTxtColl() ) rInfo.GetFtnTxtColl()->Add(this); - else if ( pRegisteredIn) - pRegisteredIn->Remove(this); + else if ( GetRegisteredIn()) + GetRegisteredInNonConst()->Remove(this); if ( rInfo.aPageDescDep.GetRegisteredIn() ) ((SwModify*)rInfo.aPageDescDep.GetRegisteredIn())->Add( &aPageDescDep ); @@ -108,8 +108,8 @@ SwEndNoteInfo::SwEndNoteInfo(const SwEndNoteInfo& rInfo) : aFmt( rInfo.aFmt ), nFtnOffset( rInfo.nFtnOffset ) { - if( rInfo.GetPageDescDep()->GetRegisteredIn() ) - ((SwModify*)rInfo.GetPageDescDep()->GetRegisteredIn())->Add( &aPageDescDep ); + if( rInfo.aPageDescDep.GetRegisteredIn() ) + ((SwModify*)rInfo.aPageDescDep.GetRegisteredIn())->Add( &aPageDescDep ); if( rInfo.aCharFmtDep.GetRegisteredIn() ) ((SwModify*)rInfo.aCharFmtDep.GetRegisteredIn())->Add( &aCharFmtDep ); @@ -138,7 +138,18 @@ SwPageDesc *SwEndNoteInfo::GetPageDesc( SwDoc &rDoc ) const m_bEndNote ? RES_POOLPAGE_ENDNOTE : RES_POOLPAGE_FOOTNOTE ) ); pDesc->Add( &((SwClient&)aPageDescDep) ); } - return (SwPageDesc*)aPageDescDep.GetRegisteredIn(); + + return (SwPageDesc*)( aPageDescDep.GetRegisteredIn() ); +} + +bool SwEndNoteInfo::KnowsPageDesc() const +{ + return (aPageDescDep.GetRegisteredIn() != 0); +} + +bool SwEndNoteInfo::DependsOn( const SwPageDesc* pDesc ) const +{ + return ( aPageDescDep.GetRegisteredIn() == pDesc ); } void SwEndNoteInfo::ChgPageDesc( SwPageDesc *pDesc ) @@ -185,7 +196,7 @@ void SwEndNoteInfo::SetAnchorCharFmt( SwCharFmt* pChFmt ) pChFmt->Add( &((SwClient&)aAnchorCharFmtDep) ); } -void SwEndNoteInfo::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwEndNoteInfo::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ; @@ -209,7 +220,7 @@ void SwEndNoteInfo::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) } } else - SwClient::Modify( pOld, pNew ); + CheckRegistration( pOld, pNew ); } SwFtnInfo& SwFtnInfo::operator=(const SwFtnInfo& rInfo) @@ -257,6 +268,7 @@ SwFtnInfo::SwFtnInfo(SwTxtFmtColl *pFmt) : void SwDoc::SetFtnInfo(const SwFtnInfo& rInfo) { + SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219 if( !(GetFtnInfo() == rInfo) ) { const SwFtnInfo &rOld = GetFtnInfo(); @@ -280,15 +292,23 @@ void SwDoc::SetFtnInfo(const SwFtnInfo& rInfo) *pFtnInfo = rInfo; - if ( GetRootFrm() ) + if (pTmpRoot) { + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();//swmod 080304 if ( bFtnPos ) - GetRootFrm()->RemoveFtns(); + //pTmpRoot->RemoveFtns(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllRemoveFtns));//swmod 080305 else { - GetRootFrm()->UpdateFtnNums(); + //pTmpRoot->UpdateFtnNums(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::UpdateFtnNums));//swmod 080304 if ( bFtnDesc ) +<<<<<<< local + //pTmpRoot->CheckFtnPageDescs( FALSE ); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::CheckFtnPageDescs), FALSE));//swmod 080304 +======= GetRootFrm()->CheckFtnPageDescs( sal_False ); +>>>>>>> other if ( bExtra ) { //Fuer die Benachrichtung bezueglich ErgoSum usw. sparen wir uns @@ -303,14 +323,14 @@ void SwDoc::SetFtnInfo(const SwFtnInfo& rInfo) } } } - } + } //swmod 080219 if( FTNNUM_PAGE != rInfo.eNum ) GetFtnIdxs().UpdateAllFtn(); else if( bFtnChrFmts ) { SwFmtChg aOld( pOldChrFmt ); SwFmtChg aNew( pNewChrFmt ); - pFtnInfo->Modify( &aOld, &aNew ); + pFtnInfo->ModifyNotification( &aOld, &aNew ); } // --> OD 2008-01-09 #i81002# @@ -325,6 +345,7 @@ void SwDoc::SetFtnInfo(const SwFtnInfo& rInfo) void SwDoc::SetEndNoteInfo(const SwEndNoteInfo& rInfo) { + SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219 if( !(GetEndNoteInfo() == rInfo) ) { if(GetIDocumentUndoRedo().DoesUndo()) @@ -351,10 +372,18 @@ void SwDoc::SetEndNoteInfo(const SwEndNoteInfo& rInfo) *pEndNoteInfo = rInfo; - if ( GetRootFrm() ) + if ( pTmpRoot ) { if ( bFtnDesc ) +<<<<<<< local + //pTmpRoot->CheckFtnPageDescs( TRUE ); + { + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::CheckFtnPageDescs), TRUE));//swmod 080304 + } +======= GetRootFrm()->CheckFtnPageDescs( sal_True ); +>>>>>>> other if ( bExtra ) { //Fuer die Benachrichtung bezueglich ErgoSum usw. sparen wir uns @@ -368,14 +397,14 @@ void SwDoc::SetEndNoteInfo(const SwEndNoteInfo& rInfo) pTxtFtn->SetNumber( rFtn.GetNumber(), &rFtn.GetNumStr()); } } - } + } //swmod 080219 if( bNumChg ) GetFtnIdxs().UpdateAllFtn(); else if( bFtnChrFmts ) { SwFmtChg aOld( pOldChrFmt ); SwFmtChg aNew( pNewChrFmt ); - pEndNoteInfo->Modify( &aOld, &aNew ); + pEndNoteInfo->ModifyNotification( &aOld, &aNew ); } // --> OD 2008-01-09 #i81002# @@ -393,6 +422,7 @@ bool SwDoc::SetCurFtn( const SwPaM& rPam, const String& rNumStr, sal_uInt16 nNumber, bool bIsEndNote ) { SwFtnIdxs& rFtnArr = GetFtnIdxs(); + SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219 const SwPosition* pStt = rPam.Start(), *pEnd = rPam.End(); const sal_uLong nSttNd = pStt->nNode.GetIndex(); @@ -441,7 +471,7 @@ bool SwDoc::SetCurFtn( const SwPaM& rPam, const String& rNumStr, pTxtFtn->CheckCondColl(); //#i11339# dispose UNO wrapper when a footnote is changed to an endnote or vice versa SwPtrMsgPoolItem aMsgHint( RES_FOOTNOTE_DELETED, (void*)&pTxtFtn->GetAttr() ); - GetUnoCallBack()->Modify( &aMsgHint, &aMsgHint ); + GetUnoCallBack()->ModifyNotification( &aMsgHint, &aMsgHint ); } } } @@ -490,8 +520,12 @@ bool SwDoc::SetCurFtn( const SwPaM& rPam, const String& rNumStr, if ( !bTypeChgd ) rFtnArr.UpdateAllFtn(); } - else if( GetRootFrm() ) - GetRootFrm()->UpdateFtnNums(); + else if( pTmpRoot ) + // + { + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::UpdateFtnNums)); + } //swmod 080304pTmpRoot->UpdateFtnNums(); //swmod 080219 SetModified(); } else diff --git a/sw/source/core/doc/docglbl.cxx b/sw/source/core/doc/docglbl.cxx index d31bc4df722a..26d9c75e2140 100644 --- a/sw/source/core/doc/docglbl.cxx +++ b/sw/source/core/doc/docglbl.cxx @@ -54,7 +54,7 @@ #include <section.hxx> #include <doctxm.hxx> #include <poolfmt.hxx> - +#include <switerator.hxx> #include <com/sun/star/uno/Reference.h> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> #include <com/sun/star/document/XDocumentProperties.hpp> @@ -133,9 +133,8 @@ sal_Bool SwDoc::SplitDoc( sal_uInt16 eDocType, const String& rPath, if( pSplitColl->GetAttrOutlineLevel() == 0 )//<-end,zhaojianwei, 0814 { pOutlNds = new SwOutlineNodes( 8, 8 ); - SwClientIter aIter( *(SwModify*)pSplitColl ); - for( SwTxtNode* pTNd = (SwTxtNode*)aIter.First( TYPE( SwTxtNode )); - pTNd; pTNd = (SwTxtNode*)aIter.Next() ) + SwIterator<SwTxtNode,SwFmtColl> aIter( *pSplitColl ); + for( SwTxtNode* pTNd = aIter.First(); pTNd; pTNd = aIter.Next() ) if( pTNd->GetNodes().IsDocNodes() ) pOutlNds->Insert( pTNd ); diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx index 98179bd1d8ea..65dd1c51a797 100644 --- a/sw/source/core/doc/doclay.cxx +++ b/sw/source/core/doc/doclay.cxx @@ -724,8 +724,8 @@ SwFlyFrmFmt* SwDoc::_MakeFlySection( const SwPosition& rAnchPos, } // Frames anlegen - if( GetRootFrm() ) - pFmt->MakeFrms(); // ??? + if( GetCurrentViewShell() ) + pFmt->MakeFrms(); // ??? //swmod 071108//swmod 071225 if (GetIDocumentUndoRedo().DoesUndo()) { @@ -1005,7 +1005,7 @@ SwDrawFrmFmt* SwDoc::Insert( const SwPaM &rRg, SwDrawContact* pContact = new SwDrawContact( pFmt, &rDrawObj ); // ggfs. Frames anlegen - if( GetRootFrm() ) + if( GetCurrentViewShell() ) { pFmt->MakeFrms(); // --> OD 2005-02-09 #i42319# - follow-up of #i35635# @@ -1120,11 +1120,11 @@ void SwDoc::GetAllFlyFmts( SwPosFlyFrms& rPosFlyFmts, // kein Layout oder nur ein Teil, dann wars das // Seitenbezogen Flys nur, wenn vollstaendig "gewuenscht" wird ! - if( !GetRootFrm() || pCmpRange ) + if( !GetCurrentViewShell() || pCmpRange ) //swmod 071108//swmod 071225 return; pFPos = 0; - SwPageFrm *pPage = (SwPageFrm*)GetRootFrm()->GetLower(); + SwPageFrm *pPage = (SwPageFrm*)GetCurrentLayout()->GetLower(); //swmod 080218 while( pPage ) { if( pPage->GetSortedObjs() ) @@ -1917,11 +1917,12 @@ IMPL_LINK( SwDoc, DoIdleJobs, Timer *, pTimer ) pModLogFile = new ::rtl::Logfile( "First DoIdleJobs" ); #endif - if( GetRootFrm() && GetRootFrm()->GetCurrShell() && + SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219 + if( pTmpRoot && !SfxProgress::GetActiveProgress( pDocShell ) ) { ViewShell *pSh, *pStartSh; - pSh = pStartSh = GetRootFrm()->GetCurrShell(); + pSh = pStartSh = GetCurrentViewShell(); do { if( pSh->ActionPend() ) { @@ -1932,10 +1933,14 @@ IMPL_LINK( SwDoc, DoIdleJobs, Timer *, pTimer ) pSh = (ViewShell*)pSh->GetNext(); } while( pSh != pStartSh ); - if (GetRootFrm()->IsNeedGrammarCheck()) + if( pTmpRoot->IsNeedGrammarCheck() ) { +<<<<<<< local + BOOL bIsOnlineSpell = pSh->GetViewOptions()->IsOnlineSpell(); +======= sal_Bool bIsOnlineSpell = pSh->GetViewOptions()->IsOnlineSpell(); +>>>>>>> other sal_Bool bIsAutoGrammar = sal_False; SvtLinguConfig().GetProperty( ::rtl::OUString::createFromAscii( UPN_IS_GRAMMAR_AUTO ) ) >>= bIsAutoGrammar; @@ -1943,12 +1948,20 @@ IMPL_LINK( SwDoc, DoIdleJobs, Timer *, pTimer ) if (bIsOnlineSpell && bIsAutoGrammar) StartGrammarChecking( *this ); } - - sal_uInt16 nFldUpdFlag; - if( GetRootFrm()->IsIdleFormat() ) - GetRootFrm()->GetCurrShell()->LayoutIdle(); - else if( ( AUTOUPD_FIELD_ONLY == - ( nFldUpdFlag = static_cast<sal_uInt16>(getFieldUpdateFlags(true)) ) + SwFldUpdateFlags nFldUpdFlag; + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();//swmod 080320 + std::set<SwRootFrm*>::iterator pLayIter = aAllLayouts.begin(); + for ( ;pLayIter != aAllLayouts.end();pLayIter++ ) + { + if ((*pLayIter)->IsIdleFormat()) + { + (*pLayIter)->GetCurrShell()->LayoutIdle(); + break; + } + } + BOOL bAllValid = pLayIter == aAllLayouts.end() ? 1 : 0; + if( bAllValid && ( AUTOUPD_FIELD_ONLY == + ( nFldUpdFlag = getFieldUpdateFlags(true) ) || AUTOUPD_FIELD_AND_CHARTS == nFldUpdFlag ) && GetUpdtFlds().IsFieldsDirty() && !GetUpdtFlds().IsInUpdateFlds() && @@ -1960,25 +1973,25 @@ IMPL_LINK( SwDoc, DoIdleJobs, Timer *, pTimer ) // chaos::Action-Klammerung! GetUpdtFlds().SetInUpdateFlds( sal_True ); - GetRootFrm()->StartAllAction(); + pTmpRoot->StartAllAction(); // no jump on update of fields #i85168# const sal_Bool bOldLockView = pStartSh->IsViewLocked(); pStartSh->LockView( sal_True ); - GetSysFldType( RES_CHAPTERFLD )->Modify( 0, 0 ); // KapitelFld + GetSysFldType( RES_CHAPTERFLD )->ModifyNotification( 0, 0 ); // KapitelFld UpdateExpFlds( 0, sal_False ); // Expression-Felder Updaten UpdateTblFlds(NULL); // Tabellen UpdateRefFlds(NULL); // Referenzen - GetRootFrm()->EndAllAction(); + pTmpRoot->EndAllAction(); pStartSh->LockView( bOldLockView ); GetUpdtFlds().SetInUpdateFlds( sal_False ); GetUpdtFlds().SetFieldsDirty( sal_False ); } - } + } //swmod 080219 #ifdef TIMELOG if( pModLogFile && 1 != (long)pModLogFile ) delete pModLogFile, ((long&)pModLogFile) = 1; @@ -1991,7 +2004,7 @@ IMPL_LINK( SwDoc, DoIdleJobs, Timer *, pTimer ) IMPL_STATIC_LINK( SwDoc, BackgroundDone, SvxBrushItem*, EMPTYARG ) { ViewShell *pSh, *pStartSh; - pSh = pStartSh = pThis->GetRootFrm()->GetCurrShell(); + pSh = pStartSh = pThis->GetCurrentViewShell(); //swmod 071108//swmod 071225 if( pStartSh ) do { if( pSh->GetWin() ) @@ -2228,9 +2241,9 @@ sal_Bool SwDoc::IsInHeaderFooter( const SwNodeIndex& rIdx ) const // Redlines auch an Start- und Endnodes haengen, muss der Index nicht // unbedingt der eines Content-Nodes sein. SwNode* pNd = &rIdx.GetNode(); - if( pNd->IsCntntNode() && pLayout ) + if( pNd->IsCntntNode() && pCurrentView )//swmod 071029//swmod 071225 { - const SwFrm *pFrm = pNd->GetCntntNode()->GetFrm(); + const SwFrm *pFrm = pNd->GetCntntNode()->getLayoutFrm( GetCurrentLayout() ); if( pFrm ) { const SwFrm *pUp = pFrm->GetUpper(); @@ -2343,9 +2356,72 @@ sal_Bool SwDoc::IsInVerticalText( const SwPosition& rPos, const Point* pPt ) con return FRMDIR_VERT_TOP_RIGHT == nDir || FRMDIR_VERT_TOP_LEFT == nDir; } -const SwRootFrm* SwDoc::GetRootFrm() const { return pLayout; } -SwRootFrm* SwDoc::GetRootFrm() { return pLayout; } -void SwDoc::SetRootFrm( SwRootFrm* pNew ) { pLayout = pNew; } -SwLayouter* SwDoc::GetLayouter() { return pLayouter; } -const SwLayouter* SwDoc::GetLayouter() const { return pLayouter; } -void SwDoc::SetLayouter( SwLayouter* pNew ) { pLayouter = pNew; } +void SwDoc::SetCurrentViewShell( ViewShell* pNew ) +{ + pCurrentView = pNew; +} + +SwLayouter* SwDoc::GetLayouter() +{ + return pLayouter; +} + +const SwLayouter* SwDoc::GetLayouter() const +{ + return pLayouter; +} + +void SwDoc::SetLayouter( SwLayouter* pNew ) +{ + pLayouter = pNew; +} + +const ViewShell *SwDoc::GetCurrentViewShell() const +{ + return pCurrentView; +} + +ViewShell *SwDoc::GetCurrentViewShell() +{ + return pCurrentView; +} //swmod 080219 It must be able to communicate to a ViewShell.This is going to be removedd later. + +const SwRootFrm *SwDoc::GetCurrentLayout() const +{ + if(GetCurrentViewShell()) + return GetCurrentViewShell()->GetLayout(); + return 0; +} + +SwRootFrm *SwDoc::GetCurrentLayout() +{ + if(GetCurrentViewShell()) + return GetCurrentViewShell()->GetLayout(); + return 0; +} + +bool SwDoc::HasLayout() const +{ + // if there is a view, there is always a layout + return (pCurrentView != 0); +} + +std::set<SwRootFrm*> SwDoc::GetAllLayouts() +{ + std::set<SwRootFrm*> aAllLayouts; + ViewShell *pStart = GetCurrentViewShell(); + ViewShell *pTemp = pStart; + if ( pTemp ) + { + do + { + if (pTemp->GetLayout()) + { + aAllLayouts.insert(pTemp->GetLayout()); + pTemp = (ViewShell*)pTemp->GetNext(); + } + } while(pTemp!=pStart); + } + + return aAllLayouts; +}//swmod 070825 diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx index cdf031aeb923..9ff8e90f76b6 100644 --- a/sw/source/core/doc/docnew.cxx +++ b/sw/source/core/doc/docnew.cxx @@ -241,7 +241,7 @@ SwDoc::SwDoc() pGrfFmtCollTbl( new SwGrfFmtColls() ), pTOXTypes( new SwTOXTypes() ), pDefTOXBases( new SwDefTOXBase_Impl() ), - pLayout( 0 ), // Rootframe des spezifischen Layouts. + pCurrentView( 0 ), //swmod 071225 pDrawModel( 0 ), pUpdtFlds( new SwDocUpdtFld() ), pFldTypes( new SwFldTypes() ), @@ -298,6 +298,7 @@ SwDoc::SwDoc() mbColumnSelection( false ), // i#78591# mbProtectForm(false), + mbLastBrowseMode( false ), n32DummyCompatabilityOptions1(0), n32DummyCompatabilityOptions2(0), mbStartIdleTimer(sal_False) @@ -312,7 +313,11 @@ SwDoc::SwDoc() mbUpdateExpFld = mbNewDoc = mbCopyIsMove = +<<<<<<< local + mbNoDrawUndoObj = +======= mbBrowseMode = +>>>>>>> other mbInReading = mbInXMLImport = mbUpdateTOX = @@ -529,8 +534,6 @@ SwDoc::~SwDoc() mbDtor = sal_True; - DELETEZ( pLayout ); - delete pRedlineTbl; delete pUnoCrsrTbl; delete pAutoFmtRedlnComment; @@ -609,10 +612,8 @@ SwDoc::~SwDoc() // Delete fuer Collections // damit die Abhaengigen wech sind - SwTxtFmtColl *pFtnColl = pFtnInfo->GetFtnTxtColl(); - if ( pFtnColl ) pFtnColl->Remove(pFtnInfo); - pFtnColl = pEndNoteInfo->GetFtnTxtColl(); - if ( pFtnColl ) pFtnColl->Remove(pEndNoteInfo); + pFtnInfo->ReleaseCollection(); + pEndNoteInfo->ReleaseCollection(); ASSERT( pDfltTxtFmtColl == (*pTxtFmtCollTbl)[0], "Default-Text-Collection muss immer am Anfang stehen" ); @@ -839,7 +840,7 @@ void SwDoc::ClearDoc() // den ersten immer wieder neu anlegen (ohne Attribute/Vorlagen/...) SwTxtNode* pFirstNd = GetNodes().MakeTxtNode( aSttIdx, pDfltTxtFmtColl ); - if( pLayout ) + if( pCurrentView ) //swmod 071029//swmod 071225 { // set the layout to the dummy pagedesc pFirstNd->SetAttr( SwFmtPageDesc( pDummyPgDsc )); @@ -877,10 +878,8 @@ void SwDoc::ClearDoc() // Delete fuer Collections // damit die Abhaengigen wech sind - SwTxtFmtColl* pFtnColl = pFtnInfo->GetFtnTxtColl(); - if( pFtnColl ) pFtnColl->Remove( pFtnInfo ); - pFtnColl = pEndNoteInfo->GetFtnTxtColl(); - if( pFtnColl ) pFtnColl->Remove( pEndNoteInfo ); + pFtnInfo->ReleaseCollection(); + pEndNoteInfo->ReleaseCollection(); // JP 27.01.98: opt.: ausgehend davon, das Standard als 2. im Array // steht, sollte das als letztes geloescht werden, damit @@ -891,14 +890,14 @@ void SwDoc::ClearDoc() pGrfFmtCollTbl->DeleteAndDestroy( 1, pGrfFmtCollTbl->Count()-1 ); pCharFmtTbl->DeleteAndDestroy( 1, pCharFmtTbl->Count()-1 ); - if( pLayout ) + if( pCurrentView ) { // search the FrameFormat of the root frm. This is not allowed to delete - pFrmFmtTbl->Remove( pFrmFmtTbl->GetPos( pLayout->GetFmt() ) ); + pFrmFmtTbl->Remove( pFrmFmtTbl->GetPos( pCurrentView->GetLayout()->GetFmt() ) ); pFrmFmtTbl->DeleteAndDestroy( 1, pFrmFmtTbl->Count()-1 ); - pFrmFmtTbl->Insert( pLayout->GetFmt(), pFrmFmtTbl->Count() ); + pFrmFmtTbl->Insert( pCurrentView->GetLayout()->GetFmt(), pFrmFmtTbl->Count() ); } - else + else //swmod 071029//swmod 071225 pFrmFmtTbl->DeleteAndDestroy( 1, pFrmFmtTbl->Count()-1 ); xForbiddenCharsTable.unbind(); @@ -999,7 +998,7 @@ void SwDoc::UpdateLinks( sal_Bool bUI ) SfxMedium* pMedium = GetDocShell()->GetMedium(); SfxFrame* pFrm = pMedium ? pMedium->GetLoadTargetFrame() : 0; Window* pDlgParent = pFrm ? &pFrm->GetWindow() : 0; - if( GetRootFrm() && !GetEditShell( &pVSh ) && !pVSh ) + if( GetCurrentViewShell() && !GetEditShell( &pVSh ) && !pVSh ) //swmod 071108//swmod 071225 { ViewShell aVSh( *this, 0, 0 ); diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx index 5a559c022c7b..93cef43b956c 100644 --- a/sw/source/core/doc/docnum.cxx +++ b/sw/source/core/doc/docnum.cxx @@ -59,10 +59,9 @@ #include <frmatr.hxx> #include <SwStyleNameMapper.hxx> #include <SwNodeNum.hxx> -// --> OD 2008-03-13 #refactorlists# #include <list.hxx> #include <listfunc.hxx> -// <-- +#include <switerator.hxx> #include <map> @@ -147,8 +146,6 @@ void SwDoc::PropagateOutlineRule() // if (NO_NUMBERING != pColl->GetOutlineLevel())//#outline level,zhaojianwei if(pColl->IsAssignedToListLevelOfOutlineStyle())//<-end,zhaojianwei { - SwClientIter aIter(*pColl); - // --> OD 2006-11-20 #i71764# // Check only the list style, which is set at the paragraph style const SwNumRuleItem & rCollRuleItem = pColl->GetNumRule( sal_False ); @@ -1356,6 +1353,8 @@ void SwDoc::StopNumRuleAnimations( OutputDevice* pOut ) { for( sal_uInt16 n = GetNumRuleTbl().Count(); n; ) { +<<<<<<< local +======= // --> OD 2008-02-19 #refactorlists# // SwNumRuleInfo aUpd( GetNumRuleTbl()[ --n ]->GetName() ); // aUpd.MakeList( *this ); @@ -1370,19 +1369,18 @@ void SwDoc::StopNumRuleAnimations( OutputDevice* pOut ) // if( ((SwTxtFrm*)pFrm)->HasAnimation() ) // ((SwTxtFrm*)pFrm)->StopAnimation( pOut ); // } +>>>>>>> other SwNumRule::tTxtNodeList aTxtNodeList; GetNumRuleTbl()[ --n ]->GetTxtNodeList( aTxtNodeList ); for ( SwNumRule::tTxtNodeList::iterator aTxtNodeIter = aTxtNodeList.begin(); aTxtNodeIter != aTxtNodeList.end(); ++aTxtNodeIter ) { SwTxtNode* pTNd = *aTxtNodeIter; - SwClientIter aIter( *pTNd ); - for( SwFrm* pFrm = (SwFrm*)aIter.First( TYPE(SwFrm) ); - pFrm; pFrm = (SwFrm*)aIter.Next() ) - if( ((SwTxtFrm*)pFrm)->HasAnimation() ) - ((SwTxtFrm*)pFrm)->StopAnimation( pOut ); + SwIterator<SwTxtFrm,SwTxtNode> aIter(*pTNd); + for(SwTxtFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) + if( pFrm->HasAnimation() ) + pFrm->StopAnimation( pOut ); } - // <-- } } diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx index d18d2166dd96..b46cf1e101c0 100644 --- a/sw/source/core/doc/docredln.cxx +++ b/sw/source/core/doc/docredln.cxx @@ -2771,8 +2771,8 @@ void SwRedlineTbl::Remove( sal_uInt16 nP, sal_uInt16 nL ) _SwRedlineTbl::Remove( nP, nL ); ViewShell* pSh; - if( pDoc && !pDoc->IsInDtor() && pDoc->GetRootFrm() && - 0 != ( pSh = pDoc->GetRootFrm()->GetCurrShell()) ) + if( pDoc && !pDoc->IsInDtor() && + 0 != ( pSh = pDoc->GetCurrentViewShell()) ) //swmod 071108//swmod 071225 pSh->InvalidateWindows( SwRect( 0, 0, LONG_MAX, LONG_MAX ) ); } @@ -2785,8 +2785,8 @@ void SwRedlineTbl::DeleteAndDestroy( sal_uInt16 nP, sal_uInt16 nL ) _SwRedlineTbl::DeleteAndDestroy( nP, nL ); ViewShell* pSh; - if( pDoc && !pDoc->IsInDtor() && pDoc->GetRootFrm() && - 0 != ( pSh = pDoc->GetRootFrm()->GetCurrShell()) ) + if( pDoc && !pDoc->IsInDtor() && + 0 != ( pSh = pDoc->GetCurrentViewShell() ) ) //swmod 071108//swmod 071225 pSh->InvalidateWindows( SwRect( 0, 0, LONG_MAX, LONG_MAX ) ); } @@ -3283,7 +3283,7 @@ void SwRedline::InvalidateRange() // das Layout anstossen { aHt.nStart = n == nSttNd ? nSttCnt : 0; aHt.nEnd = n == nEndNd ? nEndCnt : ((SwTxtNode*)pNd)->GetTxt().Len(); - ((SwTxtNode*)pNd)->Modify( &aHt, &aHt ); + ((SwTxtNode*)pNd)->ModifyNotification( &aHt, &aHt ); } } diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx index 79fcfc60049d..999d797f94fe 100644 --- a/sw/source/core/doc/doctxm.cxx +++ b/sw/source/core/doc/doctxm.cxx @@ -76,6 +76,7 @@ #include <breakit.hxx> #include <editsh.hxx> #include <scriptinfo.hxx> +#include <switerator.hxx> using namespace ::com::sun::star; @@ -258,19 +259,24 @@ const SwTOXMark& SwDoc::GotoTOXMark( const SwTOXMark& rCurTOXMark, const SwTOXMark* pMax = &rCurTOXMark; const SwTOXMark* pMin = &rCurTOXMark; - const SwModify* pType = rCurTOXMark.GetRegisteredIn(); - SwClientIter aIter( *(SwModify*)pType ); + const SwTOXType* pType = rCurTOXMark.GetTOXType(); + SwTOXMarks aMarks; + SwTOXMark::InsertTOXMarks( aMarks, *pType ); const SwTOXMark* pTOXMark; const SwCntntFrm* pCFrm; Point aPt; - for( pTOXMark = (SwTOXMark*)aIter.First( TYPE( SwTOXMark )); pTOXMark; - pTOXMark = (SwTOXMark*)aIter.Next() ) + for( sal_Int32 nMark=0; nMark<aMarks.Count(); nMark++ ) { + pTOXMark = aMarks[nMark]; if( pTOXMark != &rCurTOXMark && 0 != ( pMark = pTOXMark->GetTxtTOXMark()) && 0 != ( pTOXSrc = pMark->GetpTxtNd() ) && +<<<<<<< local + 0 != ( pCFrm = pTOXSrc->getLayoutFrm( GetCurrentLayout(), &aPt, 0, FALSE )) && +======= 0 != ( pCFrm = pTOXSrc->GetFrm( &aPt, 0, sal_False )) && +>>>>>>> other ( bInReadOnly || !pCFrm->IsProtected() )) { CompareNodeCntnt aAbsNew( pTOXSrc->GetIndex(), *pMark->GetStart() ); @@ -356,7 +362,6 @@ const SwTOXMark& SwDoc::GotoTOXMark( const SwTOXMark& rCurTOXMark, return *pNew; } -/* */ const SwTOXBaseSection* SwDoc::InsertTableOf( const SwPosition& rPos, const SwTOXBase& rTOX, @@ -476,9 +481,7 @@ const SwTOXBase* SwDoc::GetCurTOX( const SwPosition& rPos ) const } return 0; } -/* -----------------01.09.99 16:01------------------- - --------------------------------------------------*/ const SwAttrSet& SwDoc::GetTOXBaseAttrSet(const SwTOXBase& rTOXBase) const { ASSERT( rTOXBase.ISA( SwTOXBaseSection ), "no TOXBaseSection!" ); @@ -487,10 +490,13 @@ const SwAttrSet& SwDoc::GetTOXBaseAttrSet(const SwTOXBase& rTOXBase) const ASSERT( pFmt, "invalid TOXBaseSection!" ); return pFmt->GetAttrSet(); } -/* -----------------02.09.99 07:48------------------- +<<<<<<< local +const SwTOXBase* SwDoc::GetDefaultTOXBase( TOXTypes eTyp, BOOL bCreate ) +======= --------------------------------------------------*/ const SwTOXBase* SwDoc::GetDefaultTOXBase( TOXTypes eTyp, sal_Bool bCreate ) +>>>>>>> other { SwTOXBase** prBase = 0; switch(eTyp) @@ -511,9 +517,7 @@ const SwTOXBase* SwDoc::GetDefaultTOXBase( TOXTypes eTyp, sal_Bool bCreate ) } return (*prBase); } -/* -----------------02.09.99 08:06------------------- - --------------------------------------------------*/ void SwDoc::SetDefaultTOXBase(const SwTOXBase& rBase) { SwTOXBase** prBase = 0; @@ -639,10 +643,13 @@ sal_uInt16 SwDoc::GetTOXTypeCount(TOXTypes eTyp) const ++nCnt; return nCnt; } -/*-------------------------------------------------------------------- +<<<<<<< local +const SwTOXType* SwDoc::GetTOXType( TOXTypes eTyp, USHORT nId ) const +======= --------------------------------------------------------------------*/ const SwTOXType* SwDoc::GetTOXType( TOXTypes eTyp, sal_uInt16 nId ) const +>>>>>>> other { const SwTOXTypePtr * ppTTypes = pTOXTypes->GetData(); sal_uInt16 nCnt = 0; @@ -652,18 +659,14 @@ const SwTOXType* SwDoc::GetTOXType( TOXTypes eTyp, sal_uInt16 nId ) const return 0; } -/*-------------------------------------------------------------------- - --------------------------------------------------------------------*/ const SwTOXType* SwDoc::InsertTOXType( const SwTOXType& rTyp ) { SwTOXType * pNew = new SwTOXType( rTyp ); pTOXTypes->Insert( pNew, pTOXTypes->Count() ); return pNew; } -/*-------------------------------------------------------------------- - --------------------------------------------------------------------*/ String SwDoc::GetUniqueTOXBaseName( const SwTOXType& rType, const String* pChkStr ) const { @@ -718,10 +721,14 @@ String SwDoc::GetUniqueTOXBaseName( const SwTOXType& rType, return aName += String::CreateFromInt32( ++nNum ); } +<<<<<<< local +BOOL SwDoc::SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName) +======= /*-------------------------------------------------------------------- --------------------------------------------------------------------*/ sal_Bool SwDoc::SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName) +>>>>>>> other { ASSERT( rTOXBase.ISA( SwTOXBaseSection ), "keine TOXBaseSection!" ); @@ -738,7 +745,6 @@ sal_Bool SwDoc::SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName) return bRet; } -/* */ const SwTxtNode* lcl_FindChapterNode( const SwNode& rNd, sal_uInt8 nLvl = 0 ) { @@ -809,7 +815,7 @@ sal_Bool SwTOXBaseSection::SetPosAtStartEnd( SwPosition& rPos, sal_Bool bAtStart --------------------------------------------------------------------*/ void SwTOXBaseSection::Update(const SfxItemSet* pAttr, - const bool _bNewTOX ) + const bool _bNewTOX )//swmodtest 080307 { const SwSectionNode* pSectNd; if( !SwTOXBase::GetRegisteredIn()->GetDepends() || @@ -1089,8 +1095,11 @@ sNm.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "_Head" )); pDoc->GetNodes().Delete( aInsPos, 1 ); aN2L.RestoreUpperFrms( pDoc->GetNodes(), nIdx, nIdx + 1 ); - if(pDoc->GetRootFrm()) - SwFrm::CheckPageDescs( (SwPageFrm*)pDoc->GetRootFrm()->Lower() ); + std::set<SwRootFrm*> aAllLayouts = pDoc->GetAllLayouts(); + for ( std::set<SwRootFrm*>::iterator pLayoutIter = aAllLayouts.begin(); pLayoutIter != aAllLayouts.end(); pLayoutIter++) + { + SwFrm::CheckPageDescs( (SwPageFrm*)(*pLayoutIter)->Lower() ); + }//swmod 080310 SetProtect( SwTOXBase::IsProtected() ); } @@ -1200,18 +1209,17 @@ SwTxtFmtColl* SwTOXBaseSection::GetTxtFmtColl( sal_uInt16 nLevel ) void SwTOXBaseSection::UpdateMarks( const SwTOXInternational& rIntl, const SwTxtNode* pOwnChapterNode ) { - const SwModify* pType = SwTOXBase::GetRegisteredIn(); + const SwTOXType* pType = (SwTOXType*) SwTOXBase::GetRegisteredIn(); if( !pType->GetDepends() ) return; SwDoc* pDoc = (SwDoc*)GetFmt()->GetDoc(); TOXTypes eTOXTyp = GetTOXType()->GetType(); - SwClientIter aIter( *(SwModify*)pType ); + SwIterator<SwTOXMark,SwTOXType> aIter( *pType ); SwTxtTOXMark* pTxtMark; SwTOXMark* pMark; - for( pMark = (SwTOXMark*)aIter.First( TYPE( SwTOXMark )); pMark; - pMark = (SwTOXMark*)aIter.Next() ) + for( pMark = aIter.First(); pMark; pMark = aIter.Next() ) { ::SetProgressState( 0, pDoc->GetDocShell() ); @@ -1225,7 +1233,7 @@ void SwTOXBaseSection::UpdateMarks( const SwTOXInternational& rIntl, // if selected use marks from the same chapter only if( pTOXSrc->GetNodes().IsDocNodes() && pTOXSrc->GetTxt().Len() && pTOXSrc->GetDepends() && - pTOXSrc->GetFrm() && + pTOXSrc->getLayoutFrm( pDoc->GetCurrentLayout() ) && (!IsFromChapter() || ::lcl_FindChapterNode( *pTOXSrc, 0 ) == pOwnChapterNode ) && !pTOXSrc->HasHiddenParaField() && !SwScriptInfo::IsInHiddenRange( *pTOXSrc, *pTxtMark->GetStart() ) ) @@ -1287,9 +1295,15 @@ void SwTOXBaseSection::UpdateOutline( const SwTxtNode* pOwnChapterNode ) ::SetProgressState( 0, pDoc->GetDocShell() ); SwTxtNode* pTxtNd = rOutlNds[ n ]->GetTxtNode(); if( pTxtNd && pTxtNd->Len() && pTxtNd->GetDepends() && +<<<<<<< local + //USHORT(pTxtNd->GetTxtColl()->GetOutlineLevel()+1) <= GetLevel() && //#outline level,zhaojianwei + USHORT( pTxtNd->GetAttrOutlineLevel()) <= GetLevel() && //<-end,zhaojianwei + pTxtNd->getLayoutFrm( pDoc->GetCurrentLayout() ) && +======= //sal_uInt16(pTxtNd->GetTxtColl()->GetOutlineLevel()+1) <= GetLevel() && //#outline level,zhaojianwei sal_uInt16( pTxtNd->GetAttrOutlineLevel()) <= GetLevel() && //<-end,zhaojianwei pTxtNd->GetFrm() && +>>>>>>> other !pTxtNd->HasHiddenParaField() && !pTxtNd->HasHiddenCharAttribute( true ) && ( !IsFromChapter() || @@ -1325,13 +1339,12 @@ void SwTOXBaseSection::UpdateTemplate( const SwTxtNode* pOwnChapterNode ) pColl->IsAssignedToListLevelOfOutlineStyle()) )//<-end,zhaojianwei continue; - SwClientIter aIter( *pColl ); - SwTxtNode* pTxtNd = (SwTxtNode*)aIter.First( TYPE( SwTxtNode )); - for( ; pTxtNd; pTxtNd = (SwTxtNode*)aIter.Next() ) + SwIterator<SwTxtNode,SwFmtColl> aIter( *pColl ); + for( SwTxtNode* pTxtNd = aIter.First(); pTxtNd; pTxtNd = aIter.Next() ) { ::SetProgressState( 0, pDoc->GetDocShell() ); - if( pTxtNd->GetTxt().Len() && pTxtNd->GetFrm() && + if( pTxtNd->GetTxt().Len() && pTxtNd->getLayoutFrm( pDoc->GetCurrentLayout() ) && pTxtNd->GetNodes().IsDocNodes() && ( !IsFromChapter() || pOwnChapterNode == ::lcl_FindChapterNode( *pTxtNd, 0 ) ) ) @@ -1354,9 +1367,8 @@ void SwTOXBaseSection::UpdateSequence( const SwTxtNode* pOwnChapterNode ) if(!pSeqFld) return; - SwClientIter aIter( *pSeqFld ); - SwFmtFld* pFmtFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); - for( ; pFmtFld; pFmtFld = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pSeqFld ); + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) { const SwTxtFld* pTxtFld = pFmtFld->GetTxtFld(); if(!pTxtFld) @@ -1364,7 +1376,7 @@ void SwTOXBaseSection::UpdateSequence( const SwTxtNode* pOwnChapterNode ) const SwTxtNode& rTxtNode = pTxtFld->GetTxtNode(); ::SetProgressState( 0, pDoc->GetDocShell() ); - if( rTxtNode.GetTxt().Len() && rTxtNode.GetFrm() && + if( rTxtNode.GetTxt().Len() && rTxtNode.getLayoutFrm( pDoc->GetCurrentLayout() ) && rTxtNode.GetNodes().IsDocNodes() && ( !IsFromChapter() || ::lcl_FindChapterNode( rTxtNode, 0 ) == pOwnChapterNode ) ) @@ -1384,9 +1396,7 @@ void SwTOXBaseSection::UpdateSequence( const SwTxtNode* pOwnChapterNode ) } } } -/* -----------------15.09.99 14:18------------------- - --------------------------------------------------*/ void SwTOXBaseSection::UpdateAuthorities( const SwTOXInternational& rIntl ) { SwDoc* pDoc = (SwDoc*)GetFmt()->GetDoc(); @@ -1394,9 +1404,8 @@ void SwTOXBaseSection::UpdateAuthorities( const SwTOXInternational& rIntl ) if(!pAuthFld) return; - SwClientIter aIter( *pAuthFld ); - SwFmtFld* pFmtFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); - for( ; pFmtFld; pFmtFld = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pAuthFld ); + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) { const SwTxtFld* pTxtFld = pFmtFld->GetTxtFld(); //undo @@ -1407,12 +1416,12 @@ void SwTOXBaseSection::UpdateAuthorities( const SwTOXInternational& rIntl ) // const SwTxtNode* pChapterCompareNode = 0; - if( rTxtNode.GetTxt().Len() && rTxtNode.GetFrm() && + if( rTxtNode.GetTxt().Len() && rTxtNode.getLayoutFrm( pDoc->GetCurrentLayout() ) && rTxtNode.GetNodes().IsDocNodes() /*&& (!IsFromChapter() || pChapterCompareNode == pOwnChapterNode) */) { //#106485# the body node has to be used! - SwCntntFrm *pFrm = rTxtNode.GetFrm(); + SwCntntFrm *pFrm = rTxtNode.getLayoutFrm( pDoc->GetCurrentLayout() ); SwPosition aFldPos(rTxtNode); const SwTxtNode* pTxtNode = 0; if(pFrm && !pFrm->IsInDocBody()) @@ -1561,7 +1570,7 @@ void SwTOXBaseSection::UpdateCntnt( SwTOXElement eMyType, } } - if( pCNd->GetFrm() && ( !IsFromChapter() || + if( pCNd->getLayoutFrm( pDoc->GetCurrentLayout() ) && ( !IsFromChapter() || ::lcl_FindChapterNode( *pCNd, 0 ) == pOwnChapterNode )) { SwTOXPara * pNew = new SwTOXPara( *pCNd, eMyType, @@ -1602,7 +1611,7 @@ void SwTOXBaseSection::UpdateTable( const SwTxtNode* pOwnChapterNode ) while( 0 != ( pCNd = rNds.GoNext( &aCntntIdx ) ) && aCntntIdx.GetIndex() < pTblNd->EndOfSectionIndex() ) { - if( pCNd->GetFrm() && (!IsFromChapter() || + if( pCNd->getLayoutFrm( pDoc->GetCurrentLayout() ) && (!IsFromChapter() || ::lcl_FindChapterNode( *pCNd, 0 ) == pOwnChapterNode )) { SwTOXTable * pNew = new SwTOXTable( *pCNd ); @@ -1743,7 +1752,11 @@ void SwTOXBaseSection::GenerateText( sal_uInt16 nArrayIdx, long nRightMargin; if( pPageDesc ) { +<<<<<<< local + const SwFrm* pFrm = pTOXNd->getLayoutFrm( pDoc->GetCurrentLayout(), 0, 0, TRUE ); +======= const SwFrm* pFrm = pTOXNd->GetFrm( 0, 0, sal_True ); +>>>>>>> other if( !pFrm || 0 == ( pFrm = pFrm->FindPageFrm() ) || pPageDesc != ((SwPageFrm*)pFrm)->GetPageDesc() ) // dann muss man ueber den PageDesc gehen @@ -1835,7 +1848,7 @@ void SwTOXBaseSection::GenerateText( sal_uInt16 nArrayIdx, pTOXSource->pNd->IsCntntNode() ) // <-- { - const SwCntntFrm* pFrm = pTOXSource->pNd->GetFrm(); + const SwCntntFrm* pFrm = pTOXSource->pNd->getLayoutFrm( pDoc->GetCurrentLayout() ); if( pFrm ) { SwChapterFieldType aFldTyp; @@ -2010,7 +2023,7 @@ void SwTOXBaseSection::UpdatePageNum() SwTOXSource& rTOXSource = pSortBase->aTOXSources[j]; if( rTOXSource.pNd ) { - SwCntntFrm* pFrm = rTOXSource.pNd->GetFrm(); + SwCntntFrm* pFrm = rTOXSource.pNd->getLayoutFrm( pDoc->GetCurrentLayout() ); ASSERT( pFrm || pDoc->IsUpdateTOX(), "TOX, no Frame found"); if( !pFrm ) continue; @@ -2426,9 +2439,7 @@ sal_Bool SwTOXBase::IsTOXBaseInReadonly() const } return bRet; } -/* -----------------17.08.99 13:29------------------- - --------------------------------------------------*/ const SfxItemSet* SwTOXBase::GetAttrSet() const { const SwTOXBaseSection *pSect = PTR_CAST(SwTOXBaseSection, this); @@ -2459,6 +2470,3 @@ sal_Bool SwTOXBase::GetInfo( SfxPoolItem& rInfo ) const return sal_True; } -/* */ - - diff --git a/sw/source/core/doc/fmtcol.cxx b/sw/source/core/doc/fmtcol.cxx index c43e363e3a72..030ab6bc311c 100644 --- a/sw/source/core/doc/fmtcol.cxx +++ b/sw/source/core/doc/fmtcol.cxx @@ -34,20 +34,14 @@ #include <doc.hxx> // fuer GetAttrPool #include <errhdl.hxx> #include <fmtcol.hxx> -// --> OD 2006-11-22 #i71574# #include <fmtcolfunc.hxx> -// <-- #include <hints.hxx> #include <calc.hxx> #include <node.hxx> #include <numrule.hxx> #include <paratr.hxx> - -//--> #outlinelevel added by zhaojianwei -#ifndef _SFXINTITEM_HXX +#include <switerator.hxx> #include <svl/intitem.hxx> -#endif -//<--end TYPEINIT1( SwTxtFmtColl, SwFmtColl ); TYPEINIT1( SwGrfFmtColl, SwFmtColl ); @@ -141,7 +135,7 @@ namespace TxtFmtCollFunc * SwTxtFmtColl TXT */ -void SwTxtFmtColl::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwTxtFmtColl::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { if( GetDoc()->IsInDtor() ) { @@ -361,11 +355,17 @@ void SwTxtFmtColl::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) sal_Bool SwTxtFmtColl::IsAtDocNodeSet() const { - SwClientIter aIter( *(SwModify*)this ); + SwIterator<SwCntntNode,SwFmtColl> aIter( *this ); const SwNodes& rNds = GetDoc()->GetNodes(); +<<<<<<< local + for( SwCntntNode* pNode = aIter.First(); pNode; pNode = aIter.Next() ) + if( &(pNode->GetNodes()) == &rNds ) + return TRUE; +======= for( SwClient* pC = aIter.First(TYPE(SwCntntNode)); pC; pC = aIter.Next() ) if( &((SwCntntNode*)pC)->GetNodes() == &rNds ) return sal_True; +>>>>>>> other return sal_False; } @@ -547,6 +547,12 @@ SwCollCondition::~SwCollCondition() delete aSubCondition.pFldExpression; } +void SwCollCondition::RegisterToFormat( SwFmt& rFmt ) +{ + rFmt.Add( this ); +} + + int SwCollCondition::operator==( const SwCollCondition& rCmp ) const { @@ -684,9 +690,8 @@ void SwTxtFmtColl::AssignToListLevelOfOutlineStyle(const int nAssignedListLevel) SetAttrOutlineLevel(nAssignedListLevel+1); // --> OD 2009-03-18 #i100277# - SwClientIter aIter( *this ); - SwTxtFmtColl* pDerivedTxtFmtColl = - dynamic_cast<SwTxtFmtColl*>(aIter.First( TYPE( SwTxtFmtColl ) )); + SwIterator<SwTxtFmtColl,SwFmtColl> aIter( *this ); + SwTxtFmtColl* pDerivedTxtFmtColl = aIter.First(); while ( pDerivedTxtFmtColl != 0 ) { if ( !pDerivedTxtFmtColl->IsAssignedToListLevelOfOutlineStyle() ) @@ -702,7 +707,7 @@ void SwTxtFmtColl::AssignToListLevelOfOutlineStyle(const int nAssignedListLevel) } } - pDerivedTxtFmtColl = dynamic_cast<SwTxtFmtColl*>(aIter.Next()); + pDerivedTxtFmtColl = aIter.Next(); } // <-- } diff --git a/sw/source/core/doc/ftnidx.cxx b/sw/source/core/doc/ftnidx.cxx index 7395e7ae7449..40579fddd960 100644 --- a/sw/source/core/doc/ftnidx.cxx +++ b/sw/source/core/doc/ftnidx.cxx @@ -220,6 +220,8 @@ void SwFtnIdxs::UpdateAllFtn() SwUpdFtnEndNtAtEnd aNumArr; + SwRootFrm* pTmpRoot = pDoc->GetCurrentLayout();//swmod 080305 + std::set<SwRootFrm*> aAllLayouts = pDoc->GetAllLayouts(); //Fuer normale Fussnoten werden Chapter- und Dokumentweise Nummerierung //getrennt behandelt. Fuer Endnoten gibt es nur die Dokumentweise //Nummerierung. @@ -230,7 +232,6 @@ void SwFtnIdxs::UpdateAllFtn() nFtnIdx = 0; // Index in das FtnIdx-Array for( sal_uInt16 n = 0; n < rOutlNds.Count(); ++n ) { - //if( !rOutlNds[ n ]->GetTxtNode()->GetTxtColl()->GetOutlineLevel() )//#outline level,zhaojianwei if ( rOutlNds[ n ]->GetTxtNode()->GetAttrOutlineLevel() == 1 )//<-end,zhaojianwei { sal_uLong nCapStt = rOutlNds[ n ]->GetIndex(); // Start eines neuen Kapitels @@ -292,8 +293,8 @@ void SwFtnIdxs::UpdateAllFtn() } } - if( pDoc->GetRootFrm() && FTNNUM_PAGE == rFtnInfo.eNum ) - pDoc->GetRootFrm()->UpdateFtnNums(); + if( pTmpRoot && FTNNUM_PAGE == rFtnInfo.eNum ) + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::UpdateFtnNums));//swmod 0 } SwTxtFtn* SwFtnIdxs::SeekEntry( const SwNodeIndex& rPos, sal_uInt16* pFndPos ) const diff --git a/sw/source/core/doc/htmltbl.cxx b/sw/source/core/doc/htmltbl.cxx index 9cef646cffce..8538ff0991ea 100644 --- a/sw/source/core/doc/htmltbl.cxx +++ b/sw/source/core/doc/htmltbl.cxx @@ -34,12 +34,8 @@ #ifdef TEST_DELAYED_RESIZE #include <vcl/sound.hxx> #endif -#ifndef _WRKWIN_HXX //autogen #include <vcl/wrkwin.hxx> -#endif -#ifndef _APP_HXX //autogen #include <vcl/svapp.hxx> -#endif #include <sot/storage.hxx> #include <fmtornt.hxx> #include <fmtfsize.hxx> @@ -54,9 +50,10 @@ #include "poolfmt.hxx" #include "viewsh.hxx" #include "tabfrm.hxx" - +#include "viewopt.hxx" #include "htmltbl.hxx" #include "ndindex.hxx" +#include "switerator.hxx" using namespace ::com::sun::star; @@ -65,8 +62,6 @@ using namespace ::com::sun::star; #define MAX_TABWIDTH (USHRT_MAX - 2001) -/* */ - class SwHTMLTableLayoutConstraints { sal_uInt16 nRow; // Start-Zeile @@ -369,7 +364,7 @@ sal_uInt16 SwHTMLTableLayout::GetBrowseWidthByVisArea( const SwDoc& rDoc ) sal_uInt16 SwHTMLTableLayout::GetBrowseWidth( const SwDoc& rDoc ) { // Wenn ein Layout da ist, koennen wir die Breite dort herholen. - const SwRootFrm *pRootFrm = rDoc.GetRootFrm(); + const SwRootFrm *pRootFrm = rDoc.GetCurrentLayout(); //swmod 080218 if( pRootFrm ) { const SwFrm *pPageFrm = pRootFrm->GetLower(); @@ -419,12 +414,18 @@ sal_uInt16 SwHTMLTableLayout::GetBrowseWidthByTabFrm( sal_uInt16 SwHTMLTableLayout::GetBrowseWidthByTable( const SwDoc& rDoc ) const { +<<<<<<< local + USHORT nBrowseWidth = 0; + SwTabFrm* pFrm = SwIterator<SwTabFrm,SwFmt>::FirstElement( *pSwTable->GetFrmFmt() ); + if( pFrm ) +======= sal_uInt16 nBrowseWidth = 0; SwClientIter aIter( *(SwModify*)pSwTable->GetFrmFmt() ); SwClient* pCli = aIter.First( TYPE( SwTabFrm )); if( pCli ) +>>>>>>> other { - nBrowseWidth = GetBrowseWidthByTabFrm( *(SwTabFrm*)pCli ); + nBrowseWidth = GetBrowseWidthByTabFrm( *pFrm ); } else { @@ -1791,16 +1792,20 @@ void SwHTMLTableLayout::_Resize( sal_uInt16 nAbsAvail, sal_Bool bRecalc ) if( bRecalc ) AutoLayoutPass1(); - SwRootFrm *pRoot = (SwRootFrm*)GetDoc()->GetRootFrm(); + SwRootFrm *pRoot = (SwRootFrm*)GetDoc()->GetCurrentViewShell()->GetLayout(); if ( pRoot && pRoot->IsCallbackActionEnabled() ) - pRoot->StartAllAction(); + pRoot->StartAllAction(); //swmod 071108//swmod 071225 // Sonst koennen die Breiten gesetzt werden, wobei zuvor aber jewils // noch der Pass 2 laufen muss. SetWidths( sal_True, nAbsAvail ); if ( pRoot && pRoot->IsCallbackActionEnabled() ) +<<<<<<< local + pRoot->EndAllAction( TRUE ); //True per VirDev (Browsen ruhiger) //swmod 071108//swmod 071225 +======= pRoot->EndAllAction( sal_True ); //True per VirDev (Browsen ruhiger) +>>>>>>> other } IMPL_STATIC_LINK( SwHTMLTableLayout, DelayedResize_Impl, void*, EMPTYARG ) @@ -1837,7 +1842,7 @@ sal_Bool SwHTMLTableLayout::Resize( sal_uInt16 nAbsAvail, sal_Bool bRecalc, // und nicht die der VisArea uebergeben. Wenn wir nicht in einem Rahmen // stehen, muss die Tabelle allerdings fuer die VisArea berechnet werden, // weil sond die Umschaltung von relativ nach absolut nicht funktioniert. - if( pDoc->GetRootFrm() && pDoc->get(IDocumentSettingAccess::BROWSE_MODE) ) + if( pDoc->GetCurrentViewShell() && pDoc->GetCurrentViewShell()->GetViewOptions()->getBrowseMode() ) { const sal_uInt16 nVisAreaWidth = GetBrowseWidthByVisArea( *pDoc ); if( nVisAreaWidth < nAbsAvail && !FindFlyFrmFmt() ) diff --git a/sw/source/core/doc/lineinfo.cxx b/sw/source/core/doc/lineinfo.cxx index 7490cf9f0719..c29e7a80c665 100644 --- a/sw/source/core/doc/lineinfo.cxx +++ b/sw/source/core/doc/lineinfo.cxx @@ -36,19 +36,22 @@ #include "poolfmt.hxx" #include "rootfrm.hxx" #include "viewsh.hxx" - +#include <set> void SwDoc::SetLineNumberInfo( const SwLineNumberInfo &rNew ) { - if ( GetRootFrm() && + SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219 + if ( pTmpRoot && (rNew.IsCountBlankLines() != pLineNumberInfo->IsCountBlankLines() || rNew.IsRestartEachPage() != pLineNumberInfo->IsRestartEachPage()) ) { - GetRootFrm()->StartAllAction(); + std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();//swmod 080225 + pTmpRoot->StartAllAction(); // FME 2007-08-14 #i80120# Invalidate size, because ChgThisLines() // is only (onny may only be) called by the formatting routines - GetRootFrm()->InvalidateAllCntnt( INV_LINENUM | INV_SIZE ); - GetRootFrm()->EndAllAction(); - } + //pTmpRoot->InvalidateAllCntnt( INV_LINENUM | INV_SIZE ); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::InvalidateAllCntnt), INV_LINENUM | INV_SIZE));//swmod 080226 + pTmpRoot->EndAllAction(); + } //swmod 080219 *pLineNumberInfo = rNew; SetModified(); } @@ -91,7 +94,7 @@ SwLineNumberInfo& SwLineNumberInfo::operator=(const SwLineNumberInfo &rCpy) if ( rCpy.GetRegisteredIn() ) ((SwModify*)rCpy.GetRegisteredIn())->Add( this ); else if ( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); aType = rCpy.GetNumType(); aDivider = rCpy.GetDivider(); @@ -139,15 +142,17 @@ void SwLineNumberInfo::SetCharFmt( SwCharFmt *pChFmt ) pChFmt->Add( this ); } -void SwLineNumberInfo::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwLineNumberInfo::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { - SwClient::Modify( pOld, pNew ); + CheckRegistration( pOld, pNew ); SwDoc *pDoc = ((SwCharFmt*)GetRegisteredIn())->GetDoc(); - SwRootFrm* pRoot = pDoc->GetRootFrm(); - if( pRoot && pRoot->GetCurrShell() ) + SwRootFrm* pRoot = pDoc->GetCurrentLayout(); + if( pRoot ) { pRoot->StartAllAction(); - pRoot->GetCurrShell()->AddPaintRect( pRoot->Frm() ); + std::set<SwRootFrm*> aAllLayouts = pDoc->GetAllLayouts(); + std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllAddPaintRect));//swmod 080305 + //pRoot->GetCurrShell()->AddPaintRect( pRoot->Frm() ); pRoot->EndAllAction(); } } diff --git a/sw/source/core/doc/notxtfrm.cxx b/sw/source/core/doc/notxtfrm.cxx index 8721d5d21164..74da906022f6 100644 --- a/sw/source/core/doc/notxtfrm.cxx +++ b/sw/source/core/doc/notxtfrm.cxx @@ -160,8 +160,8 @@ void lcl_PaintReplacement( const SwRect &rRect, const String &rText, *************************************************************************/ -SwNoTxtFrm::SwNoTxtFrm(SwNoTxtNode * const pNode) - : SwCntntFrm(pNode) +SwNoTxtFrm::SwNoTxtFrm(SwNoTxtNode * const pNode, SwFrm* pSib ) + : SwCntntFrm( pNode, pSib ) { InitCtor(); } @@ -190,9 +190,9 @@ void SwNoTxtFrm::InitCtor() *************************************************************************/ -SwCntntFrm *SwNoTxtNode::MakeFrm() +SwCntntFrm *SwNoTxtNode::MakeFrm( SwFrm* pSib ) { - return new SwNoTxtFrm(this); + return new SwNoTxtFrm(this, pSib); } /************************************************************************* @@ -245,7 +245,7 @@ void lcl_ClearArea( const SwFrm &rFrm, { // OD 2004-04-23 #116347# rOut.Push( PUSH_FILLCOLOR|PUSH_LINECOLOR ); - rOut.SetFillColor( rFrm.GetShell()->Imp()->GetRetoucheColor()); + rOut.SetFillColor( rFrm.getRootFrm()->GetCurrShell()->Imp()->GetRetoucheColor()); rOut.SetLineColor(); for( sal_uInt16 i = 0; i < aRegion.Count(); ++i ) rOut.DrawRect( aRegion[i].SVRect() ); @@ -269,7 +269,7 @@ void SwNoTxtFrm::Paint(SwRect const& rRect, SwPrintData const*const) const if ( Frm().IsEmpty() ) return; - const ViewShell* pSh = GetShell(); + const ViewShell* pSh = getRootFrm()->GetCurrShell(); if( !pSh->GetViewOptions()->IsGraphic() ) { StopAnimation(); @@ -661,7 +661,7 @@ sal_Bool SwNoTxtFrm::GetCrsrOfst(SwPosition* pPos, Point& , }\ } -void SwNoTxtFrm::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwNoTxtFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { sal_uInt16 nWhich = pNew ? pNew->Which() : pOld ? pOld->Which() : 0; @@ -824,7 +824,7 @@ void lcl_correctlyAlignRect( SwRect& rAlignedGrfArea, const SwRect& rInArea, Out /// OD 25.09.2002 #99739# - pixel-align coordinations for drawing graphic. void SwNoTxtFrm::PaintPicture( OutputDevice* pOut, const SwRect &rGrfArea ) const { - ViewShell* pShell = GetShell(); + ViewShell* pShell = getRootFrm()->GetCurrShell(); SwNoTxtNode& rNoTNd = *(SwNoTxtNode*)GetNode(); SwGrfNode* pGrfNd = rNoTNd.GetGrfNode(); @@ -1066,7 +1066,7 @@ void SwNoTxtFrm::PaintPicture( OutputDevice* pOut, const SwRect &rGrfArea ) cons sal_Bool SwNoTxtFrm::IsTransparent() const { - const ViewShell* pSh = GetShell(); + const ViewShell* pSh = getRootFrm()->GetCurrShell(); if ( !pSh || !pSh->GetViewOptions()->IsGraphic() ) return sal_True; diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx index 2333169f2222..bf632eed0c02 100644 --- a/sw/source/core/doc/number.cxx +++ b/sw/source/core/doc/number.cxx @@ -209,7 +209,7 @@ SwNumFmt::SwNumFmt() : ---------------------------------------------------------------------------*/ SwNumFmt::SwNumFmt( const SwNumFmt& rFmt) : SvxNumberFormat(rFmt), - SwClient( rFmt.pRegisteredIn ), + SwClient( rFmt.GetRegisteredInNonConst() ), pVertOrient(new SwFmtVertOrient( 0, rFmt.GetVertOrient())) { sal_Int16 eMyVertOrient = rFmt.GetVertOrient(); @@ -241,7 +241,7 @@ SwNumFmt::SwNumFmt(const SvxNumberFormat& rNumFmt, SwDoc* pDoc) : pCFmt->Add( this ); } else if( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); } /* -----------------------------22.02.01 13:42-------------------------------- @@ -323,9 +323,9 @@ SwNumFmt& SwNumFmt::operator=( const SwNumFmt& rNumFmt) { SvxNumberFormat::operator=(rNumFmt); if( rNumFmt.GetRegisteredIn() ) - rNumFmt.pRegisteredIn->Add( this ); + rNumFmt.GetRegisteredInNonConst()->Add( this ); else if( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); return *this; } /* -----------------------------23.02.01 09:28-------------------------------- @@ -333,8 +333,13 @@ SwNumFmt& SwNumFmt::operator=( const SwNumFmt& rNumFmt) ---------------------------------------------------------------------------*/ sal_Bool SwNumFmt::operator==( const SwNumFmt& rNumFmt) const { +<<<<<<< local + BOOL bRet = SvxNumberFormat::operator==(rNumFmt) && + GetRegisteredIn() == rNumFmt.GetRegisteredIn(); +======= sal_Bool bRet = SvxNumberFormat::operator==(rNumFmt) && pRegisteredIn == rNumFmt.pRegisteredIn; +>>>>>>> other return bRet; } @@ -346,17 +351,18 @@ void SwNumFmt::SetCharFmt( SwCharFmt* pChFmt) if( pChFmt ) pChFmt->Add( this ); else if( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); } /* -----------------------------22.02.01 13:45-------------------------------- ---------------------------------------------------------------------------*/ -void SwNumFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwNumFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { // dann suche mal in dem Doc nach dem NumRules-Object, in dem dieses // NumFormat gesetzt ist. Das Format muss es nicht geben! const SwCharFmt* pFmt = 0; - switch( pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ) + USHORT nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; + switch( nWhich ) { case RES_ATTRSET_CHG: case RES_FMT_CHG: @@ -367,7 +373,7 @@ void SwNumFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( pFmt && !pFmt->GetDoc()->IsInDtor() ) UpdateNumNodes( (SwDoc*)pFmt->GetDoc() ); else - SwClient::Modify( pOld, pNew ); + CheckRegistration( pOld, pNew ); } /* -----------------------------23.02.01 11:08-------------------------------- @@ -381,11 +387,18 @@ void SwNumFmt::SetCharFmtName(const String& rSet) ---------------------------------------------------------------------------*/ const String& SwNumFmt::GetCharFmtName() const { - if((SwCharFmt*)pRegisteredIn) - return ((SwCharFmt*)pRegisteredIn)->GetName(); + if((SwCharFmt*)GetRegisteredIn()) + return ((SwCharFmt*)GetRegisteredIn())->GetName(); else return aEmptyStr; } + +void SwNumFmt::ForgetCharFmt() +{ + if ( GetRegisteredIn() ) + GetRegisteredInNonConst()->Remove( this ); +} + /* -----------------------------22.02.01 16:05-------------------------------- ---------------------------------------------------------------------------*/ diff --git a/sw/source/core/doc/poolfmt.cxx b/sw/source/core/doc/poolfmt.cxx index 5c3bb6659b4a..961983007e2a 100644 --- a/sw/source/core/doc/poolfmt.cxx +++ b/sw/source/core/doc/poolfmt.cxx @@ -1291,7 +1291,7 @@ SwFmt* SwDoc::GetFmtFromPool( sal_uInt16 nId ) case RES_POOLFRM_FRAME: { - if ( get(IDocumentSettingAccess::BROWSE_MODE) ) + if ( get(IDocumentSettingAccess::HTML_MODE) ) { aSet.Put( SwFmtAnchor( FLY_AS_CHAR )); aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::LINE_CENTER, text::RelOrientation::PRINT_AREA ) ); diff --git a/sw/source/core/doc/swserv.cxx b/sw/source/core/doc/swserv.cxx index 7903bffa2309..d53ac908f0c1 100644 --- a/sw/source/core/doc/swserv.cxx +++ b/sw/source/core/doc/swserv.cxx @@ -341,7 +341,7 @@ SwDataChanged::~SwDataChanged() { // JP 09.04.96: nur wenn das Layout vorhanden ist ( also waehrend der // Eingabe) - if( pDoc->GetRootFrm() ) + if( pDoc->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { const ::sfx2::SvLinkSources& rServers = pDoc->GetLinkManager().GetServers(); diff --git a/sw/source/core/doc/tblrwcl.cxx b/sw/source/core/doc/tblrwcl.cxx index e4a522ce2960..b5ca8e4f8a11 100644 --- a/sw/source/core/doc/tblrwcl.cxx +++ b/sw/source/core/doc/tblrwcl.cxx @@ -62,6 +62,7 @@ #include <tblrwcl.hxx> #include <unochart.hxx> #include <boost/shared_ptr.hpp> +#include <switerator.hxx> using namespace com::sun::star; using namespace com::sun::star::uno; @@ -211,20 +212,14 @@ void _CheckBoxWidth( const SwTableLine& rLine, SwTwips nSize ); for ( sal_uInt16 i = 0; i < GetTabLines().Count(); ++i ) \ { \ SwFrmFmt* pFmt = GetTabLines()[i]->GetFrmFmt(); \ - SwClientIter aIter( *pFmt ); \ - SwClient* pLast = aIter.GoStart(); \ - if( pLast ) \ + SwIterator<SwRowFrm,SwFmt> aIter( *pFmt ); \ + for (SwRowFrm* pFrm=aIter.First(); pFrm; pFrm=aIter.Next())\ { \ - do \ - { \ - SwFrm *pFrm = PTR_CAST( SwFrm, pLast ); \ - if ( pFrm && \ - ((SwRowFrm*)pFrm)->GetTabLine() == GetTabLines()[i] ) \ + if ( pFrm->GetTabLine() == GetTabLines()[i] ) \ { \ ASSERT( pFrm->GetUpper()->IsTabFrm(), \ "Table layout does not match table structure" ) \ } \ - } while ( 0 != ( pLast = aIter++ ) ); \ } \ } \ } @@ -530,11 +525,10 @@ void lcl_InsCol( _FndLine* pFndLn, _CpyPara& rCpyPara, sal_uInt16 nCpyCnt, SwRowFrm* GetRowFrm( SwTableLine& rLine ) { - SwClientIter aIter( *rLine.GetFrmFmt() ); - for( SwClient* pFrm = aIter.First( TYPE( SwRowFrm )); pFrm; - pFrm = aIter.Next() ) - if( ((SwRowFrm*)pFrm)->GetTabLine() == &rLine ) - return (SwRowFrm*)pFrm; + SwIterator<SwRowFrm,SwFmt> aIter( *rLine.GetFrmFmt() ); + for( SwRowFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) + if( pFrm->GetTabLine() == &rLine ) + return pFrm; return 0; } @@ -629,8 +623,13 @@ sal_Bool SwTable::_InsertRow( SwDoc* pDoc, const SwSelBoxes& rBoxes, } //Lines fuer das Layout-Update herausuchen. +<<<<<<< local + const BOOL bLayout = !IsNewModel() && + 0 != SwIterator<SwTabFrm,SwFmt>::FirstElement( *GetFrmFmt() ); +======= const sal_Bool bLayout = !IsNewModel() && 0 != SwClientIter( *GetFrmFmt() ).First( TYPE(SwTabFrm) ); +>>>>>>> other if ( bLayout ) { @@ -751,7 +750,11 @@ sal_Bool SwTable::AppendRow( SwDoc* pDoc, sal_uInt16 nCnt ) SetHTMLTableLayout( 0 ); // MIB 9.7.97: HTML-Layout loeschen //Lines fuer das Layout-Update herausuchen. +<<<<<<< local + const BOOL bLayout = 0 != SwIterator<SwTabFrm,SwFmt>::FirstElement( *GetFrmFmt() ); +======= const sal_Bool bLayout = 0 != SwClientIter( *GetFrmFmt() ).First( TYPE(SwTabFrm) ); +>>>>>>> other if( bLayout ) { aFndBox.SetTableLines( *this ); @@ -3759,8 +3762,7 @@ sal_Bool SwTable::SetColWidth( SwTableBox& rAktBox, sal_uInt16 eType, if( GetFrmFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && !rSz.GetWidthPercent() ) { - SwTabFrm* pTabFrm = (SwTabFrm*)SwClientIter( - *GetFrmFmt() ).First( TYPE( SwTabFrm )); + SwTabFrm* pTabFrm = SwIterator<SwTabFrm,SwFmt>::FirstElement( *GetFrmFmt() ); if( pTabFrm && pTabFrm->Prt().Width() != rSz.GetWidth() ) { diff --git a/sw/source/core/doc/visiturl.cxx b/sw/source/core/doc/visiturl.cxx index b5ca141e1fa2..01b4623fba96 100644 --- a/sw/source/core/doc/visiturl.cxx +++ b/sw/source/core/doc/visiturl.cxx @@ -54,7 +54,7 @@ SwURLStateChanged::~SwURLStateChanged() void SwURLStateChanged::Notify( SfxBroadcaster& , const SfxHint& rHint ) { - if( rHint.ISA( INetURLHistoryHint ) && pDoc->GetRootFrm() ) + if( rHint.ISA( INetURLHistoryHint ) && pDoc->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { // diese URL wurde veraendert: const INetURLObject* pIURL = ((INetURLHistoryHint&)rHint).GetObject(); @@ -92,7 +92,7 @@ void SwURLStateChanged::Notify( SfxBroadcaster& , const SfxHint& rHint ) SwUpdateAttr aUpdateAttr( *pAttr->GetStart(), *pAttr->GetEnd(), RES_FMT_CHG ); - ((SwTxtNode*)pTxtNd)->Modify( &aUpdateAttr, &aUpdateAttr ); + ((SwTxtNode*)pTxtNd)->ModifyNotification( &aUpdateAttr, &aUpdateAttr ); } if( bAction ) diff --git a/sw/source/core/docnode/ndcopy.cxx b/sw/source/core/docnode/ndcopy.cxx index 61e1f8eabeaa..e73c9cf3fd7c 100644 --- a/sw/source/core/docnode/ndcopy.cxx +++ b/sw/source/core/docnode/ndcopy.cxx @@ -452,7 +452,7 @@ SwTableNode* SwTableNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) const SwNodeIndex aInsPos( *pEndNd ); SwTable& rTbl = (SwTable&)pTblNd->GetTable(); - pTblFmt->Add( &rTbl ); // das Frame-Format setzen + rTbl.RegisterToFormat( *pTblFmt ); rTbl.SetRowsToRepeat( GetTable().GetRowsToRepeat() ); rTbl.SetTblChgMode( GetTable().GetTblChgMode() ); diff --git a/sw/source/core/docnode/ndsect.cxx b/sw/source/core/docnode/ndsect.cxx index d61ad4f0b763..5f4ed2c63ce5 100644 --- a/sw/source/core/docnode/ndsect.cxx +++ b/sw/source/core/docnode/ndsect.cxx @@ -28,7 +28,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - +#include <svl/smplhint.hxx> #include <hintids.hxx> #include <sfx2/linkmgr.hxx> #include <svl/itemiter.hxx> @@ -573,7 +573,7 @@ void SwDoc::DelSectionFmt( SwSectionFmt *pFmt, sal_Bool bDelNodes ) { SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, pFmt ); - pFmt->Modify( &aMsgHint, &aMsgHint ); + pFmt->ModifyNotification( &aMsgHint, &aMsgHint ); } // A ClearRedo could result in a rekursive call of this function and delete some section @@ -786,7 +786,7 @@ void lcl_DeleteFtn( SwSectionNode *pNd, sal_uLong nStt, sal_uLong nEnd ) // Werden die Nodes nicht geloescht mussen sie bei den Seiten // abmeldet (Frms loeschen) werden, denn sonst bleiben sie // stehen (Undo loescht sie nicht!) - pSrch->DelFrms(); + pSrch->DelFrms(0); ++nPos; } @@ -796,7 +796,7 @@ void lcl_DeleteFtn( SwSectionNode *pNd, sal_uLong nStt, sal_uLong nEnd ) // Werden die Nodes nicht geloescht mussen sie bei den Seiten // abmeldet (Frms loeschen) werden, denn sonst bleiben sie // stehen (Undo loescht sie nicht!) - pSrch->DelFrms(); + pSrch->DelFrms(0); } } } @@ -920,8 +920,13 @@ SwSectionNode* SwNodes::InsertTextSection(SwNodeIndex const& rNdIdx, // Hier bietet sich als Optimierung an, vorhandene Frames nicht zu // zerstoeren und wieder neu anzulegen, sondern nur umzuhaengen. +<<<<<<< local + BOOL bInsFrm = bCreateFrms && !pSectNd->GetSection().IsHidden() && + GetDoc()->GetCurrentViewShell(); //swmod 071108//swmod 071225 +======= sal_Bool bInsFrm = bCreateFrms && !pSectNd->GetSection().IsHidden() && GetDoc()->GetRootFrm(); +>>>>>>> other SwNode2Layout *pNode2Layout = NULL; if( bInsFrm ) { @@ -1066,6 +1071,12 @@ SwFrm* SwClearDummies( SwFrm* pFrm ) SwSectionNode::~SwSectionNode() { +<<<<<<< local + // mba: test if iteration works as clients will be removed in callback + m_pSection->GetFmt()->CallSwClientNotify( SfxSimpleHint( SFX_HINT_DYING ) ); + + SwDoc* pDoc = GetDoc(); +======= { SwClientIter aIter( *(m_pSection->GetFmt()) ); SwClient *pLast = aIter.GoStart(); @@ -1081,6 +1092,7 @@ SwSectionNode::~SwSectionNode() pLast = aIter++; } } +>>>>>>> other SwSectionFmt* pFmt = m_pSection->GetFmt(); if( pFmt ) @@ -1094,10 +1106,10 @@ SwSectionNode::~SwSectionNode() } -SwFrm *SwSectionNode::MakeFrm() +SwFrm *SwSectionNode::MakeFrm( SwFrm *pSib ) { m_pSection->m_Data.SetHiddenFlag(false); - return new SwSectionFrm( *m_pSection ); + return new SwSectionFrm( *m_pSection, pSib ); } //Methode erzeugt fuer den vorhergehenden Node alle Ansichten vom @@ -1107,7 +1119,7 @@ void SwSectionNode::MakeFrms(const SwNodeIndex & rIdx ) { // also nehme meinen nachfolgenden oder vorhergehenden ContentFrame: SwNodes& rNds = GetNodes(); - if( rNds.IsDocNodes() && rNds.GetDoc()->GetRootFrm() ) + if( rNds.IsDocNodes() && rNds.GetDoc()->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { if( GetSection().IsHidden() || IsCntntHidden() ) { @@ -1129,7 +1141,7 @@ void SwSectionNode::MakeFrms(const SwNodeIndex & rIdx ) while( 0 != (pFrm = aNode2Layout.NextFrm()) ) { ASSERT( pFrm->IsSctFrm(), "Depend von Section keine Section." ); - pNew = rIdx.GetNode().GetCntntNode()->MakeFrm(); + pNew = rIdx.GetNode().GetCntntNode()->MakeFrm( pFrm ); SwSectionNode* pS = rIdx.GetNode().FindSectionNode(); // --> OD 2008-06-23 #156927# @@ -1152,7 +1164,7 @@ void SwSectionNode::MakeFrms(const SwNodeIndex & rIdx ) bool bInitNewSect = false; if( pS ) { - SwSectionFrm *pSct = new SwSectionFrm( pS->GetSection() ); + SwSectionFrm *pSct = new SwSectionFrm( pS->GetSection(), pFrm ); // OD 14.11.2002 #104684# - prepare <Init()> of new section frame. bInitNewSect = true; SwLayoutFrm* pUp = pSct; @@ -1169,7 +1181,7 @@ void SwSectionNode::MakeFrms(const SwNodeIndex & rIdx ) // and relation CONTENT_FLOWS_TO for previous paragraph will change. if ( pNew->IsTxtFrm() ) { - ViewShell* pViewShell( pNew->GetShell() ); + ViewShell* pViewShell( pNew->getRootFrm()->GetCurrShell() ); if ( pViewShell && pViewShell->GetLayout() && pViewShell->GetLayout()->IsAnyShellAccessible() ) { @@ -1196,7 +1208,7 @@ void SwSectionNode::MakeFrms(const SwNodeIndex & rIdx ) // and relation CONTENT_FLOWS_TO for previous paragraph will change. if ( pNew->IsTxtFrm() ) { - ViewShell* pViewShell( pNew->GetShell() ); + ViewShell* pViewShell( pNew->getRootFrm()->GetCurrShell() ); if ( pViewShell && pViewShell->GetLayout() && pViewShell->GetLayout()->IsAnyShellAccessible() ) { @@ -1338,7 +1350,7 @@ SwSectionNode* SwSectionNode::MakeCopy( SwDoc* pDoc, const SwNodeIndex& rIdx ) c // dann kopiere auch noch die Links/Server if( pNewSect->IsLinkType() ) // den Link eintragen - pNewSect->CreateLink( pDoc->GetRootFrm() ? CREATE_CONNECT + pNewSect->CreateLink( pDoc->GetCurrentViewShell() ? CREATE_CONNECT //swmod 071108//swmod 071225 : CREATE_NONE ); // falls als Server aus dem Undo kopiert wird, wieder eintragen @@ -1393,7 +1405,7 @@ void SwSectionNode::NodesArrChgd() if( !rNds.IsDocNodes() ) { SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, pFmt ); - pFmt->Modify( &aMsgHint, &aMsgHint ); + pFmt->ModifyNotification( &aMsgHint, &aMsgHint ); } pFmt->LockModify(); @@ -1420,12 +1432,9 @@ void SwSectionNode::NodesArrChgd() { ASSERT( pDoc == GetDoc(), "verschieben in unterschiedliche Documente?" ); - if (m_pSection->IsLinkType()) - { - m_pSection->CreateLink( pDoc->GetRootFrm() ? CREATE_CONNECT - : CREATE_NONE ); - } - + if( m_pSection->IsLinkType() ) // den Link austragen + m_pSection->CreateLink( pDoc->GetCurrentViewShell() ? CREATE_CONNECT //swmod 071108 + : CREATE_NONE );//swmod 071225 if (m_pSection->IsServer()) { pDoc->GetLinkManager().InsertServer( m_pSection->GetObject() ); diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx index 29ecd0ef79f4..fbd54bcee102 100644 --- a/sw/source/core/docnode/ndtbl.cxx +++ b/sw/source/core/docnode/ndtbl.cxx @@ -30,14 +30,15 @@ #include "precompiled_sw.hxx" #include <com/sun/star/chart2/XChartDocument.hpp> +<<<<<<< local +======= +>>>>>>> other #include <hintids.hxx> - #include <editeng/lrspitem.hxx> #include <editeng/brkitem.hxx> #include <editeng/protitem.hxx> #include <editeng/boxitem.hxx> -// OD 06.08.2003 #i17174# #include <editeng/shaditem.hxx> #include <fmtfsize.hxx> #include <fmtornt.hxx> @@ -91,17 +92,13 @@ #include "docsh.hxx" #include <tabcol.hxx> #include <unochart.hxx> - #include <node.hxx> #include <ndtxt.hxx> - #include <map> #include <algorithm> -// --> OD 2005-12-05 #i27138# #include <rootfrm.hxx> -// <-- #include <fldupde.hxx> - +#include <switerator.hxx> #ifndef DBG_UTIL #define CHECK_TABLE(t) @@ -500,7 +497,7 @@ const SwTable* SwDoc::InsertTable( const SwInsertTableOptions& rInsTblOpts, } SwTable * pNdTbl = &pTblNd->GetTable(); - pTableFmt->Add( pNdTbl ); // das Frame-Format setzen + pNdTbl->RegisterToFormat( *pTableFmt ); pNdTbl->SetRowsToRepeat( nRowsToRepeat ); pNdTbl->SetTableModel( bNewModel ); @@ -796,7 +793,7 @@ const SwTable* SwDoc::TextToTable( const SwInsertTableOptions& rInsTblOpts, //Orientation am Fmt der Table setzen pTableFmt->SetFmtAttr( SwFmtHoriOrient( 0, eAdjust ) ); - pTableFmt->Add( pNdTbl ); // das Frame-Format setzen + pNdTbl->RegisterToFormat( *pTableFmt ); if( pTAFmt || ( rInsTblOpts.mnInsMode & tabopts::DEFAULT_BORDER) ) { @@ -962,7 +959,7 @@ SwTableNode* SwNodes::TextToTable( const SwNodeRange& rRange, sal_Unicode cCh, // JP 28.10.96: vom 1. Node die Positionen des Trenners besorgen, // damit die Boxen entsprechend eingestellt werden - SwTxtFrmInfo aFInfo( (SwTxtFrm*)pTxtNd->GetFrm() ); + SwTxtFrmInfo aFInfo( (SwTxtFrm*)pTxtNd->getLayoutFrm( pTxtNd->GetDoc()->GetCurrentLayout() ) ); if( aFInfo.IsOneLine() ) // nur dann sinnvoll! { const sal_Unicode* pTxt = pTxtNd->GetTxt().GetBuffer(); @@ -1154,10 +1151,13 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > bool const bUndo(GetIDocumentUndoRedo().DoesUndo()); if (bUndo) { +<<<<<<< local +======= // GetIDocumentUndoRedo().StartUndo( UNDO_TEXTTOTABLE ); // pUndo = new SwUndoTxtToTbl( aOriginal, rInsTblOpts, cCh, eAdjust, pTAFmt ); // GetIDocumentUndoRedo().AppendUndo(pUndo); +>>>>>>> other // das Splitten vom TextNode nicht in die Undohistory aufnehmen GetIDocumentUndoRedo().DoUndo(false); } @@ -1209,8 +1209,11 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > pLineFmt->SetFmtAttr( SwFmtFillOrder( ATT_LEFT_TO_RIGHT )); // die Tabelle bekommt USHRT_MAX als default SSize pTableFmt->SetFmtAttr( SwFmtFrmSize( ATT_VAR_SIZE, USHRT_MAX )); +<<<<<<< local +======= // if( !(rInsTblOpts.mnInsMode & tabopts::SPLIT_LAYOUT) ) // pTableFmt->SetAttr( SwFmtLayoutSplit( sal_False )); +>>>>>>> other /* #106283# If the first node in the selection is a context node and if it has an item FRAMEDIR set (no default) propagate the item to the @@ -1233,6 +1236,9 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > SwTable * pNdTbl = &pTblNd->GetTable(); ASSERT( pNdTbl, "kein Tabellen-Node angelegt." ) +<<<<<<< local + pNdTbl->RegisterToFormat( *pTableFmt ); +======= pTableFmt->Add( pNdTbl ); // das Frame-Format setzen // const sal_uInt16 nRowsToRepeat = @@ -1240,6 +1246,7 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > // rInsTblOpts.mnRowsToRepeat : // 0; // pNdTbl->SetRowsToRepeat( nRowsToRepeat ); +>>>>>>> other sal_Bool bUseBoxFmt = sal_False; if( !pBoxFmt->GetDepends() ) @@ -1249,17 +1256,22 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > bUseBoxFmt = sal_True; pTableFmt->SetFmtAttr( pBoxFmt->GetFrmSize() ); delete pBoxFmt; -// eAdjust = HORI_NONE; } +<<<<<<< local + ULONG nIdx = pTblNd->GetIndex(); +======= //Orientation am Fmt der Table setzen // pTableFmt->SetAttr( SwFmtHoriOrient( 0, eAdjust ) ); // pTableFmt->Add( pNdTbl ); // das Frame-Format setzen sal_uLong nIdx = pTblNd->GetIndex(); +>>>>>>> other aNode2Layout.RestoreUpperFrms( GetNodes(), nIdx, nIdx + 1 ); +<<<<<<< local +======= { // SwPaM& rTmp = (SwPaM&)rRange; // Point immer an den Anfang // rTmp.DeleteMark(); @@ -1271,6 +1283,7 @@ const SwTable* SwDoc::TextToTable( const std::vector< std::vector<SwNodeRange> > // if( pUndo ) // GetIDocumentUndoRedo().EndUndo( UNDO_TEXTTOTABLE ); +>>>>>>> other SetModified(); SetFieldsDirty( true, NULL, 0 ); return pNdTbl; @@ -2472,14 +2485,14 @@ SwTableNode::~SwTableNode() SwFrmFmt* pTblFmt = GetTable().GetFrmFmt(); SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, pTblFmt ); - pTblFmt->Modify( &aMsgHint, &aMsgHint ); + pTblFmt->ModifyNotification( &aMsgHint, &aMsgHint ); DelFrms(); delete pTable; } -SwTabFrm *SwTableNode::MakeFrm() +SwTabFrm *SwTableNode::MakeFrm( SwFrm* pSib ) { - return new SwTabFrm( *pTable ); + return new SwTabFrm( *pTable, pSib ); } //Methode erzeugt fuer den vorhergehenden Node alle Ansichten vom @@ -2501,7 +2514,7 @@ void SwTableNode::MakeFrms(const SwNodeIndex & rIdx ) while( 0 != (pFrm = aNode2Layout.NextFrm()) ) { - pNew = pNode->MakeFrm(); + pNew = pNode->MakeFrm( pFrm ); // wird ein Node vorher oder nachher mit Frames versehen if ( bBefore ) // der neue liegt vor mir @@ -2528,7 +2541,7 @@ void SwTableNode::MakeFrms( SwNodeIndex* pIdxBehind ) SwNode2Layout aNode2Layout( *pNd, GetIndex() ); while( 0 != (pUpper = aNode2Layout.UpperFrm( pFrm, *this )) ) { - SwTabFrm* pNew = MakeFrm(); + SwTabFrm* pNew = MakeFrm( pUpper ); pNew->Paste( pUpper, pFrm ); // --> OD 2005-12-01 #i27138# // notify accessibility paragraphs objects about changed @@ -2536,7 +2549,7 @@ void SwTableNode::MakeFrms( SwNodeIndex* pIdxBehind ) // Relation CONTENT_FLOWS_FROM for next paragraph will change // and relation CONTENT_FLOWS_TO for previous paragraph will change. { - ViewShell* pViewShell( pNew->GetShell() ); + ViewShell* pViewShell( pNew->getRootFrm()->GetCurrShell() ); if ( pViewShell && pViewShell->GetLayout() && pViewShell->GetLayout()->IsAnyShellAccessible() ) { @@ -2558,14 +2571,17 @@ void SwTableNode::DelFrms() //Sie muessen etwas umstaendlich zerstort werden, damit die Master //die Follows mit in's Grab nehmen. - SwClientIter aIter( *(pTable->GetFrmFmt()) ); - SwClient *pLast = aIter.GoStart(); - while ( pLast ) + SwIterator<SwTabFrm,SwFmt> aIter( *(pTable->GetFrmFmt()) ); + SwTabFrm *pFrm = aIter.First(); + while ( pFrm ) { +<<<<<<< local + BOOL bAgain = FALSE; +======= sal_Bool bAgain = sal_False; if ( pLast->IsA( TYPE(SwFrm) ) ) +>>>>>>> other { - SwTabFrm *pFrm = (SwTabFrm*)pLast; if ( !pFrm->IsFollow() ) { while ( pFrm->HasFollow() ) @@ -2576,7 +2592,7 @@ void SwTableNode::DelFrms() // Relation CONTENT_FLOWS_FROM for current next paragraph will change // and relation CONTENT_FLOWS_TO for current previous paragraph will change. { - ViewShell* pViewShell( pFrm->GetShell() ); + ViewShell* pViewShell( pFrm->getRootFrm()->GetCurrShell() ); if ( pViewShell && pViewShell->GetLayout() && pViewShell->GetLayout()->IsAnyShellAccessible() ) { @@ -2591,7 +2607,7 @@ void SwTableNode::DelFrms() bAgain = sal_True; } } - pLast = bAgain ? aIter.GoStart() : aIter++; + pFrm = bAgain ? aIter.First() : aIter.Next(); } } @@ -2631,7 +2647,11 @@ void SwDoc::GetTabCols( SwTabCols &rFill, const SwCursor* pCrsr, if( pShCrsr ) aPt = pShCrsr->GetPtPos(); +<<<<<<< local + const SwFrm* pTmpFrm = pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout(), &aPt, 0, FALSE ); +======= const SwFrm* pTmpFrm = pCNd->GetFrm( &aPt, 0, sal_False ); +>>>>>>> other do { pTmpFrm = pTmpFrm->GetUpper(); } while ( !pTmpFrm->IsCellFrm() ); @@ -2856,7 +2876,11 @@ void SwDoc::SetTabCols( const SwTabCols &rNew, sal_Bool bCurRowOnly, if( pShCrsr ) aPt = pShCrsr->GetPtPos(); +<<<<<<< local + const SwFrm* pTmpFrm = pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout(), &aPt, 0, FALSE ); +======= const SwFrm* pTmpFrm = pCNd->GetFrm( &aPt, 0, sal_False ); +>>>>>>> other do { pTmpFrm = pTmpFrm->GetUpper(); } while ( !pTmpFrm->IsCellFrm() ); @@ -3065,7 +3089,7 @@ void SwDoc::SetRowsToRepeat( SwTable &rTable, sal_uInt16 nSet ) SwMsgPoolItem aChg( RES_TBLHEADLINECHG ); rTable.SetRowsToRepeat( nSet ); - rTable.GetFrmFmt()->Modify( &aChg, &aChg ); + rTable.GetFrmFmt()->ModifyNotification( &aChg, &aChg ); SetModified(); } @@ -3592,7 +3616,7 @@ SwTableNode* SwNodes::SplitTable( const SwNodeIndex& rPos, sal_Bool bAfter, pOldTblFmt->GetDoc()->GetDfltFrmFmt() ); *pNewTblFmt = *pOldTblFmt; - pNewTblFmt->Add( &pNewTblNd->GetTable() ); + pNewTblNd->GetTable().RegisterToFormat( *pNewTblFmt ); // neue Size errechnen ? (lcl_ChgTblSize nur das 2. aufrufen, wenn es // beim 1. schon geklappt hat; also absolute Groesse hat) diff --git a/sw/source/core/docnode/ndtbl1.cxx b/sw/source/core/docnode/ndtbl1.cxx index 3d8b57df4101..559109ae3e0b 100644 --- a/sw/source/core/docnode/ndtbl1.cxx +++ b/sw/source/core/docnode/ndtbl1.cxx @@ -28,7 +28,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" +<<<<<<< local +======= +>>>>>>> other #include "hintids.hxx" #include <editeng/lrspitem.hxx> #include <editeng/boxitem.hxx> @@ -56,8 +59,13 @@ #include "swtblfmt.hxx" #include "docary.hxx" #include "ndindex.hxx" +<<<<<<< local +#include "undobj.hxx" +#include "switerator.hxx" +======= #include <UndoTable.hxx> +>>>>>>> other using namespace ::com::sun::star; @@ -123,8 +131,8 @@ void lcl_GetStartEndCell( const SwCursor& rCrsr, SwCntntNode* pPointNd = rCrsr.GetCntntNode(); SwCntntNode* pMarkNd = rCrsr.GetCntntNode(sal_False); - SwFrm* pPointFrm = pPointNd ? pPointNd->GetFrm( &aPtPos ) : 0; - SwFrm* pMarkFrm = pMarkNd ? pMarkNd->GetFrm( &aMkPos ) : 0; + SwFrm* pPointFrm = pPointNd ? pPointNd->getLayoutFrm( pPointNd->GetDoc()->GetCurrentLayout(), &aPtPos ) : 0; + SwFrm* pMarkFrm = pMarkNd ? pMarkNd->getLayoutFrm( pMarkNd->GetDoc()->GetCurrentLayout(), &aMkPos ) : 0; prStart = pPointFrm ? pPointFrm->GetUpper() : 0; prEnd = pMarkFrm ? pMarkFrm->GetUpper() : 0; @@ -458,12 +466,12 @@ sal_Bool SwDoc::BalanceRowHeight( const SwCursor& rCursor, sal_Bool bTstOnly ) for ( i = 0; i < aRowArr.Count(); ++i ) { - SwClientIter aIter( *((SwTableLine*)aRowArr[i])->GetFrmFmt() ); - SwFrm* pFrm = (SwFrm*)aIter.First( TYPE(SwFrm) ); + SwIterator<SwFrm,SwFmt> aIter( *((SwTableLine*)aRowArr[i])->GetFrmFmt() ); + SwFrm* pFrm = aIter.First(); while ( pFrm ) { nHeight = Max( nHeight, pFrm->Frm().Height() ); - pFrm = (SwFrm*)aIter.Next(); + pFrm = aIter.Next(); } } SwFmtFrmSize aNew( ATT_MIN_SIZE, 0, nHeight ); @@ -795,7 +803,7 @@ void SwDoc::SetTabBorders( const SwCursor& rCursor, const SfxItemSet& rSet ) SwHTMLTableLayout *pTableLayout = rTable.GetHTMLTableLayout(); if( pTableLayout ) { - SwCntntFrm* pFrm = rCursor.GetCntntNode()->GetFrm(); + SwCntntFrm* pFrm = rCursor.GetCntntNode()->getLayoutFrm( rCursor.GetCntntNode()->GetDoc()->GetCurrentLayout() ); SwTabFrm* pTabFrm = pFrm->ImplFindTabFrm(); pTableLayout->BordersChanged( @@ -891,7 +899,7 @@ void SwDoc::SetTabLineStyle( const SwCursor& rCursor, SwHTMLTableLayout *pTableLayout = rTable.GetHTMLTableLayout(); if( pTableLayout ) { - SwCntntFrm* pFrm = rCursor.GetCntntNode()->GetFrm(); + SwCntntFrm* pFrm = rCursor.GetCntntNode()->getLayoutFrm( rCursor.GetCntntNode()->GetDoc()->GetCurrentLayout() ); SwTabFrm* pTabFrm = pFrm->ImplFindTabFrm(); pTableLayout->BordersChanged( @@ -1150,7 +1158,7 @@ void SwDoc::SetBoxAttr( const SwCursor& rCursor, const SfxPoolItem &rNew ) SwHTMLTableLayout *pTableLayout = rTable.GetHTMLTableLayout(); if( pTableLayout ) { - SwCntntFrm* pFrm = rCursor.GetCntntNode()->GetFrm(); + SwCntntFrm* pFrm = rCursor.GetCntntNode()->getLayoutFrm( rCursor.GetCntntNode()->GetDoc()->GetCurrentLayout() ); SwTabFrm* pTabFrm = pFrm->ImplFindTabFrm(); pTableLayout->Resize( diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx index f8d7170099ee..7c62f31f7eef 100644 --- a/sw/source/core/docnode/node.cxx +++ b/sw/source/core/docnode/node.cxx @@ -28,12 +28,8 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - #include <hintids.hxx> - -// --> OD 2005-02-21 #i42921# #include <editeng/frmdiritem.hxx> -// <-- #include <editeng/protitem.hxx> #include <com/sun/star/i18n/CharacterIteratorMode.hdl> #include <fmtcntnt.hxx> @@ -71,13 +67,11 @@ #include <crsskip.hxx> #include <SwStyleNameMapper.hxx> #include <scriptinfo.hxx> -// --> OD 2005-12-05 #i27138# #include <rootfrm.hxx> -// <-- #include <istyleaccess.hxx> -// --> OD 2007-10-31 #i83479# #include <IDocumentListItems.hxx> -// <-- +#include <switerator.hxx> +#include "ndole.hxx" using namespace ::com::sun::star::i18n; @@ -449,15 +443,21 @@ sal_Bool SwNode::IsInVisibleArea( ViewShell* pSh ) const else pNd = GetCntntNode(); +<<<<<<< local +======= const SwFrm* pFrm; if( pNd && 0 != ( pFrm = pNd->GetFrm( 0, 0, sal_False ) ) ) { +>>>>>>> other if( !pSh ) // dann die Shell vom Doc besorgen: GetDoc()->GetEditShell( &pSh ); if( pSh ) { + const SwFrm* pFrm; + if( pNd && 0 != ( pFrm = pNd->getLayoutFrm( pSh->GetLayout(), 0, 0, FALSE ) ) ) + { if ( pFrm->IsInTab() ) pFrm = pFrm->FindTabFrm(); @@ -494,7 +494,7 @@ sal_Bool SwNode::IsProtect() const if( 0 != ( pSttNd = FindTableBoxStartNode() ) ) { SwCntntFrm* pCFrm; - if( IsCntntNode() && 0 != (pCFrm = ((SwCntntNode*)this)->GetFrm() )) + if( IsCntntNode() && 0 != (pCFrm = ((SwCntntNode*)this)->getLayoutFrm( GetDoc()->GetCurrentLayout() ) )) return pCFrm->IsProtected(); const SwTableBox* pBox = pSttNd->FindTableNode()->GetTable(). @@ -563,7 +563,7 @@ const SwPageDesc* SwNode::FindPageDesc( sal_Bool bCalcLay, { const SwFrm* pFrm; const SwPageFrm* pPage; - if( pNode && 0 != ( pFrm = pNode->GetFrm( 0, 0, bCalcLay ) ) && + if( pNode && 0 != ( pFrm = pNode->getLayoutFrm( pNode->GetDoc()->GetCurrentLayout(), 0, 0, bCalcLay ) ) && 0 != ( pPage = pFrm->FindPageFrm() ) ) { pPgDesc = pPage->GetPageDesc(); @@ -787,10 +787,9 @@ SwFrmFmt* SwNode::GetFlyFmt() const { if( IsCntntNode() ) { - SwClientIter aIter( *(SwCntntNode*)this ); - SwClient* pCli = aIter.First( TYPE( SwCntntFrm )); - if( pCli ) - pRet = ((SwCntntFrm*)pCli)->FindFlyFrm()->GetFmt(); + SwCntntFrm* pFrm = SwIterator<SwCntntFrm,SwCntntNode>::FirstElement( *(SwCntntNode*)this ); + if( pFrm ) + pRet = pFrm->FindFlyFrm()->GetFmt(); } if( !pRet ) { @@ -862,8 +861,13 @@ const SwTxtNode* SwNode::FindOutlineNodeOfLevel( sal_uInt8 nLvl ) const const SwCntntNode* pCNd = GetCntntNode(); Point aPt( 0, 0 ); +<<<<<<< local + const SwFrm* pFrm = pRet->getLayoutFrm( pRet->GetDoc()->GetCurrentLayout(), &aPt, 0, FALSE ), + * pMyFrm = pCNd ? pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout(), &aPt, 0, FALSE ) : 0; +======= const SwFrm* pFrm = pRet->GetFrm( &aPt, 0, sal_False ), * pMyFrm = pCNd ? pCNd->GetFrm( &aPt, 0, sal_False ) : 0; +>>>>>>> other const SwPageFrm* pPgFrm = pFrm ? pFrm->FindPageFrm() : 0; if( pPgFrm && pMyFrm && pPgFrm->Frm().Top() > pMyFrm->Frm().Top() ) @@ -1060,7 +1064,7 @@ SwCntntNode::~SwCntntNode() ((SwAttrSet*)mpAttrSet.get())->SetModifyAtAttr( 0 ); } -void SwCntntNode::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) +void SwCntntNode::Modify( const SfxPoolItem* pOldValue, const SfxPoolItem* pNewValue ) { sal_uInt16 nWhich = pOldValue ? pOldValue->Which() : pNewValue ? pNewValue->Which() : 0 ; @@ -1072,7 +1076,7 @@ void SwCntntNode::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) SwFmt * pFmt = (SwFmt *) ((SwPtrMsgPoolItem *)pNewValue)->pObject; // nicht umhaengen wenn dieses das oberste Format ist !! - if( pRegisteredIn == pFmt ) + if( GetRegisteredIn() == pFmt ) { if( pFmt->GetRegisteredIn() ) { @@ -1139,7 +1143,7 @@ void SwCntntNode::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) break; } - SwModify::Modify( pOldValue, pNewValue ); + NotifyClients( pOldValue, pNewValue ); } sal_Bool SwCntntNode::InvalidateNumRule() @@ -1157,20 +1161,31 @@ sal_Bool SwCntntNode::InvalidateNumRule() return 0 != pRule; } +<<<<<<< local +SwCntntFrm *SwCntntNode::getLayoutFrm( const SwRootFrm* _pRoot, + const Point* pPoint, const SwPosition *pPos, const BOOL bCalcFrm ) const +======= SwCntntFrm *SwCntntNode::GetFrm( const Point* pPoint, const SwPosition *pPos, const sal_Bool bCalcFrm ) const +>>>>>>> other { - return (SwCntntFrm*) ::GetFrmOfModify( *(SwModify*)this, FRM_CNTNT, + return (SwCntntFrm*) ::GetFrmOfModify( _pRoot, *(SwModify*)this, FRM_CNTNT, pPoint, pPos, bCalcFrm ); } +<<<<<<< local + +SwRect SwCntntNode::FindLayoutRect( const BOOL bPrtArea, const Point* pPoint, + const BOOL bCalcFrm ) const +======= SwRect SwCntntNode::FindLayoutRect( const sal_Bool bPrtArea, const Point* pPoint, const sal_Bool bCalcFrm ) const +>>>>>>> other { SwRect aRet; - SwCntntFrm* pFrm = (SwCntntFrm*)::GetFrmOfModify( *(SwModify*)this, + SwCntntFrm* pFrm = (SwCntntFrm*)::GetFrmOfModify( 0, *(SwModify*)this, FRM_CNTNT, pPoint, 0, bCalcFrm ); if( pFrm ) aRet = bPrtArea ? pFrm->Prt() : pFrm->Frm(); @@ -1181,7 +1196,7 @@ SwRect SwCntntNode::FindPageFrmRect( const sal_Bool bPrtArea, const Point* pPoin const sal_Bool bCalcFrm ) const { SwRect aRet; - SwFrm* pFrm = ::GetFrmOfModify( *(SwModify*)this, + SwFrm* pFrm = ::GetFrmOfModify( 0, *(SwModify*)this, FRM_CNTNT, pPoint, 0, bCalcFrm ); if( pFrm && 0 != ( pFrm = pFrm->FindPageFrm() )) aRet = bPrtArea ? pFrm->Prt() : pFrm->Frm(); @@ -1219,8 +1234,6 @@ SwFmtColl *SwCntntNode::ChgFmtColl( SwFmtColl *pNewColl ) { SwFmtChg aTmp1( pOldColl ); SwFmtChg aTmp2( pNewColl ); - // damit alles was im Modify passiert hier nicht noch impl. - // werden muss SwCntntNode::Modify( &aTmp1, &aTmp2 ); } } @@ -1353,7 +1366,7 @@ void SwCntntNode::MakeFrms( SwCntntNode& rNode ) while( 0 != (pUpper = aNode2Layout.UpperFrm( pFrm, rNode )) ) { - pNew = rNode.MakeFrm(); + pNew = rNode.MakeFrm( pUpper ); pNew->Paste( pUpper, pFrm ); // --> OD 2005-12-01 #i27138# // notify accessibility paragraphs objects about changed @@ -1362,7 +1375,7 @@ void SwCntntNode::MakeFrms( SwCntntNode& rNode ) // and relation CONTENT_FLOWS_TO for previous paragraph will change. if ( pNew->IsTxtFrm() ) { - ViewShell* pViewShell( pNew->GetShell() ); + ViewShell* pViewShell( pNew->getRootFrm()->GetCurrShell() ); if ( pViewShell && pViewShell->GetLayout() && pViewShell->GetLayout()->IsAnyShellAccessible() ) { @@ -1387,6 +1400,9 @@ void SwCntntNode::DelFrms() if( !GetDepends() ) return; +<<<<<<< local + SwCntntFrm::DelFrms(*this); +======= SwClientIter aIter( *this ); SwCntntFrm *pFrm; @@ -1441,6 +1457,7 @@ void SwCntntNode::DelFrms() pFrm->Cut(); delete pFrm; } +>>>>>>> other if( IsTxtNode() ) { ((SwTxtNode*)this)->SetWrong( NULL ); @@ -1511,7 +1528,7 @@ sal_Bool SwCntntNode::GetInfo( SfxPoolItem& rInfo ) const case RES_CONTENT_VISIBLE: { ((SwPtrMsgPoolItem&)rInfo).pObject = - SwClientIter( *(SwCntntNode*)this ).First( TYPE(SwFrm) ); + SwIterator<SwFrm,SwCntntNode>::FirstElement(*this); } return sal_False; } @@ -1549,7 +1566,7 @@ sal_Bool SwCntntNode::SetAttr(const SfxPoolItem& rAttr ) { SwAttrSetChg aChgOld( *GetpSwAttrSet(), aOld ); SwAttrSetChg aChgNew( *GetpSwAttrSet(), aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } } return bRet; @@ -1625,7 +1642,7 @@ sal_Bool SwCntntNode::SetAttr( const SfxItemSet& rSet ) // einige Sonderbehandlungen fuer Attribute SwAttrSetChg aChgOld( *GetpSwAttrSet(), aOld ); SwAttrSetChg aChgNew( *GetpSwAttrSet(), aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } } return bRet; @@ -1675,7 +1692,7 @@ sal_Bool SwCntntNode::ResetAttr( sal_uInt16 nWhich1, sal_uInt16 nWhich2 ) { SwAttrSetChg aChgOld( *GetpSwAttrSet(), aOld ); SwAttrSetChg aChgNew( *GetpSwAttrSet(), aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt if( !GetpSwAttrSet()->Count() ) // leer, dann loeschen mpAttrSet.reset();//DELETEZ( mpAttrSet ); @@ -1716,7 +1733,7 @@ sal_Bool SwCntntNode::ResetAttr( const SvUShorts& rWhichArr ) { SwAttrSetChg aChgOld( *GetpSwAttrSet(), aOld ); SwAttrSetChg aChgNew( *GetpSwAttrSet(), aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt } } if( !GetpSwAttrSet()->Count() ) // leer, dann loeschen @@ -1755,7 +1772,7 @@ sal_uInt16 SwCntntNode::ResetAllAttr() { SwAttrSetChg aChgOld( *GetpSwAttrSet(), aOld ); SwAttrSetChg aChgNew( *GetpSwAttrSet(), aNew ); - Modify( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt + ModifyNotification( &aChgOld, &aChgNew ); // alle veraenderten werden verschickt if( !GetpSwAttrSet()->Count() ) // leer, dann loeschen mpAttrSet.reset();//DELETEZ( mpAttrSet ); @@ -1895,7 +1912,7 @@ void SwCntntNode::SetCondFmtColl( SwFmtColl* pColl ) { SwFmtChg aTmp1( pOldColl ? pOldColl : GetFmtColl() ); SwFmtChg aTmp2( pColl ? pColl : GetFmtColl() ); - SwModify::Modify( &aTmp1, &aTmp2 ); + NotifyClients( &aTmp1, &aTmp2 ); } if( IsInCache() ) { @@ -2049,7 +2066,11 @@ short SwCntntNode::GetTextDirection( const SwPosition& rPos, // --> OD 2007-01-10 #i72024# // No format of the frame, because this can cause recursive layout actions +<<<<<<< local + SwFrm* pFrm = getLayoutFrm( GetDoc()->GetCurrentLayout(), &aPt, &rPos, FALSE ); +======= SwFrm* pFrm = GetFrm( &aPt, &rPos, sal_False ); +>>>>>>> other // <-- if ( pFrm ) @@ -2075,6 +2096,24 @@ short SwCntntNode::GetTextDirection( const SwPosition& rPos, } // <-- +SwOLENodes* SwCntntNode::CreateOLENodesArray( const SwFmtColl& rColl, bool bOnlyWithInvalidSize ) +{ + SwOLENodes *pNodes = 0; + SwIterator<SwCntntNode,SwFmtColl> aIter( rColl ); + for( SwCntntNode* pNd = aIter.First(); pNd; pNd = aIter.Next() ) + { + SwOLENode *pONd = pNd->GetOLENode(); + if ( pONd && (!bOnlyWithInvalidSize || pONd->IsOLESizeInvalid()) ) + { + if ( !pNodes ) + pNodes = new SwOLENodes; + pNodes->Insert( pONd, pNodes->Count() ); + } + } + + return pNodes; +} + //FEATURE::CONDCOLL // Metoden aus Node.hxx - erst hier ist der TxtNode bekannt !! // os: nur fuer ICC, da der zum optimieren zu dumm ist diff --git a/sw/source/core/docnode/node2lay.cxx b/sw/source/core/docnode/node2lay.cxx index ca80bc391c7a..70ceb1e0d4ab 100644 --- a/sw/source/core/docnode/node2lay.cxx +++ b/sw/source/core/docnode/node2lay.cxx @@ -28,8 +28,8 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - -#include <calbck.hxx> // SwClientIter +#include <switerator.hxx> +#include <calbck.hxx> #include <node.hxx> #include <ndindex.hxx> #include <swtable.hxx> @@ -42,14 +42,14 @@ #include "section.hxx" #include "node2lay.hxx" - /* -----------------25.02.99 10:31------------------- * Die SwNode2LayImpl-Klasse erledigt die eigentliche Arbeit, * die SwNode2Layout-Klasse ist nur die der Oefffentlichkeit bekannte Schnittstelle * --------------------------------------------------*/ class SwNode2LayImpl { - SwClientIter *pIter; // Der eigentliche Iterator + SwIterator<SwFrm,SwModify>* pIter; + SwModify* pMod; SvPtrarr *pUpperFrms;// Zum Einsammeln der Upper sal_uLong nIndex; // Der Index des einzufuegenden Nodes sal_Bool bMaster : 1; // sal_True => nur Master , sal_False => nur Frames ohne Follow @@ -77,8 +77,78 @@ public: * vor oder hinter den eingefuegt werden soll. * --------------------------------------------------*/ +<<<<<<< local +SwNode* GoNextWithFrm(const SwNodes& rNodes, SwNodeIndex *pIdx) +{ + if( pIdx->GetIndex() >= rNodes.Count() - 1 ) + return 0; + + SwNodeIndex aTmp(*pIdx, +1); + SwNode* pNd = 0; + while( aTmp < rNodes.Count()-1 ) + { + pNd = &aTmp.GetNode(); + bool bFound = false; + if ( pNd->IsCntntNode() ) + bFound = ( SwIterator<SwFrm,SwCntntNode>::FirstElement(*(SwCntntNode*)pNd) != 0); + else if ( pNd->IsTableNode() ) + bFound = ( SwIterator<SwFrm,SwFmt>::FirstElement(*((SwTableNode*)pNd)->GetTable().GetFrmFmt()) != 0 ); + else if( pNd->IsEndNode() && !pNd->StartOfSectionNode()->IsSectionNode() ) + { + pNd = 0; + break; + } + if ( bFound ) + break; + aTmp++; + } + + if( aTmp == rNodes.Count()-1 ) + pNd = 0; + else if( pNd ) + (*pIdx) = aTmp; + return pNd; +} + +SwNode* GoPreviousWithFrm(SwNodeIndex *pIdx) +{ + if( !pIdx->GetIndex() ) + return 0; + + SwNodeIndex aTmp( *pIdx, -1 ); + SwNode* pNd(0); + while( aTmp.GetIndex() ) + { + pNd = &aTmp.GetNode(); + bool bFound = false; + if ( pNd->IsCntntNode() ) + bFound = ( SwIterator<SwFrm,SwCntntNode>::FirstElement(*(SwCntntNode*)pNd) != 0); + else if ( pNd->IsTableNode() ) + bFound = ( SwIterator<SwFrm,SwFmt>::FirstElement(*((SwTableNode*)pNd)->GetTable().GetFrmFmt()) != 0 ); + else if( pNd->IsStartNode() && !pNd->IsSectionNode() ) + { + pNd = 0; + break; + } + if ( bFound ) + break; + aTmp--; + } + + if( !aTmp.GetIndex() ) + pNd = 0; + else if( pNd ) + (*pIdx) = aTmp; + return pNd; +} + + +SwNode2LayImpl::SwNode2LayImpl( const SwNode& rNode, ULONG nIdx, BOOL bSearch ) + : pUpperFrms( NULL ), nIndex( nIdx ), bInit( FALSE ) +======= SwNode2LayImpl::SwNode2LayImpl( const SwNode& rNode, sal_uLong nIdx, sal_Bool bSearch ) : pUpperFrms( NULL ), nIndex( nIdx ), bInit( sal_False ) +>>>>>>> other { const SwNode* pNd; if( bSearch || rNode.IsSectionNode() ) @@ -88,7 +158,7 @@ SwNode2LayImpl::SwNode2LayImpl( const SwNode& rNode, sal_uLong nIdx, sal_Bool bS if( !bSearch && rNode.GetIndex() < nIndex ) { SwNodeIndex aTmp( *rNode.EndOfSectionNode(), +1 ); - pNd = rNode.GetNodes().GoPreviousWithFrm( &aTmp ); + pNd = GoPreviousWithFrm( &aTmp ); if( !bSearch && pNd && rNode.GetIndex() > pNd->GetIndex() ) pNd = NULL; // Nicht ueber den Bereich hinausschiessen bMaster = sal_False; @@ -96,8 +166,13 @@ SwNode2LayImpl::SwNode2LayImpl( const SwNode& rNode, sal_uLong nIdx, sal_Bool bS else { SwNodeIndex aTmp( rNode, -1 ); +<<<<<<< local + pNd = GoNextWithFrm( rNode.GetNodes(), &aTmp ); + bMaster = TRUE; +======= pNd = rNode.GetNodes().GoNextWithFrm( &aTmp ); bMaster = sal_True; +>>>>>>> other if( !bSearch && pNd && rNode.EndOfSectionIndex() < pNd->GetIndex() ) pNd = NULL; // Nicht ueber den Bereich hinausschiessen } @@ -109,7 +184,6 @@ SwNode2LayImpl::SwNode2LayImpl( const SwNode& rNode, sal_uLong nIdx, sal_Bool bS } if( pNd ) { - SwModify *pMod; if( pNd->IsCntntNode() ) pMod = (SwModify*)pNd->GetCntntNode(); else @@ -117,10 +191,13 @@ SwNode2LayImpl::SwNode2LayImpl( const SwNode& rNode, sal_uLong nIdx, sal_Bool bS ASSERT( pNd->IsTableNode(), "For Tablenodes only" ); pMod = pNd->GetTableNode()->GetTable().GetFrmFmt(); } - pIter = new SwClientIter( *pMod ); + pIter = new SwIterator<SwFrm,SwModify>( *pMod ); } else + { pIter = NULL; + pMod = 0; + } } /* -----------------25.02.99 10:41------------------- @@ -141,11 +218,16 @@ SwFrm* SwNode2LayImpl::NextFrm() return sal_False; if( !bInit ) { +<<<<<<< local + pRet = pIter->First(); + bInit = TRUE; +======= pRet = (SwFrm*)pIter->First(TYPE(SwFrm)); bInit = sal_True; +>>>>>>> other } else - pRet = (SwFrm*)pIter->Next(); + pRet = pIter->Next(); while( pRet ) { SwFlowFrm* pFlow = SwFlowFrm::CastFlowFrm( pRet ); @@ -188,7 +270,7 @@ SwFrm* SwNode2LayImpl::NextFrm() } return pRet; } - pRet = (SwFrm*)pIter->Next(); + pRet = pIter->Next(); } return NULL; } @@ -215,6 +297,7 @@ void SwNode2LayImpl::SaveUpperFrms() } delete pIter; pIter = NULL; + pMod = 0; } SwLayoutFrm* SwNode2LayImpl::UpperFrm( SwFrm* &rpFrm, const SwNode &rNode ) @@ -255,7 +338,7 @@ SwLayoutFrm* SwNode2LayImpl::UpperFrm( SwFrm* &rpFrm, const SwNode &rNode ) return static_cast<SwLayoutFrm*>(pFrm); } - pUpper = new SwSectionFrm(((SwSectionNode*)pNode)->GetSection()); + pUpper = new SwSectionFrm(((SwSectionNode*)pNode)->GetSection(), rpFrm); pUpper->Paste( rpFrm->GetUpper(), bMaster ? rpFrm : rpFrm->GetNext() ); static_cast<SwSectionFrm*>(pUpper)->Init(); @@ -299,7 +382,7 @@ void SwNode2LayImpl::RestoreUpperFrms( SwNodes& rNds, sal_uLong nStt, sal_uLong pNxt = pNxt->GetNext(); else pNxt = pUp->Lower(); - pNew = ((SwCntntNode*)pNd)->MakeFrm(); + pNew = ((SwCntntNode*)pNd)->MakeFrm( pUp ); pNew->Paste( pUp, pNxt ); (*pUpperFrms)[n-2] = pNew; } @@ -314,7 +397,7 @@ void SwNode2LayImpl::RestoreUpperFrms( SwNodes& rNds, sal_uLong nStt, sal_uLong pNxt = pNxt->GetNext(); else pNxt = pUp->Lower(); - pNew = ((SwTableNode*)pNd)->MakeFrm(); + pNew = ((SwTableNode*)pNd)->MakeFrm( pUp ); ASSERT( pNew->IsTabFrm(), "Table exspected" ); pNew->Paste( pUp, pNxt ); ((SwTabFrm*)pNew)->RegistFlys(); @@ -358,9 +441,8 @@ SwFrm* SwNode2LayImpl::GetFrm( const Point* pDocPos, const SwPosition *pPos, const sal_Bool bCalcFrm ) const { - return pIter ? ::GetFrmOfModify( pIter->GetModify(), USHRT_MAX, - pDocPos, pPos, bCalcFrm ) - : 0; + // mba: test if change of member pIter -> pMod broke anything + return pMod ? ::GetFrmOfModify( 0, *pMod, USHRT_MAX, pDocPos, pPos, bCalcFrm ) : 0; } SwNode2Layout::SwNode2Layout( const SwNode& rNd, sal_uLong nIdx ) diff --git a/sw/source/core/docnode/nodes.cxx b/sw/source/core/docnode/nodes.cxx index 5ef2df851e17..cce5bcb586f1 100644 --- a/sw/source/core/docnode/nodes.cxx +++ b/sw/source/core/docnode/nodes.cxx @@ -373,7 +373,7 @@ void SwNodes::ChgNode( SwNodeIndex& rDelPos, sal_uLong nSz, SwPtrMsgPoolItem aMsgHint( nDelMsg, (void*)&pAttr->GetAttr() ); rNds.GetDoc()->GetUnoCallBack()-> - Modify( &aMsgHint, &aMsgHint ); + ModifyNotification( &aMsgHint, &aMsgHint ); } } } @@ -402,7 +402,7 @@ void SwNodes::ChgNode( SwNodeIndex& rDelPos, sal_uLong nSz, if( bNewFrms ) bNewFrms = &GetDoc()->GetNodes() == (const SwNodes*)&rNds && - GetDoc()->GetRootFrm(); + GetDoc()->GetCurrentViewShell(); //swmod 071108//swmod 071225 if( bNewFrms ) { // Frames besorgen: @@ -671,7 +671,7 @@ sal_Bool SwNodes::_MoveNodes( const SwNodeRange& aRange, SwNodes & rNodes, SwFrmFmt* pTblFmt = pTblNd->GetTable().GetFrmFmt(); SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, pTblFmt ); - pTblFmt->Modify( &aMsgHint, &aMsgHint ); + pTblFmt->ModifyNotification( &aMsgHint, &aMsgHint ); } } if( bNewFrms ) @@ -1532,79 +1532,6 @@ SwCntntNode* SwNodes::GoPrevious(SwNodeIndex *pIdx) const return (SwCntntNode*)pNd; } -SwNode* SwNodes::GoNextWithFrm(SwNodeIndex *pIdx) const -{ - if( pIdx->GetIndex() >= Count() - 1 ) - return 0; - - SwNodeIndex aTmp(*pIdx, +1); - SwNode* pNd = 0; - while( aTmp < Count()-1 ) - { - pNd = &aTmp.GetNode(); - SwModify *pMod = 0; - if ( pNd->IsCntntNode() ) - pMod = (SwCntntNode*)pNd; - else if ( pNd->IsTableNode() ) - pMod = ((SwTableNode*)pNd)->GetTable().GetFrmFmt(); - else if( pNd->IsEndNode() && !pNd->StartOfSectionNode()->IsSectionNode() ) - { - pNd = 0; - break; - } - if ( pMod && pMod->GetDepends() ) - { - SwClientIter aIter( *pMod ); - if( aIter.First( TYPE(SwFrm) ) ) - break; - } - aTmp++; - } - if( aTmp == Count()-1 ) - pNd = 0; - else if( pNd ) - (*pIdx) = aTmp; - return pNd; -} - -SwNode* SwNodes::GoPreviousWithFrm(SwNodeIndex *pIdx) const -{ - if( !pIdx->GetIndex() ) - return 0; - - SwNodeIndex aTmp( *pIdx, -1 ); - SwNode* pNd(0); - while( aTmp.GetIndex() ) - { - pNd = &aTmp.GetNode(); - SwModify *pMod = 0; - if ( pNd->IsCntntNode() ) - pMod = (SwCntntNode*)pNd; - else if ( pNd->IsTableNode() ) - pMod = ((SwTableNode*)pNd)->GetTable().GetFrmFmt(); - else if( pNd->IsStartNode() && !pNd->IsSectionNode() ) - { - pNd = 0; - break; - } - if ( pMod && pMod->GetDepends() ) - { - SwClientIter aIter( *pMod ); - if( aIter.First( TYPE(SwFrm) ) ) - break; - } - aTmp--; - } - - if( !aTmp.GetIndex() ) - pNd = 0; - else if( pNd ) - (*pIdx) = aTmp; - return pNd; -} - - - /************************************************************************* |* |* sal_Bool SwNodes::CheckNodesRange() @@ -2407,7 +2334,7 @@ SwNode* SwNodes::FindPrvNxtFrmNode( SwNodeIndex& rFrmIdx, SwNode* pFrmNd = 0; // habe wir gar kein Layout, vergiss es - if( GetDoc()->GetRootFrm() ) + if( GetDoc()->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { SwNode* pSttNd = &rFrmIdx.GetNode(); diff --git a/sw/source/core/docnode/section.cxx b/sw/source/core/docnode/section.cxx index 54143770bb7c..69160d5603eb 100644 --- a/sw/source/core/docnode/section.cxx +++ b/sw/source/core/docnode/section.cxx @@ -29,7 +29,10 @@ #include "precompiled_sw.hxx" #include <stdlib.h> +<<<<<<< local +======= +>>>>>>> other #include <hintids.hxx> #include <svl/intitem.hxx> #include <svl/stritem.hxx> @@ -38,7 +41,6 @@ #include <editeng/protitem.hxx> #include <sfx2/linkmgr.hxx> #include <tools/urlobj.hxx> - #include <sfx2/sfxsids.hrc> #include <sfx2/fcontnr.hxx> #include <docary.hxx> @@ -65,11 +67,11 @@ #include <fmtftntx.hxx> #include <ftnidx.hxx> #include <doctxm.hxx> -// --> FME 2004-06-22 #114856# edit in readonly sections #include <fmteiro.hxx> -// <-- #include <swerror.h> #include <unosection.hxx> +#include <switerator.hxx> +#include <svl/smplhint.hxx> using namespace ::com::sun::star; @@ -251,7 +253,7 @@ SwSection::~SwSection() // dann melden wir noch schnell unser Format um ans dflt FrameFmt, // damit es keine Abhaengigkeiten gibt if( pFmt->DerivedFrom() != pDoc->GetDfltFrmFmt() ) - pDoc->GetDfltFrmFmt()->Add( pFmt ); + pFmt->RegisterToFormat( *pDoc->GetDfltFrmFmt() ); } else { @@ -270,7 +272,7 @@ SwSection::~SwSection() // ist die Section der letzte Client im Format, kann dieses // geloescht werden SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, pFmt ); - pFmt->Modify( &aMsgHint, &aMsgHint ); + pFmt->ModifyNotification( &aMsgHint, &aMsgHint ); if( !pFmt->GetDepends() ) { // Bug: 28191 - nicht ins Undo aufnehmen, sollte schon vorher @@ -335,7 +337,7 @@ void SwSection::ImplSetHiddenFlag(bool const bTmpHidden, bool const bCondition) // erstmal allen Childs sagen, das sie versteckt sind SwMsgPoolItem aMsgItem( RES_SECTION_HIDDEN ); - pFmt->Modify( &aMsgItem, &aMsgItem ); + pFmt->ModifyNotification( &aMsgItem, &aMsgItem ); // alle Frames loeschen pFmt->DelFrms(); @@ -352,7 +354,7 @@ void SwSection::ImplSetHiddenFlag(bool const bTmpHidden, bool const bCondition) // erstmal allen Childs sagen, das der Parent nicht mehr // versteckt ist SwMsgPoolItem aMsgItem( RES_SECTION_NOT_HIDDEN ); - pFmt->Modify( &aMsgItem, &aMsgItem ); + pFmt->ModifyNotification( &aMsgItem, &aMsgItem ); pFmt->MakeFrms(); } @@ -437,7 +439,7 @@ void SwSection::SetEditInReadonly(bool const bFlag) } // <-- -void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwSection::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { bool bRemake = false; bool bUpdateFtn = false; @@ -486,7 +488,7 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( pNew ) { bool bNewFlag = - static_cast<SvxProtectItem*>(pNew)->IsCntntProtected(); + static_cast<const SvxProtectItem*>(pNew)->IsCntntProtected(); if( !bNewFlag ) { // Abschalten: teste ob nicht vielleich ueber die Parents @@ -510,7 +512,7 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( pNew ) { const bool bNewFlag = - static_cast<SwFmtEditInReadonly*>(pNew)->GetValue(); + static_cast<const SwFmtEditInReadonly*>(pNew)->GetValue(); m_Data.SetEditInReadonlyFlag( bNewFlag ); } return; @@ -542,6 +544,10 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) bUpdateFtn = true; } break; + + default: + CheckRegistration( pOld, pNew ); + break; } if( bRemake ) @@ -556,7 +562,6 @@ void SwSection::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( pSectNd ) pSectNd->GetDoc()->GetFtnIdxs().UpdateFtn(SwNodeIndex( *pSectNd )); } - SwClient::Modify( pOld, pNew ); } void SwSection::SetRefObject( SwServerObject* pObj ) @@ -699,6 +704,12 @@ SwSectionFmt::~SwSectionFmt() rSect.SetHidden(false); } } +<<<<<<< local + + // mba: test iteration; objects are removed while iterating + CallSwClientNotify( SfxSimpleHint(SFX_HINT_DYING) ); + +======= SwClientIter aIter( *this ); SwClient *pLast = aIter.GoStart(); while ( pLast ) @@ -712,6 +723,7 @@ SwSectionFmt::~SwSectionFmt() else pLast = aIter++; } +>>>>>>> other // hebe die Section doch mal auf SwNodeRange aRg( *pSectNd, 0, *pSectNd->EndOfSectionNode() ); GetDoc()->GetNodes().SectionUp( &aRg ); @@ -725,6 +737,9 @@ SwSectionFmt::~SwSectionFmt() SwSection * SwSectionFmt::GetSection() const { +<<<<<<< local + return SwIterator<SwSection,SwSectionFmt>::FirstElement( *this ); +======= if( GetDepends() ) { SwClientIter aIter( *(SwSectionFmt*)this ); @@ -733,6 +748,7 @@ SwSection * SwSectionFmt::GetSection() const ASSERT( sal_False, "keine Section als Client." ) return 0; +>>>>>>> other } extern void lcl_DeleteFtn( SwSectionNode *pNd, sal_uLong nStt, sal_uLong nEnd ); @@ -745,12 +761,19 @@ void SwSectionFmt::DelFrms() if( pIdx && &GetDoc()->GetNodes() == &pIdx->GetNodes() && 0 != (pSectNd = pIdx->GetNode().GetSectionNode() )) { - SwClientIter aIter( *this ); - SwClient *pLast = aIter.GoStart(); - // --> OD 2007-08-14 #147431# - // First delete the <SwSectionFrm> of the <SwSectionFmt> instance + // #147431# : First delete the <SwSectionFrm> of the <SwSectionFmt> instance + // mba: test iteration as objects are removed in iteration + CallSwClientNotify( SfxSimpleHint(SFX_HINT_DYING) ); + + // Then delete frames of the nested <SwSectionFmt> instances + SwIterator<SwSectionFmt,SwSectionFmt> aIter( *this ); + SwSectionFmt *pLast = aIter.First(); while ( pLast ) { +<<<<<<< local + pLast->DelFrms(); + pLast = aIter.Next(); +======= if ( pLast->IsA( TYPE(SwFrm) ) ) { SwSectionFrm *pFrm = (SwSectionFrm*)pLast; @@ -761,7 +784,13 @@ void SwSectionFmt::DelFrms() { pLast = aIter++; } +>>>>>>> other } +<<<<<<< local + + ULONG nEnde = pSectNd->EndOfSectionIndex(); + ULONG nStart = pSectNd->GetIndex()+1; +======= // Then delete frames of the nested <SwSectionFmt> instances pLast = aIter.GoStart(); while ( pLast ) @@ -775,6 +804,7 @@ void SwSectionFmt::DelFrms() // <-- sal_uLong nEnde = pSectNd->EndOfSectionIndex(); sal_uLong nStart = pSectNd->GetIndex()+1; +>>>>>>> other lcl_DeleteFtn( pSectNd, nStart, nEnde ); } if( pIdx ) @@ -789,7 +819,7 @@ void SwSectionFmt::DelFrms() if( pCNd ) { const SfxPoolItem& rItem = pCNd->GetSwAttrSet().Get( RES_PAGEDESC ); - pCNd->Modify( (SfxPoolItem*)&rItem, (SfxPoolItem*)&rItem ); + pCNd->ModifyNotification( (SfxPoolItem*)&rItem, (SfxPoolItem*)&rItem ); } } } @@ -809,18 +839,7 @@ void SwSectionFmt::MakeFrms() } } -void lcl_ClientIter( SwSectionFmt* pFmt, const SfxPoolItem* pOld, - const SfxPoolItem* pNew ) -{ - SwClientIter aIter( *pFmt ); - SwClient * pLast = aIter.GoStart(); - if( pLast ) - do { - pLast->Modify( (SfxPoolItem*)pOld, (SfxPoolItem*)pNew ); - } while( 0 != ( pLast = aIter++ )); -} - -void SwSectionFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwSectionFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { sal_Bool bClients = sal_False; sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; @@ -835,7 +854,7 @@ void SwSectionFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( SFX_ITEM_SET == pNewSet->GetItemState( RES_PROTECT, sal_False, &pItem )) { - lcl_ClientIter( this, pItem, pItem ); + ModifyBroadcast( (SfxPoolItem*)pItem, (SfxPoolItem*)pItem ); pNewSet->ClearItem( RES_PROTECT ); pOldSet->ClearItem( RES_PROTECT ); } @@ -844,7 +863,7 @@ void SwSectionFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( SFX_ITEM_SET == pNewSet->GetItemState( RES_EDIT_IN_READONLY, sal_False, &pItem ) ) { - lcl_ClientIter( this, pItem, pItem ); + ModifyBroadcast( (SfxPoolItem*)pItem, (SfxPoolItem*)pItem ); pNewSet->ClearItem( RES_EDIT_IN_READONLY ); pOldSet->ClearItem( RES_EDIT_IN_READONLY ); } @@ -853,16 +872,14 @@ void SwSectionFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( SFX_ITEM_SET == pNewSet->GetItemState( RES_FTN_AT_TXTEND, sal_False, &pItem )) { - lcl_ClientIter( this, &pOldSet->Get( RES_FTN_AT_TXTEND ), - pItem ); + ModifyBroadcast( (SfxPoolItem*)&pOldSet->Get( RES_FTN_AT_TXTEND ), (SfxPoolItem*)pItem ); pNewSet->ClearItem( RES_FTN_AT_TXTEND ); pOldSet->ClearItem( RES_FTN_AT_TXTEND ); } if( SFX_ITEM_SET == pNewSet->GetItemState( RES_END_AT_TXTEND, sal_False, &pItem )) { - lcl_ClientIter( this, &pOldSet->Get( RES_END_AT_TXTEND ), - pItem ); + ModifyBroadcast( (SfxPoolItem*)&pOldSet->Get( RES_END_AT_TXTEND ), (SfxPoolItem*)pItem ); pNewSet->ClearItem( RES_END_AT_TXTEND ); pOldSet->ClearItem( RES_END_AT_TXTEND ); } @@ -882,12 +899,7 @@ void SwSectionFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( pSect && ( bClients || ( RES_SECTION_HIDDEN == nWhich ? !pSect->IsHiddenFlag() : pSect->IsHiddenFlag() ) ) ) { - // selbst ueber die Clients iterieren, sollte schneller sein! - SwClientIter aIter( *this ); - SwClient * pLast = aIter.GoStart(); - do { - pLast->Modify( pOld, pNew ); - } while( 0 != ( pLast = aIter++ )); + ModifyBroadcast( pOld, pNew ); } } return ; @@ -900,12 +912,7 @@ void SwSectionFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) // diese Messages bis zum Ende des Baums durchreichen ! if( GetDepends() ) { - SwClientIter aIter( *this ); - SwClient * pLast = aIter.GoStart(); - if( pLast ) // konnte zum Anfang gesprungen werden ?? - do { - pLast->Modify( pOld, pNew ); - } while( 0 != ( pLast = aIter++ )); + ModifyBroadcast( pOld, pNew ); } return; // das wars @@ -957,17 +964,16 @@ sal_Bool SwSectionFmt::GetInfo( SfxPoolItem& rInfo ) const case RES_CONTENT_VISIBLE: { - SwFrm* pFrm = (SwFrm*)SwClientIter( *(SwSectionFmt*)this ).First( TYPE(SwFrm) ); + SwFrm* pFrm = SwIterator<SwFrm,SwFmt>::FirstElement(*this); // if the current section has no own frame search for the children if(!pFrm) { - SwClientIter aFormatIter( *(SwSectionFmt*)this ); - SwSectionFmt* pChild = (SwSectionFmt*)aFormatIter. - First( TYPE(SwSectionFmt) ); + SwIterator<SwSectionFmt,SwSectionFmt> aFormatIter(*this); + SwSectionFmt* pChild = aFormatIter.First(); while(pChild && !pFrm) { - pFrm = (SwFrm*)SwClientIter( *pChild ).First( TYPE(SwFrm) ); - pChild = (SwSectionFmt*)aFormatIter.Next(); + pFrm = SwIterator<SwFrm,SwFmt>::FirstElement(*pChild); + pChild = aFormatIter.Next(); } } ((SwPtrMsgPoolItem&)rInfo).pObject = pFrm; @@ -1026,15 +1032,18 @@ sal_uInt16 SwSectionFmt::GetChildSections( SwSections& rArr, if( GetDepends() ) { - SwClientIter aIter( *this ); - SwClient * pLast; + SwIterator<SwSectionFmt,SwSectionFmt> aIter(*this); const SwNodeIndex* pIdx; - for( pLast = aIter.First(TYPE(SwSectionFmt)); pLast; pLast = aIter.Next() ) + for( SwSectionFmt* pLast = aIter.First(); pLast; pLast = aIter.Next() ) if( bAllSections || +<<<<<<< local + ( 0 != ( pIdx = pLast->GetCntnt(FALSE). +======= ( 0 != ( pIdx = ((SwSectionFmt*)pLast)->GetCntnt(sal_False). +>>>>>>> other GetCntntIdx()) && &pIdx->GetNodes() == &GetDoc()->GetNodes() )) { - const SwSection* Dummy=((SwSectionFmt*)pLast)->GetSection(); + const SwSection* Dummy = pLast->GetSection(); rArr.C40_INSERT( SwSection, Dummy, rArr.Count() ); @@ -1084,8 +1093,8 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert // <-- bool bIsHidden = false; - SwClientIter aIter( *this ); - SwClient * pLast = aIter.GoStart(); + SwClientIter aIter( *this ); // TODO + ::SwClient * pLast = aIter.GoStart(); if( pLast ) // konnte zum Anfang gesprungen werden ?? do { if( pLast->IsA( TYPE(SwSectionFmt) ) ) @@ -1114,7 +1123,7 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert if (!pProtect->IsCntntProtected() != !pSection->IsProtectFlag()) { - pLast->Modify( (SfxPoolItem*)pProtect, + pLast->ModifyNotification( (SfxPoolItem*)pProtect, (SfxPoolItem*)pProtect ); } @@ -1122,7 +1131,7 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert if (!pEditInReadonly->GetValue() != !pSection->IsEditInReadonlyFlag()) { - pLast->Modify( (SfxPoolItem*)pEditInReadonly, + pLast->ModifyNotification( (SfxPoolItem*)pEditInReadonly, (SfxPoolItem*)pEditInReadonly ); } // <-- @@ -1132,7 +1141,7 @@ void SwSectionFmt::UpdateParent() // Parent wurde veraendert SwMsgPoolItem aMsgItem( static_cast<sal_uInt16>(bIsHidden ? RES_SECTION_HIDDEN : RES_SECTION_NOT_HIDDEN ) ); - pLast->Modify( &aMsgItem, &aMsgItem ); + pLast->ModifyNotification( &aMsgItem, &aMsgItem ); } } else if( !pSection && diff --git a/sw/source/core/docnode/swbaslnk.cxx b/sw/source/core/docnode/swbaslnk.cxx index 4451b32c736e..5ca378199a64 100644 --- a/sw/source/core/docnode/swbaslnk.cxx +++ b/sw/source/core/docnode/swbaslnk.cxx @@ -80,7 +80,7 @@ void lcl_CallModify( SwGrfNode& rGrfNd, SfxPoolItem& rItem ) // them havent't a loaded Graphic. - #86501# rGrfNd.LockModify(); - SwClientIter aIter( rGrfNd ); + SwClientIter aIter( rGrfNd ); // TODO for( int n = 0; n < 2; ++n ) { SwClient * pLast = aIter.GoStart(); @@ -88,7 +88,7 @@ void lcl_CallModify( SwGrfNode& rGrfNd, SfxPoolItem& rItem ) { do { if( (0 == n) ^ ( 0 != pLast->ISA( SwCntntFrm )) ) - pLast->Modify( &rItem, &rItem ); + pLast->ModifyNotification( &rItem, &rItem ); } while( 0 != ( pLast = aIter++ )); } } @@ -218,8 +218,13 @@ void SwBaseLink::DataChanged( const String& rMimeType, if ( (!pSh || !pSh->ActionPend()) && (!pESh || !pESh->ActionPend()) ) { SwMsgPoolItem aMsgHint( RES_GRAPHIC_PIECE_ARRIVED ); +<<<<<<< local + pCntntNode->ModifyNotification( &aMsgHint, &aMsgHint ); + bUpdate = FALSE; +======= pCntntNode->Modify( &aMsgHint, &aMsgHint ); bUpdate = sal_False; +>>>>>>> other } } @@ -283,7 +288,7 @@ void SwBaseLink::DataChanged( const String& rMimeType, } else { - pCntntNode->Modify( &aMsgHint, &aMsgHint ); + pCntntNode->ModifyNotification( &aMsgHint, &aMsgHint ); } @@ -409,30 +414,9 @@ sal_Bool SwBaseLink::SwapIn( sal_Bool bWaitForData, sal_Bool bNativFormat ) } #endif - // --> OD 2005-04-11 #i46300# - deactivate fix for issues i9861 and i33293 -// TestBalloonInputStream* pTBIS = 0; -// if(!m_xInputStreamToLoadFrom.is()) { -// if ( !pCntntNode->IsGrfNode() || -// static_cast<SwGrfNode*>(pCntntNode)->GetGrfObj().GetType() -// != GRAPHIC_DEFAULT ) -// { -// pTBIS = new TestBalloonInputStream(); -// m_xInputStreamToLoadFrom = pTBIS; -// } -// } - // <-- - if( GetObj() ) { - // --> OD 2005-04-11 #i46300# - deactivate fix for issues i9861 and i33293 -// GetObj()->setStreamToLoadFrom(m_xInputStreamToLoadFrom,m_bIsReadOnly); - // <-- String aMimeType( SotExchange::GetFormatMimeType( GetContentType() )); - -//!! ??? what have we here to do ???? -//!! if( bNativFormat ) -//!! aData.SetAspect( aData.GetAspect() | ASPECT_ICON ); - uno::Any aValue; GetObj()->GetData( aValue, aMimeType, !IsSynchron() && bWaitForData ); @@ -459,6 +443,9 @@ sal_Bool SwBaseLink::SwapIn( sal_Bool bWaitForData, sal_Bool bNativFormat ) else bRes = Update(); +<<<<<<< local + bSwapIn = FALSE; +======= bSwapIn = sal_False; // --> OD 2005-04-11 #i46300# - deactivate fix for issues i9861 and i33293 @@ -472,6 +459,7 @@ sal_Bool SwBaseLink::SwapIn( sal_Bool bWaitForData, sal_Bool bNativFormat ) // // <-- // } // <-- +>>>>>>> other return bRes; } diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index c510705c533c..588deed2e69a 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -33,6 +33,7 @@ #include <editeng/ulspitem.hxx> #include <editeng/lrspitem.hxx> #include <svx/svdpage.hxx> +#include <svx/svditer.hxx> #include <svx/fmglob.hxx> #include <svx/svdogrp.hxx> #include <svx/svdotext.hxx> @@ -71,7 +72,7 @@ #include <drawinglayer/primitive2d/transformprimitive2d.hxx> #include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx> #include <com/sun/star/text/WritingMode2.hpp> - +#include <switerator.hxx> #include <algorithm> using namespace ::com::sun::star; @@ -309,13 +310,13 @@ void SwContact::_MoveObjToLayer( const bool _bToVisible, return; } - if ( !pRegisteredIn ) + if ( !GetRegisteredIn() ) { ASSERT( false, "SwDrawContact::_MoveObjToLayer(..) - no drawing frame format!" ); return; } - const IDocumentDrawModelAccess* pIDDMA = static_cast<SwFrmFmt*>(pRegisteredIn)->getIDocumentDrawModelAccess(); + const IDocumentDrawModelAccess* pIDDMA = static_cast<SwFrmFmt*>(GetRegisteredInNonConst())->getIDocumentDrawModelAccess(); if ( !pIDDMA ) { ASSERT( false, "SwDrawContact::_MoveObjToLayer(..) - no writer document!" ); @@ -408,7 +409,7 @@ sal_uInt32 SwContact::GetMinOrdNum() const { sal_uInt32 nMinOrdNum( SAL_MAX_UINT32 ); - std::vector< SwAnchoredObject* > aObjs; + std::list< SwAnchoredObject* > aObjs; GetAnchoredObjs( aObjs ); while ( !aObjs.empty() ) @@ -438,7 +439,7 @@ sal_uInt32 SwContact::GetMaxOrdNum() const { sal_uInt32 nMaxOrdNum( 0L ); - std::vector< SwAnchoredObject* > aObjs; + std::list< SwAnchoredObject* > aObjs; GetAnchoredObjs( aObjs ); while ( !aObjs.empty() ) @@ -545,6 +546,8 @@ void SwFlyDrawContact::SetMaster( SdrObject* _pNewMaster ) /************************************************************************* |* +<<<<<<< local +======= |* SwFlyDrawContact::CreateNewRef() |* |* Ersterstellung MA 14. Dec. 94 @@ -627,6 +630,7 @@ sal_uInt32 SwFlyDrawContact::_GetOrdNumForNewRef( const SwFlyFrm* _pFlyFrm ) /************************************************************************* |* +>>>>>>> other |* SwFlyDrawContact::Modify() |* |* Ersterstellung OK 08.11.94 10:21 @@ -634,7 +638,7 @@ sal_uInt32 SwFlyDrawContact::_GetOrdNumForNewRef( const SwFlyFrm* _pFlyFrm ) |* |*************************************************************************/ -void SwFlyDrawContact::Modify( SfxPoolItem *, SfxPoolItem * ) +void SwFlyDrawContact::Modify( const SfxPoolItem*, const SfxPoolItem * ) { } @@ -716,17 +720,10 @@ void SwFlyDrawContact::MoveObjToInvisibleLayer( SdrObject* _pDrawObj ) @author */ -void SwFlyDrawContact::GetAnchoredObjs( std::vector<SwAnchoredObject*>& _roAnchoredObjs ) const +void SwFlyDrawContact::GetAnchoredObjs( std::list<SwAnchoredObject*>& _roAnchoredObjs ) const { const SwFrmFmt* pFmt = GetFmt(); - - SwClientIter aIter( *(const_cast<SwFrmFmt*>(pFmt)) ); - for( SwFlyFrm* pFlyFrm = (SwFlyFrm*)aIter.First( TYPE(SwFlyFrm) ); - pFlyFrm; - pFlyFrm = (SwFlyFrm*)aIter.Next() ) - { - _roAnchoredObjs.push_back( pFlyFrm ); - } + SwFlyFrm::GetAnchoredObjects( _roAnchoredObjs, *pFmt ); } /************************************************************************* @@ -769,7 +766,7 @@ SwDrawContact::SwDrawContact( SwFrmFmt* pToRegisterIn, SdrObject* pObj ) : meEventTypeOfCurrentUserCall( SDRUSERCALL_MOVEONLY ) // <-- { - // clear vector containing 'virtual' drawing objects. + // clear list containing 'virtual' drawing objects. maDrawVirtObjs.clear(); // --> OD 2004-09-22 #i33909# - assure, that drawing object is inserted @@ -818,6 +815,45 @@ SwDrawContact::~SwDrawContact() } } +void SwDrawContact::GetTextObjectsFromFmt( std::list<SdrTextObj*>& rTextObjects, SwDoc* pDoc ) +{ + for( sal_Int32 n=0; n<pDoc->GetSpzFrmFmts()->Count(); n++ ) + { + SwFrmFmt* pFly = (*pDoc->GetSpzFrmFmts())[n]; + if( pFly->IsA( TYPE(SwDrawFrmFmt) ) ) + { + std::list<SdrTextObj*> aTextObjs; + SwDrawContact* pContact = SwIterator<SwDrawContact,SwFrmFmt>::FirstElement(*pFly); + if( pContact ) + { + SdrObject* pSdrO = pContact->GetMaster(); + if ( pSdrO ) + { + if ( pSdrO->IsA( TYPE(SdrObjGroup) ) ) + { + SdrObjListIter aListIter( *pSdrO, IM_DEEPNOGROUPS ); + //iterate inside of a grouped object + while( aListIter.IsMore() ) + { + SdrObject* pSdrOElement = aListIter.Next(); + if( pSdrOElement && pSdrOElement->IsA( TYPE(SdrTextObj) ) && + static_cast<SdrTextObj*>( pSdrOElement)->HasText() ) + { + rTextObjects.push_back((SdrTextObj*) pSdrOElement); + } + } + } + else if( pSdrO->IsA( TYPE(SdrTextObj) ) && + static_cast<SdrTextObj*>( pSdrO )->HasText() ) + { + rTextObjects.push_back((SdrTextObj*) pSdrO); + } + } + } + } + } +} + // OD 2004-03-29 #i26791# const SwAnchoredObject* SwDrawContact::GetAnchoredObj( const SdrObject* _pSdrObj ) const { @@ -1207,9 +1243,8 @@ void SwDrawContact::Changed( const SdrObject& rObj, // OD 2004-06-01 #i26791# - no event handling, if existing <ViewShell> // is in contruction SwDoc* pDoc = GetFmt()->GetDoc(); - if ( pDoc->GetRootFrm() && - pDoc->GetRootFrm()->GetCurrShell() && - pDoc->GetRootFrm()->GetCurrShell()->IsInConstructor() ) + if ( pDoc->GetCurrentViewShell() && + pDoc->GetCurrentViewShell()->IsInConstructor() ) { return; } @@ -1225,7 +1260,8 @@ void SwDrawContact::Changed( const SdrObject& rObj, //Action aufsetzen, aber nicht wenn gerade irgendwo eine Action laeuft. ViewShell *pSh = 0, *pOrg; - if ( pDoc->GetRootFrm() && pDoc->GetRootFrm()->IsCallbackActionEnabled() ) + SwRootFrm *pTmpRoot = pDoc->GetCurrentLayout();//swmod 080317 + if ( pTmpRoot && pTmpRoot->IsCallbackActionEnabled() ) { pDoc->GetEditShell( &pOrg ); pSh = pOrg; @@ -1239,13 +1275,13 @@ void SwDrawContact::Changed( const SdrObject& rObj, } while ( pSh && pSh != pOrg ); if ( pSh ) - pDoc->GetRootFrm()->StartAllAction(); + pTmpRoot->StartAllAction(); } SdrObjUserCall::Changed( rObj, eType, rOldBoundRect ); _Changed( rObj, eType, &rOldBoundRect ); //Achtung, ggf. Suizid! if ( pSh ) - pDoc->GetRootFrm()->EndAllAction(); + pTmpRoot->EndAllAction(); } // --> OD 2006-01-18 #129959# @@ -1405,7 +1441,7 @@ void SwDrawContact::_Changed( const SdrObject& rObj, { if(::CheckControlLayer(maAnchoredDrawObj.DrawObj())) { - const IDocumentDrawModelAccess* pIDDMA = static_cast<SwFrmFmt*>(pRegisteredIn)->getIDocumentDrawModelAccess(); + const IDocumentDrawModelAccess* pIDDMA = static_cast<SwFrmFmt*>(GetRegisteredInNonConst())->getIDocumentDrawModelAccess(); const SdrLayerID aCurrentLayer(maAnchoredDrawObj.DrawObj()->GetLayer()); const SdrLayerID aControlLayerID(pIDDMA->GetControlsId()); const SdrLayerID aInvisibleControlLayerID(pIDDMA->GetInvisibleControlsId()); @@ -1621,7 +1657,7 @@ namespace |* |*************************************************************************/ -void SwDrawContact::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwDrawContact::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { // OD 10.10.2003 #112299# ASSERT( !mbDisconnectInProgress, @@ -1834,7 +1870,7 @@ void SwDrawContact::DisconnectFromLayout( bool _bMoveMasterToInvisibleLayer ) // drawing page, move the 'master' drawing object into the corresponding // invisible layer. { - //((SwFrmFmt*)pRegisteredIn)->getIDocumentDrawModelAccess()->GetDrawModel()->GetPage(0)-> + //((SwFrmFmt*)GetRegisteredIn())->getIDocumentDrawModelAccess()->GetDrawModel()->GetPage(0)-> // RemoveObject( GetMaster()->GetOrdNum() ); // OD 21.08.2003 #i18447# - in order to consider group object correct // use new method <SwDrawContact::MoveObjToInvisibleLayer(..)> @@ -1855,7 +1891,7 @@ void SwDrawContact::RemoveMasterFromDrawPage() GetMaster()->SetUserCall( 0 ); if ( GetMaster()->IsInserted() ) { - ((SwFrmFmt*)pRegisteredIn)->getIDocumentDrawModelAccess()->GetDrawModel()->GetPage(0)-> + ((SwFrmFmt*)GetRegisteredIn())->getIDocumentDrawModelAccess()->GetDrawModel()->GetPage(0)-> RemoveObject( GetMaster()->GetOrdNum() ); } } @@ -1947,13 +1983,10 @@ void SwDrawContact::ConnectToLayout( const SwFmtAnchor* pAnch ) } // <-- - SwFrmFmt* pDrawFrmFmt = (SwFrmFmt*)pRegisteredIn; + SwFrmFmt* pDrawFrmFmt = (SwFrmFmt*)GetRegisteredIn(); - SwRootFrm* pRoot = pDrawFrmFmt->getIDocumentLayoutAccess()->GetRootFrm(); - if ( !pRoot ) - { + if( !pDrawFrmFmt->getIDocumentLayoutAccess()->GetCurrentViewShell() ) return; - } // OD 16.05.2003 #108784# - remove 'virtual' drawing objects from writer // layout and from drawing page, and remove 'master' drawing object from @@ -1969,7 +2002,15 @@ void SwDrawContact::ConnectToLayout( const SwFmtAnchor* pAnch ) { case FLY_AT_PAGE: { +<<<<<<< local + USHORT nPgNum = pAnch->GetPageNum(); + ViewShell *pShell = pDrawFrmFmt->getIDocumentLayoutAccess()->GetCurrentViewShell(); + if( !pShell ) + break; + SwRootFrm* pRoot = pShell->GetLayout(); +======= sal_uInt16 nPgNum = pAnch->GetPageNum(); +>>>>>>> other SwPageFrm *pPage = static_cast<SwPageFrm*>(pRoot->Lower()); for ( sal_uInt16 i = 1; i < nPgNum && pPage; ++i ) @@ -2008,8 +2049,7 @@ void SwDrawContact::ConnectToLayout( const SwFmtAnchor* pAnch ) { SwNodeIndex aIdx( pAnch->GetCntntAnchor()->nNode ); SwCntntNode* pCNd = pDrawFrmFmt->GetDoc()->GetNodes().GoNext( &aIdx ); - SwClientIter aIter( *pCNd ); - if ( aIter.First( TYPE(SwFrm) ) ) + if ( SwIterator<SwFrm,SwCntntNode>::FirstElement( *pCNd ) ) pModify = pCNd; else { @@ -2041,11 +2081,9 @@ void SwDrawContact::ConnectToLayout( const SwFmtAnchor* pAnch ) pModify = pAnch->GetCntntAnchor()->nNode.GetNode().GetCntntNode(); } } - SwClientIter aIter( *pModify ); + SwIterator<SwFrm,SwModify> aIter( *pModify ); SwFrm* pAnchorFrmOfMaster = 0; - for( SwFrm *pFrm = (SwFrm*)aIter.First( TYPE(SwFrm) ); - pFrm; - pFrm = (SwFrm*)aIter.Next() ) + for( SwFrm *pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { // append drawing object, if // (1) proposed anchor frame isn't a follow and @@ -2215,7 +2253,7 @@ void SwDrawContact::ChangeMasterObject( SdrObject *pNewMaster ) @author */ -void SwDrawContact::GetAnchoredObjs( std::vector<SwAnchoredObject*>& _roAnchoredObjs ) const +void SwDrawContact::GetAnchoredObjs( std::list<SwAnchoredObject*>& _roAnchoredObjs ) const { _roAnchoredObjs.push_back( const_cast<SwAnchoredDrawObject*>(&maAnchoredDrawObj) ); diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx index e8b5c378a2ec..6f3301eedfb2 100644 --- a/sw/source/core/draw/dflyobj.cxx +++ b/sw/source/core/draw/dflyobj.cxx @@ -54,6 +54,7 @@ #include "ndnotxt.hxx" #include "grfatr.hxx" #include "pagefrm.hxx" +#include "rootfrm.hxx" using namespace ::com::sun::star; @@ -474,7 +475,7 @@ SwFrmFmt *SwVirtFlyDrawObj::GetFmt() void SwVirtFlyDrawObj::wrap_DoPaintObject() const { - ViewShell* pShell = pFlyFrm->GetShell(); + ViewShell* pShell = pFlyFrm->getRootFrm()->GetCurrShell(); // Only paint when we have a current shell and a DrawingLayer paint is in progress. // This avcoids evtl. problems with renderers which do processing stuff, @@ -830,9 +831,9 @@ void __EXPORT SwVirtFlyDrawObj::NbcResize(const Point& rRef, const SwFrm *pRel = GetFlyFrm()->IsFlyLayFrm() ? GetFlyFrm()->GetAnchorFrm() : GetFlyFrm()->GetAnchorFrm()->GetUpper(); - const ViewShell *pSh = GetFlyFrm()->GetShell(); + const ViewShell *pSh = GetFlyFrm()->getRootFrm()->GetCurrShell(); if ( pSh && pRel->IsBodyFrm() && - pFmt->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + pSh->GetViewOptions()->getBrowseMode() && pSh->VisArea().HasArea() ) { nRelWidth = pSh->GetBrowseWidth(); diff --git a/sw/source/core/draw/dpage.cxx b/sw/source/core/draw/dpage.cxx index 8c774bcdeba1..bdca839d9a89 100644 --- a/sw/source/core/draw/dpage.cxx +++ b/sw/source/core/draw/dpage.cxx @@ -118,7 +118,7 @@ void InsertGridFrame( SdrPageGridFrameList *pLst, const SwFrm *pPg ) const SdrPageGridFrameList* SwDPage::GetGridFrameList( const SdrPageView* pPV, const Rectangle *pRect ) const { - ViewShell *pSh = ((SwDrawDocument*)GetModel())->GetDoc().GetRootFrm()->GetCurrShell(); + ViewShell *pSh = ((SwDrawDocument*)GetModel())->GetDoc().GetCurrentViewShell(); //swmod 071108//swmod 071225 if ( pSh ) { while ( pSh->Imp()->GetPageView() != pPV ) diff --git a/sw/source/core/draw/dview.cxx b/sw/source/core/draw/dview.cxx index e7e1ae88f266..9bcc18ee8c44 100644 --- a/sw/source/core/draw/dview.cxx +++ b/sw/source/core/draw/dview.cxx @@ -446,7 +446,7 @@ void SwDrawView::_MoveRepeatedObjs( const SwAnchoredObject& _rMovedAnchoredObj, const std::vector<SdrObject*>& _rMovedChildObjs ) const { // determine 'repeated' objects of already moved object <_rMovedAnchoredObj> - std::vector<SwAnchoredObject*> aAnchoredObjs; + std::list<SwAnchoredObject*> aAnchoredObjs; { const SwContact* pContact = ::GetUserCall( _rMovedAnchoredObj.GetDrawObj() ); ASSERT( pContact, @@ -1084,9 +1084,16 @@ void SwDrawView::ReplaceMarkedDrawVirtObjs( SdrMarkView& _rMarkView ) void SwDrawView::DeleteMarked() { SwDoc* pDoc = Imp().GetShell()->GetDoc(); +<<<<<<< local + SwRootFrm *pTmpRoot = pDoc->GetCurrentLayout();//swmod 080317 + if ( pTmpRoot ) + pTmpRoot->StartAllAction(); + pDoc->StartUndo(UNDO_EMPTY, NULL); +======= if ( pDoc->GetRootFrm() ) pDoc->GetRootFrm()->StartAllAction(); pDoc->GetIDocumentUndoRedo().StartUndo(UNDO_EMPTY, NULL); +>>>>>>> other // OD 18.06.2003 #108784# - replace marked <SwDrawVirtObj>-objects by its // reference objects. { @@ -1105,20 +1112,14 @@ void SwDrawView::DeleteMarked() FmFormView::DeleteMarked(); ::FrameNotify( Imp().GetShell(), FLY_DRAG_END ); } +<<<<<<< local + pDoc->EndUndo(UNDO_EMPTY, NULL); + if( pTmpRoot ) + pTmpRoot->EndAllAction(); //swmod 080218 +======= pDoc->GetIDocumentUndoRedo().EndUndo(UNDO_EMPTY, NULL); if( pDoc->GetRootFrm() ) pDoc->GetRootFrm()->EndAllAction(); +>>>>>>> other } -/******** -JP 02.10.98: sollte als Fix fuer 57153 gelten, hatte aber Nebenwirkungen, - wie Bug 57475 -const SdrMarkList& SwDrawView::GetMarkedObjectList() const -{ - FlushComeBackTimer(); - return FmFormView::GetMarkedObjectList(); -} -*************/ - - - diff --git a/sw/source/core/edit/autofmt.cxx b/sw/source/core/edit/autofmt.cxx index 828adb14ff10..b24a59b0b873 100644 --- a/sw/source/core/edit/autofmt.cxx +++ b/sw/source/core/edit/autofmt.cxx @@ -270,7 +270,7 @@ const sal_Unicode* StrChr( const sal_Unicode* pSrc, sal_Unicode c ) SwTxtFrm* SwAutoFormat::GetFrm( const SwTxtNode& rTxtNd ) const { // besorge mal den Frame - const SwCntntFrm *pFrm = rTxtNd.GetFrm(); + const SwCntntFrm *pFrm = rTxtNd.getLayoutFrm( pEditShell->GetLayout() ); ASSERT( pFrm, "zum Autoformat muss das Layout vorhanden sein" ); if( aFlags.bAFmtByInput && !pFrm->IsValid() ) { diff --git a/sw/source/core/edit/edattr.cxx b/sw/source/core/edit/edattr.cxx index 95b053aac213..8a5891093315 100644 --- a/sw/source/core/edit/edattr.cxx +++ b/sw/source/core/edit/edattr.cxx @@ -360,7 +360,7 @@ sal_Bool SwEditShell::IsMoveLeftMargin( sal_Bool bRight, sal_Bool bModulus ) con long nNext = rLS.GetTxtLeft() + nDefDist; if( bModulus ) nNext = ( nNext / nDefDist ) * nDefDist; - SwFrm* pFrm = pCNd->GetFrm(); + SwFrm* pFrm = pCNd->getLayoutFrm( GetLayout() ); if ( pFrm ) { const sal_uInt16 nFrmWidth = static_cast<sal_uInt16>( pFrm->IsVertical() ? diff --git a/sw/source/core/edit/eddel.cxx b/sw/source/core/edit/eddel.cxx index 9125caadf0e9..3289c07f1928 100644 --- a/sw/source/core/edit/eddel.cxx +++ b/sw/source/core/edit/eddel.cxx @@ -90,7 +90,7 @@ void SwEditShell::DeleteSel( SwPaM& rPam, sal_Bool* pUndo ) } // geschuetze Boxen ueberspringen ! if( !pNd->IsCntntNode() || - !((SwCntntNode*)pNd)->GetFrm()->IsProtected() ) + !((SwCntntNode*)pNd)->getLayoutFrm( GetLayout() )->IsProtected() ) { // alles loeschen GetDoc()->DeleteAndJoin( aDelPam ); diff --git a/sw/source/core/edit/edfld.cxx b/sw/source/core/edit/edfld.cxx index a0e99e7a57e5..29979805948a 100644 --- a/sw/source/core/edit/edfld.cxx +++ b/sw/source/core/edit/edfld.cxx @@ -45,7 +45,8 @@ #include <dbmgr.hxx> #include <swddetbl.hxx> #include <hints.hxx> - +#include <switerator.hxx> +#include <fieldhint.hxx> /*-------------------------------------------------------------------- Beschreibung: Feldtypen zu einer ResId zaehlen @@ -200,45 +201,18 @@ void SwEditShell::FieldToText( SwFieldType* pType ) Push(); SwPaM* pPaM = GetCrsr(); +<<<<<<< local + SwFieldHint aHint( pPaM ); +======= sal_Bool bDDEFld = RES_DDEFLD == pType->Which(); // Modify-Object gefunden, trage alle Felder ins Array ein +>>>>>>> other SwClientIter aIter( *pType ); - SwClient * pLast = aIter.GoStart(); - - if( pLast ) // konnte zum Anfang gesprungen werden ?? - do { - pPaM->DeleteMark(); - const SwFmtFld* pFmtFld = bDDEFld - ? PTR_CAST( SwFmtFld, pLast ) - : (SwFmtFld*)pLast; - - if( pFmtFld ) - { - if( !pFmtFld->GetTxtFld() ) - continue; - - // kann keine DDETabelle sein - const SwTxtNode& rTxtNode = pFmtFld->GetTxtFld()->GetTxtNode(); - pPaM->GetPoint()->nNode = rTxtNode; - pPaM->GetPoint()->nContent.Assign( (SwTxtNode*)&rTxtNode, - *pFmtFld->GetTxtFld()->GetStart() ); - - // Feldinhalt durch Text ersetzen - String const aEntry( pFmtFld->GetFld()->ExpandField(true) ); - pPaM->SetMark(); - pPaM->Move( fnMoveForward ); - GetDoc()->DeleteRange( *pPaM ); - GetDoc()->InsertString( *pPaM, aEntry ); - } - else if( bDDEFld ) - { - // DDETabelle - SwDepend* pDep = (SwDepend*)pLast; - SwDDETable* pDDETbl = (SwDDETable*)pDep->GetToTell(); - pDDETbl->NoDDETable(); - } - - } while( 0 != ( pLast = aIter++ )); + for ( SwClient* pClient = aIter.GoStart(); pClient; aIter++ ) + { + pPaM->DeleteMark(); + pClient->SwClientNotifyCall( *pType, aHint ); + } Pop( sal_False ); EndAllAction(); @@ -578,13 +552,18 @@ sal_Bool SwEditShell::IsAnyDatabaseFieldInDoc()const case RES_DBNUMSETFLD: case RES_DBSETNUMBERFLD: { - SwClientIter aIter( rFldType ); - SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); + SwIterator<SwFmtFld,SwFieldType> aIter( rFldType ); + SwFmtFld* pFld = aIter.First(); while(pFld) { if(pFld->IsFldInDoc()) +<<<<<<< local + return TRUE; + pFld = aIter.Next(); +======= return sal_True; pFld = (SwFmtFld*)aIter.Next(); +>>>>>>> other } } break; diff --git a/sw/source/core/edit/edfldexp.cxx b/sw/source/core/edit/edfldexp.cxx index 6359c982507e..53ae433308cc 100644 --- a/sw/source/core/edit/edfldexp.cxx +++ b/sw/source/core/edit/edfldexp.cxx @@ -29,9 +29,7 @@ #include "precompiled_sw.hxx" #include <editsh.hxx> #include <dbfld.hxx> -#ifndef _DBMGR_HXX #include <dbmgr.hxx> -#endif #include <com/sun/star/container/XNameAccess.hpp> #include <comphelper/processfactory.hxx> #include <com/sun/star/lang/XMultiServiceFactory.hpp> @@ -42,14 +40,19 @@ #include <fmtfld.hxx> #include <edimp.hxx> #include <flddat.hxx> +#include <switerator.hxx> using namespace com::sun::star; using ::rtl::OUString; +<<<<<<< local +BOOL SwEditShell::IsFieldDataSourceAvailable(String& rUsedDataSource) const +======= /* -----------------28.11.2002 17:53----------------- * * --------------------------------------------------*/ sal_Bool SwEditShell::IsFieldDataSourceAvailable(String& rUsedDataSource) const +>>>>>>> other { const SwFldTypes * pFldTypes = GetDoc()->GetFldTypes(); const sal_uInt16 nSize = pFldTypes->Count(); @@ -70,8 +73,8 @@ sal_Bool SwEditShell::IsFieldDataSourceAvailable(String& rUsedDataSource) const { case RES_DBFLD: { - SwClientIter aIter( rFldType ); - SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); + SwIterator<SwFmtFld,SwFieldType> aIter( rFldType ); + SwFmtFld* pFld = aIter.First(); while(pFld) { if(pFld->IsFldInDoc()) @@ -88,7 +91,7 @@ sal_Bool SwEditShell::IsFieldDataSourceAvailable(String& rUsedDataSource) const return sal_False; } } - pFld = (SwFmtFld*)aIter.Next(); + pFld = aIter.Next(); } } break; diff --git a/sw/source/core/edit/editsh.cxx b/sw/source/core/edit/editsh.cxx index 21d550ebd6f1..3dc20356dee7 100644 --- a/sw/source/core/edit/editsh.cxx +++ b/sw/source/core/edit/editsh.cxx @@ -68,7 +68,7 @@ #include <numrule.hxx> #include <SwNodeNum.hxx> #include <unocrsr.hxx> - +#include <switerator.hxx> using namespace com::sun::star; @@ -153,7 +153,7 @@ void SwEditShell::Insert2(const String &rStr, const bool bForceExpandHints ) // seems to be an empty paragraph. Point aPt; SwCntntFrm* pFrm = - ((SwTxtNode&)rNode).GetFrm( &aPt, pTmpCrsr->GetPoint(), + ((SwTxtNode&)rNode).getLayoutFrm( GetLayout(), &aPt, pTmpCrsr->GetPoint(), sal_False ); SwScriptInfo aScriptInfo; @@ -423,10 +423,9 @@ void SwEditShell::SetGraphicPolygon( const PolyPolygon *pPoly ) SwNoTxtNode *pNd = GetCrsr()->GetNode()->GetNoTxtNode(); StartAllAction(); pNd->SetContour( pPoly ); - SwFlyFrm *pFly = (SwFlyFrm*)pNd->GetFrm()->GetUpper(); + SwFlyFrm *pFly = (SwFlyFrm*)pNd->getLayoutFrm(GetLayout())->GetUpper(); const SwFmtSurround &rSur = pFly->GetFmt()->GetSurround(); - pFly->GetFmt()->SwModify::Modify( (SwFmtSurround*)&rSur, - (SwFmtSurround*)&rSur ); + pFly->GetFmt()->NotifyClients( (SwFmtSurround*)&rSur, (SwFmtSurround*)&rSur ); GetDoc()->SetModified(); EndAllAction(); } @@ -438,11 +437,15 @@ void SwEditShell::ClearAutomaticContour() if( pNd->HasAutomaticContour() ) { StartAllAction(); +<<<<<<< local + pNd->SetContour( NULL, FALSE ); + SwFlyFrm *pFly = (SwFlyFrm*)pNd->getLayoutFrm(GetLayout())->GetUpper(); +======= pNd->SetContour( NULL, sal_False ); SwFlyFrm *pFly = (SwFlyFrm*)pNd->GetFrm()->GetUpper(); +>>>>>>> other const SwFmtSurround &rSur = pFly->GetFmt()->GetSurround(); - pFly->GetFmt()->SwModify::Modify( (SwFmtSurround*)&rSur, - (SwFmtSurround*)&rSur ); + pFly->GetFmt()->NotifyClients( (SwFmtSurround*)&rSur, (SwFmtSurround*)&rSur ); GetDoc()->SetModified(); EndAllAction(); } @@ -481,8 +484,13 @@ sal_Bool SwEditShell::HasOLEObj( const String &rName ) const SwNode& rNd = aIdx.GetNode(); if( rNd.IsOLENode() && rName == ((SwOLENode&)rNd).GetChartTblName() && +<<<<<<< local + ((SwOLENode&)rNd).getLayoutFrm( GetLayout() ) ) + return TRUE; +======= ((SwOLENode&)rNd).GetFrm() ) return sal_True; +>>>>>>> other aIdx.Assign( *pStNd->EndOfSectionNode(), + 1 ); } @@ -739,7 +747,7 @@ Graphic SwEditShell::GetIMapGraphic() const } else { - SwFlyFrm* pFlyFrm = pNd->GetCntntNode()->GetFrm()->FindFlyFrm(); + SwFlyFrm* pFlyFrm = pNd->GetCntntNode()->getLayoutFrm( GetLayout() )->FindFlyFrm(); if(pFlyFrm) aRet = pFlyFrm->GetFmt()->MakeGraphic(); } @@ -813,14 +821,13 @@ sal_uInt16 SwEditShell::GetINetAttrs( SwGetINetAttrs& rArr ) const SwCharFmts* pFmts = GetDoc()->GetCharFmts(); for( sal_uInt16 n = pFmts->Count(); 1 < n; ) { - SwClientIter aIter( *(*pFmts)[ --n ] ); - - for( SwClient* pFnd = aIter.First(TYPE( SwTxtINetFmt )); - pFnd; pFnd = aIter.Next() ) - if( 0 != ( pTxtNd = ((SwTxtINetFmt*)pFnd)->GetpTxtNode()) && + SwIterator<SwTxtINetFmt,SwCharFmt> aIter(*(*pFmts)[--n]); + for( SwTxtINetFmt* pFnd = aIter.First(); pFnd; pFnd = aIter.Next() ) + { + if( 0 != ( pTxtNd = pFnd->GetpTxtNode()) && pTxtNd->GetNodes().IsDocNodes() ) { - SwTxtINetFmt& rAttr = *(SwTxtINetFmt*)pFnd; + SwTxtINetFmt& rAttr = *pFnd; String sTxt( pTxtNd->GetExpandTxt( *rAttr.GetStart(), *rAttr.GetEnd() - *rAttr.GetStart() ) ); @@ -834,6 +841,7 @@ sal_uInt16 SwEditShell::GetINetAttrs( SwGetINetAttrs& rArr ) } } } + } return rArr.Count(); } @@ -906,7 +914,7 @@ void SwEditShell::SetNumberingRestart() switch( pNd->GetNodeType() ) { case ND_TEXTNODE: - if( 0 != ( pCntFrm = ((SwTxtNode*)pNd)->GetFrm()) ) + if( 0 != ( pCntFrm = ((SwTxtNode*)pNd)->getLayoutFrm( GetLayout() )) ) { //jump over hidden frames - ignore protection! if( !((SwTxtFrm*)pCntFrm)->IsHiddenNow() ) @@ -974,7 +982,7 @@ sal_uInt16 SwEditShell::GetLineCount( sal_Bool bActPos ) else { if( 0 != ( pCNd = pPam->GetCntntNode() ) && - 0 != ( pCntFrm = pCNd->GetFrm() ) ) + 0 != ( pCntFrm = pCNd->getLayoutFrm( GetLayout() ) ) ) { const SwStartNode *pTmp; if( pCntFrm->IsInFly() ) // Fly @@ -1002,7 +1010,7 @@ sal_uInt16 SwEditShell::GetLineCount( sal_Bool bActPos ) while( 0 != ( pCNd = GetDoc()->GetNodes().GoNextSection( &aStart, sal_True, sal_False )) && ( !bActPos || aStart <= rPtIdx ) ) { - if( 0 != ( pCntFrm = pCNd->GetFrm() ) && pCntFrm->IsTxtFrm() ) + if( 0 != ( pCntFrm = pCNd->getLayoutFrm( GetLayout() ) ) && pCntFrm->IsTxtFrm() ) { xub_StrLen nActPos = bActPos && aStart == rPtIdx ? pPam->GetPoint()->nContent.GetIndex() : USHRT_MAX; diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx index dfe4e13a2b08..3e7e240ff9b0 100644 --- a/sw/source/core/edit/edlingu.cxx +++ b/sw/source/core/edit/edlingu.cxx @@ -64,7 +64,7 @@ #include <docary.hxx> // SwRedlineTbl #include <docsh.hxx> #include <txatbase.hxx> - +#include <txtfrm.hxx> using namespace ::svx; using namespace ::com::sun::star; @@ -74,8 +74,6 @@ using namespace ::com::sun::star::linguistic2; #define C2U(cChar) rtl::OUString::createFromAscii(cChar) -extern void repaintTextFrames( SwModify& rModify ); - /************************************************************************* * class SwLinguIter *************************************************************************/ @@ -1097,7 +1095,11 @@ uno::Reference< XSpellAlternatives > SwCrsrMoveState aState; aState.bRealWidth = sal_True; SwCntntNode* pCntntNode = pCrsr->GetCntntNode(); +<<<<<<< local + SwCntntFrm *pCntntFrame = pCntntNode->getLayoutFrm( GetLayout(), pPt, pCrsr->GetPoint(), FALSE); +======= SwCntntFrm *pCntntFrame = pCntntNode->GetFrm(pPt, pCrsr->GetPoint(), sal_False); +>>>>>>> other pCntntFrame->GetCharRect( aStartRect, *pCrsr->GetPoint(), &aState ); rContent = nWordEnd; @@ -1241,7 +1243,11 @@ bool SwEditShell::GetGrammarCorrection( SwCrsrMoveState aState; aState.bRealWidth = sal_True; SwCntntNode* pCntntNode = pCrsr->GetCntntNode(); +<<<<<<< local + SwCntntFrm *pCntntFrame = pCntntNode->getLayoutFrm( GetLayout(), pPt, pCrsr->GetPoint(), FALSE); +======= SwCntntFrm *pCntntFrame = pCntntNode->GetFrm(pPt, pCrsr->GetPoint(), sal_False); +>>>>>>> other pCntntFrame->GetCharRect( aStartRect, *pCrsr->GetPoint(), &aState ); rContent = nWordEnd; @@ -1966,7 +1972,7 @@ void SwEditShell::IgnoreGrammarErrorAt( SwPaM& rErrorPosition ) pWrong = pNode->GetWrong(); if( pWrong ) pWrong->RemoveEntry( nStart, nEnd ); - ::repaintTextFrames( *pNode ); + SwTxtFrm::repaintTextFrames( *pNode ); } ++aIdx; nStart = 0; diff --git a/sw/source/core/edit/edsect.cxx b/sw/source/core/edit/edsect.cxx index 898e80a95f56..a31122b631f4 100644 --- a/sw/source/core/edit/edsect.cxx +++ b/sw/source/core/edit/edsect.cxx @@ -103,7 +103,7 @@ const SwSection* SwEditShell::GetAnySection( sal_Bool bOutOfTab, const Point* pP Point aPt( *pPt ); GetLayout()->GetCrsrOfst( &aPos, aPt ); SwCntntNode *pNd = aPos.nNode.GetNode().GetCntntNode(); - pFrm = pNd->GetFrm( pPt ); + pFrm = pNd->getLayoutFrm( GetLayout(), pPt ); } else pFrm = GetCurrFrm( sal_False ); diff --git a/sw/source/core/edit/edtox.cxx b/sw/source/core/edit/edtox.cxx index d2403bae2625..b09b57d50b9a 100644 --- a/sw/source/core/edit/edtox.cxx +++ b/sw/source/core/edit/edtox.cxx @@ -348,13 +348,15 @@ void SwEditShell::ApplyAutoMark() { //1. const SwTOXType* pTOXType = GetTOXType(TOX_INDEX, 0); - SwClientIter aIter(*(SwTOXType*)pTOXType); - SwTOXMark* pMark = (SwTOXMark*)aIter.First(TYPE(SwTOXMark)); - while( pMark ) + + SwTOXMarks aMarks; + SwTOXMark::InsertTOXMarks( aMarks, *pTOXType ); + for( sal_uInt16 nMark=0; nMark<aMarks.Count(); nMark++ ) { + SwTOXMark* pMark = aMarks[nMark]; if(pMark->IsAutoGenerated() && pMark->GetTxtTOXMark()) + // mba: test iteration; objects are deleted in iteration DeleteTOXMark(pMark); - pMark = (SwTOXMark*)aIter.Next(); } //2. diff --git a/sw/source/core/edit/edundo.cxx b/sw/source/core/edit/edundo.cxx index 466db86bd93a..f30db42a4460 100644 --- a/sw/source/core/edit/edundo.cxx +++ b/sw/source/core/edit/edundo.cxx @@ -238,10 +238,23 @@ void lcl_SelectSdrMarkList( SwEditShell* pShell, if( pShell->ISA( SwFEShell ) ) { SwFEShell* pFEShell = static_cast<SwFEShell*>( pShell ); +<<<<<<< local + bool bFirst = true; + for( USHORT i = 0; i < pSdrMarkList->GetMarkCount(); ++i ) + { + SdrObject *pObj = pSdrMarkList->GetMark( i )->GetMarkedSdrObj(); + if( pObj ) + { + pFEShell->SelectObj( Point(), bFirst ? 0 : SW_ADD_SELECT, pObj ); + bFirst = false; + } + } +======= for( sal_uInt16 i = 0; i < pSdrMarkList->GetMarkCount(); ++i ) pFEShell->SelectObj( Point(), (i==0) ? 0 : SW_ADD_SELECT, pSdrMarkList->GetMark( i )->GetMarkedSdrObj() ); +>>>>>>> other // the old implementation would always unselect // objects, even if no new ones were selected. If this diff --git a/sw/source/core/fields/authfld.cxx b/sw/source/core/fields/authfld.cxx index 8242d2325015..d12f65a38d16 100644 --- a/sw/source/core/fields/authfld.cxx +++ b/sw/source/core/fields/authfld.cxx @@ -40,9 +40,7 @@ #include <editeng/langitem.hxx> #include <swtypes.hxx> #include <tools/resid.hxx> -#ifndef _COMCORE_HRC #include <comcore.hrc> -#endif #include <authfld.hxx> #include <expfld.hxx> #include <pam.hxx> @@ -54,11 +52,9 @@ #include <txtfld.hxx> #include <ndtxt.hxx> #include <doc.hxx> -#ifndef _UNOFLDMID_H #include <unofldmid.h> -#endif #include <unoprnms.hxx> - +#include <switerator.hxx> #include <unomid.h> using namespace ::com::sun::star::uno; @@ -77,9 +73,6 @@ SV_DECL_PTRARR_DEL( SortKeyArr, TOXSortKeyPtr, 5, 5 ) SV_IMPL_PTRARR( SortKeyArr, TOXSortKeyPtr ) -/* -----------------16.09.99 11:53------------------- - - --------------------------------------------------*/ SwAuthEntry::SwAuthEntry(const SwAuthEntry& rCopy) : nRefCount(0) { @@ -95,10 +88,6 @@ sal_Bool SwAuthEntry::operator==(const SwAuthEntry& rComp) return sal_True; } // -------------------------------------------------------- - -/* -----------------14.09.99 16:15------------------- - - --------------------------------------------------*/ SwAuthorityFieldType::SwAuthorityFieldType(SwDoc* pDoc) : SwFieldType( RES_AUTHORITY ), m_pDoc(pDoc), @@ -129,9 +118,6 @@ SwAuthorityFieldType::SwAuthorityFieldType( const SwAuthorityFieldType& rFType) m_pSortKeyArr->Insert((*rFType.m_pSortKeyArr)[i], i); } -/* -----------------17.09.99 13:52------------------- - - --------------------------------------------------*/ SwAuthorityFieldType::~SwAuthorityFieldType() { // DBG_ASSERT(!m_pDataArr->Count(), "Array is not empty"); @@ -140,16 +126,12 @@ SwAuthorityFieldType::~SwAuthorityFieldType() delete m_pSequArr; delete m_pDataArr; } -/*-- 14.09.99 16:22:09--------------------------------------------------- - -----------------------------------------------------------------------*/ SwFieldType* SwAuthorityFieldType::Copy() const { return new SwAuthorityFieldType(m_pDoc); } -/* -----------------17.09.99 13:43------------------- - --------------------------------------------------*/ void SwAuthorityFieldType::RemoveField(long nHandle) { #ifdef DBG_UTIL @@ -178,9 +160,7 @@ void SwAuthorityFieldType::RemoveField(long nHandle) DBG_ASSERT(bRemoved, "Field unknown" ); #endif } -/* -----------------17.09.99 13:43------------------- - --------------------------------------------------*/ long SwAuthorityFieldType::AddField(const String& rFieldContents) { long nRet = 0; @@ -210,10 +190,13 @@ long SwAuthorityFieldType::AddField(const String& rFieldContents) } return nRet; } -/* -----------------17.09.99 14:18------------------- +<<<<<<< local +BOOL SwAuthorityFieldType::AddField(long nHandle) +======= --------------------------------------------------*/ sal_Bool SwAuthorityFieldType::AddField(long nHandle) +>>>>>>> other { sal_Bool bRet = sal_False; for( sal_uInt16 j = 0; j < m_pDataArr->Count(); j++ ) @@ -232,9 +215,7 @@ sal_Bool SwAuthorityFieldType::AddField(long nHandle) DBG_ASSERT(bRet, "::AddField(long) failed"); return bRet; } -/* -----------------17.09.99 14:52------------------- - --------------------------------------------------*/ const SwAuthEntry* SwAuthorityFieldType::GetEntryByHandle(long nHandle) const { const SwAuthEntry* pRet = 0; @@ -251,9 +232,7 @@ const SwAuthEntry* SwAuthorityFieldType::GetEntryByHandle(long nHandle) const ASSERT( pRet, "invalid Handle" ); return pRet; } -/* -----------------21.09.99 13:34------------------- - --------------------------------------------------*/ void SwAuthorityFieldType::GetAllEntryIdentifiers( SvStringsDtor& rToFill )const { @@ -264,9 +243,7 @@ void SwAuthorityFieldType::GetAllEntryIdentifiers( AUTH_FIELD_IDENTIFIER )), rToFill.Count() ); } } -/* -----------------21.09.99 13:34------------------- - --------------------------------------------------*/ const SwAuthEntry* SwAuthorityFieldType::GetEntryByIdentifier( const String& rIdentifier)const { @@ -282,9 +259,7 @@ const SwAuthEntry* SwAuthorityFieldType::GetEntryByIdentifier( } return pRet; } -/* -----------------------------21.12.99 13:20-------------------------------- - ---------------------------------------------------------------------------*/ bool SwAuthorityFieldType::ChangeEntryContent(const SwAuthEntry* pNewEntry) { bool bChanged = false; @@ -303,9 +278,9 @@ bool SwAuthorityFieldType::ChangeEntryContent(const SwAuthEntry* pNewEntry) } return bChanged; } -/*-- 11.10.99 08:49:22--------------------------------------------------- - Description: appends a new entry (if new) and returns the array position +/*------------------------------------------------------------------------- + appends a new entry (if new) and returns the array position -----------------------------------------------------------------------*/ sal_uInt16 SwAuthorityFieldType::AppendField( const SwAuthEntry& rInsert ) { @@ -327,10 +302,14 @@ sal_uInt16 SwAuthorityFieldType::AppendField( const SwAuthEntry& rInsert ) return nRet; } +<<<<<<< local +long SwAuthorityFieldType::GetHandle(USHORT nPos) +======= /*-- 11.10.99 08:49:24--------------------------------------------------- -----------------------------------------------------------------------*/ long SwAuthorityFieldType::GetHandle(sal_uInt16 nPos) +>>>>>>> other { long nRet = 0; if( nPos < m_pDataArr->Count() ) @@ -340,10 +319,13 @@ long SwAuthorityFieldType::GetHandle(sal_uInt16 nPos) } return nRet; } -/* -----------------19.10.99 13:46------------------- +<<<<<<< local +USHORT SwAuthorityFieldType::GetSequencePos(long nHandle) +======= --------------------------------------------------*/ sal_uInt16 SwAuthorityFieldType::GetSequencePos(long nHandle) +>>>>>>> other { //find the field in a sorted array of handles, #ifdef DBG_UTIL @@ -354,12 +336,11 @@ sal_uInt16 SwAuthorityFieldType::GetSequencePos(long nHandle) if(!m_pSequArr->Count()) { SwTOXSortTabBases aSortArr; - SwClientIter aIter( *this ); + SwIterator<SwFmtFld,SwFieldType> aIter( *this ); SwTOXInternational aIntl(m_eLanguage, 0, m_sSortAlgorithm); - for( SwFmtFld* pFmtFld = (SwFmtFld*)aIter.First( TYPE(SwFmtFld) ); - pFmtFld; pFmtFld = (SwFmtFld*)aIter.Next() ) + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) { const SwTxtFld* pTxtFld = pFmtFld->GetTxtFld(); if(!pTxtFld || !pTxtFld->GetpTxtNode()) @@ -373,7 +354,7 @@ sal_uInt16 SwAuthorityFieldType::GetSequencePos(long nHandle) const SwTxtNode& rFldTxtNode = pTxtFld->GetTxtNode(); SwPosition aFldPos(rFldTxtNode); SwDoc& rDoc = *(SwDoc*)rFldTxtNode.GetDoc(); - SwCntntFrm *pFrm = rFldTxtNode.GetFrm(); + SwCntntFrm *pFrm = rFldTxtNode.getLayoutFrm( rDoc.GetCurrentLayout() ); const SwTxtNode* pTxtNode = 0; if(pFrm && !pFrm->IsInDocBody()) pTxtNode = GetBodyTxtNode( rDoc, aFldPos, *pFrm ); @@ -381,7 +362,7 @@ sal_uInt16 SwAuthorityFieldType::GetSequencePos(long nHandle) //body the directly available text node will be used if(!pTxtNode) pTxtNode = &rFldTxtNode; - if( pTxtNode->GetTxt().Len() && pTxtNode->GetFrm() && + if( pTxtNode->GetTxt().Len() && pTxtNode->getLayoutFrm( rDoc.GetCurrentLayout() ) && pTxtNode->GetNodes().IsDocNodes() ) { SwTOXAuthority* pNew = new SwTOXAuthority( *pTxtNode, @@ -439,10 +420,13 @@ sal_uInt16 SwAuthorityFieldType::GetSequencePos(long nHandle) ASSERT(bCurrentFieldWithoutTextNode || nRet, "Handle not found") return nRet; } -/* -----------------------------15.11.00 17:33-------------------------------- +<<<<<<< local +BOOL SwAuthorityFieldType::QueryValue( Any& rVal, USHORT nWhichId ) const +======= ---------------------------------------------------------------------------*/ sal_Bool SwAuthorityFieldType::QueryValue( Any& rVal, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -496,10 +480,13 @@ sal_Bool SwAuthorityFieldType::QueryValue( Any& rVal, sal_uInt16 nWhichId ) c } return sal_True; } -/* -----------------------------15.11.00 17:33-------------------------------- +<<<<<<< local +BOOL SwAuthorityFieldType::PutValue( const Any& rAny, USHORT nWhichId ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwAuthorityFieldType::PutValue( const Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Bool bRet = sal_True; String sTmp; @@ -571,26 +558,30 @@ sal_Bool SwAuthorityFieldType::PutValue( const Any& rAny, sal_uInt16 nWhichId } return bRet; } -/* -----------------19.10.99 13:25------------------- - --------------------------------------------------*/ -void SwAuthorityFieldType::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwAuthorityFieldType::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { //re-generate positions of the fields DelSequenceArray(); - SwModify::Modify( pOld, pNew ); + NotifyClients( pOld, pNew ); } -/* -----------------20.10.99 13:38------------------- +<<<<<<< local +USHORT SwAuthorityFieldType::GetSortKeyCount() const +======= --------------------------------------------------*/ sal_uInt16 SwAuthorityFieldType::GetSortKeyCount() const +>>>>>>> other { return m_pSortKeyArr->Count(); } -/* -----------------20.10.99 13:38------------------- +<<<<<<< local +const SwTOXSortKey* SwAuthorityFieldType::GetSortKey(USHORT nIdx) const +======= --------------------------------------------------*/ const SwTOXSortKey* SwAuthorityFieldType::GetSortKey(sal_uInt16 nIdx) const +>>>>>>> other { SwTOXSortKey* pRet = 0; if(m_pSortKeyArr->Count() > nIdx) @@ -598,10 +589,13 @@ const SwTOXSortKey* SwAuthorityFieldType::GetSortKey(sal_uInt16 nIdx) const DBG_ASSERT(pRet, "Sort key not found"); return pRet; } -/* -----------------20.10.99 13:38------------------- +<<<<<<< local +void SwAuthorityFieldType::SetSortKeys(USHORT nKeyCount, SwTOXSortKey aKeys[]) +======= --------------------------------------------------*/ void SwAuthorityFieldType::SetSortKeys(sal_uInt16 nKeyCount, SwTOXSortKey aKeys[]) +>>>>>>> other { m_pSortKeyArr->DeleteAndDestroy(0, m_pSortKeyArr->Count()); sal_uInt16 nArrIdx = 0; @@ -610,9 +604,6 @@ void SwAuthorityFieldType::SetSortKeys(sal_uInt16 nKeyCount, SwTOXSortKey aKeys[ m_pSortKeyArr->Insert(new SwTOXSortKey(aKeys[i]), nArrIdx++); } -/* -----------------14.09.99 16:15------------------- - - --------------------------------------------------*/ SwAuthorityField::SwAuthorityField( SwAuthorityFieldType* pInitType, const String& rFieldContents ) : SwField(pInitType), @@ -620,9 +611,7 @@ SwAuthorityField::SwAuthorityField( SwAuthorityFieldType* pInitType, { m_nHandle = pInitType->AddField( rFieldContents ); } -/* -----------------17.09.99 14:24------------------- - --------------------------------------------------*/ SwAuthorityField::SwAuthorityField( SwAuthorityFieldType* pInitType, long nSetHandle ) : SwField( pInitType ), @@ -631,16 +620,12 @@ SwAuthorityField::SwAuthorityField( SwAuthorityFieldType* pInitType, { pInitType->AddField( m_nHandle ); } -/* -----------------15.09.99 15:00------------------- - --------------------------------------------------*/ SwAuthorityField::~SwAuthorityField() { ((SwAuthorityFieldType* )GetTyp())->RemoveField(m_nHandle); } -/*-- 14.09.99 16:20:59--------------------------------------------------- - -----------------------------------------------------------------------*/ String SwAuthorityField::Expand() const { SwAuthorityFieldType* pAuthType = (SwAuthorityFieldType*)GetTyp(); @@ -666,45 +651,33 @@ String SwAuthorityField::Expand() const sRet += pAuthType->GetSuffix(); return sRet; } -/*-- 14.09.99 16:21:00--------------------------------------------------- - -----------------------------------------------------------------------*/ SwField* SwAuthorityField::Copy() const { SwAuthorityFieldType* pAuthType = (SwAuthorityFieldType*)GetTyp(); return new SwAuthorityField(pAuthType, m_nHandle); } -/* -----------------21.09.99 12:55------------------- - --------------------------------------------------*/ const String& SwAuthorityField::GetFieldText(ToxAuthorityField eField) const { SwAuthorityFieldType* pAuthType = (SwAuthorityFieldType*)GetTyp(); const SwAuthEntry* pEntry = pAuthType->GetEntryByHandle( m_nHandle ); return pEntry->GetAuthorField( eField ); } -/* -----------------21.09.99 14:57------------------- - --------------------------------------------------*/ void SwAuthorityField::SetPar1(const String& rStr) { SwAuthorityFieldType* pInitType = (SwAuthorityFieldType* )GetTyp(); pInitType->RemoveField(m_nHandle); m_nHandle = pInitType->AddField(rStr); } -/* -----------------11.10.99 09:43------------------- - --------------------------------------------------*/ String SwAuthorityField::GetDescription() const { return SW_RES(STR_AUTHORITY_ENTRY); } - -/* -----------------------------15.11.00 17:33-------------------------------- - - ---------------------------------------------------------------------------*/ const char* aFieldNames[] = { "Identifier", @@ -739,10 +712,13 @@ const char* aFieldNames[] = "Custom5", "ISBN" }; -/* -----------------------------16.11.00 12:27-------------------------------- +<<<<<<< local +BOOL SwAuthorityField::QueryValue( Any& rAny, USHORT /*nWhichId*/ ) const +======= ---------------------------------------------------------------------------*/ sal_Bool SwAuthorityField::QueryValue( Any& rAny, sal_uInt16 /*nWhichId*/ ) const +>>>>>>> other { if(!GetTyp()) return sal_False; @@ -763,9 +739,7 @@ sal_Bool SwAuthorityField::QueryValue( Any& rAny, sal_uInt16 /*nWhichId*/ ) c rAny <<= aRet; return sal_False; } -/* -----------------------------15.11.00 17:33-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int16 lcl_Find(const OUString& rFieldName) { for(sal_Int16 i = 0; i < AUTH_FIELD_END; i++) @@ -809,9 +783,7 @@ sal_Bool SwAuthorityField::PutValue( const Any& rAny, sal_uInt16 /*nWhichId*/ return sal_False; } -/* -----------------11.10.99 09:43------------------- - --------------------------------------------------*/ SwFieldType* SwAuthorityField::ChgTyp( SwFieldType* pFldTyp ) { SwAuthorityFieldType* pSrcTyp = (SwAuthorityFieldType*)GetTyp(), diff --git a/sw/source/core/fields/cellfml.cxx b/sw/source/core/fields/cellfml.cxx index 422285dee10f..efca89a4609d 100644 --- a/sw/source/core/fields/cellfml.cxx +++ b/sw/source/core/fields/cellfml.cxx @@ -724,6 +724,8 @@ const SwTable* SwTableFormula::FindTable( SwDoc& rDoc, const String& rNm ) const const SwFrm* lcl_GetBoxFrm( const SwTableBox& rBox ) { +<<<<<<< local +======= /* // oder besser ueber die Box den Frame suchen @@ -738,11 +740,16 @@ const SwFrm* lcl_GetBoxFrm( const SwTableBox& rBox ) } */ +>>>>>>> other SwNodeIndex aIdx( *rBox.GetSttNd() ); SwCntntNode* pCNd = aIdx.GetNodes().GoNext( &aIdx ); ASSERT( pCNd, "Box hat keinen TextNode" ); Point aPt; // den im Layout 1. Frame returnen - Tab.Kopfzeile !! +<<<<<<< local + return pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout(), &aPt, NULL, FALSE ); +======= return pCNd->GetFrm( &aPt, NULL, sal_False ); +>>>>>>> other } long lcl_GetLongBoxNum( String& rStr ) diff --git a/sw/source/core/fields/dbfld.cxx b/sw/source/core/fields/dbfld.cxx index a78c2a57d44a..faddd9a1b8b4 100644 --- a/sw/source/core/fields/dbfld.cxx +++ b/sw/source/core/fields/dbfld.cxx @@ -48,7 +48,7 @@ #include <expfld.hxx> #include <txtatr.hxx> #include <unofldmid.h> - +#include <switerator.hxx> using namespace ::com::sun::star::sdbc; using namespace ::com::sun::star; @@ -123,10 +123,14 @@ void SwDBFieldType::ReleaseRef() } } +<<<<<<< local +BOOL SwDBFieldType::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /* -----------------24.02.99 14:51------------------- * * --------------------------------------------------*/ sal_Bool SwDBFieldType::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -147,10 +151,15 @@ sal_Bool SwDBFieldType::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return sal_True; } +<<<<<<< local + +BOOL SwDBFieldType::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= /* -----------------24.02.99 14:51------------------- * * --------------------------------------------------*/ sal_Bool SwDBFieldType::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -167,8 +176,8 @@ sal_Bool SwDBFieldType::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) if( sTmp != sColumn ) { sColumn = sTmp; - SwClientIter aIter( *this ); - SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); + SwIterator<SwFmtFld,SwFieldType> aIter( *this ); + SwFmtFld* pFld = aIter.First(); while(pFld) { // Feld im Undo? @@ -179,7 +188,7 @@ sal_Bool SwDBFieldType::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) pDBField->ClearInitialized(); pDBField->InitContent(); } - pFld = (SwFmtFld*)aIter.Next(); + pFld = aIter.Next(); } } } @@ -411,10 +420,13 @@ void SwDBField::SetSubType(sal_uInt16 nType) nSubType = nType; } -/*-----------------06.03.98 16:15------------------- +<<<<<<< local +BOOL SwDBField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= --------------------------------------------------*/ sal_Bool SwDBField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -445,10 +457,13 @@ sal_Bool SwDBField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const return sal_True; } -/*-----------------06.03.98 16:15------------------- +<<<<<<< local +BOOL SwDBField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwDBField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -472,8 +487,8 @@ sal_Bool SwDBField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) //invalidate text node if(GetTyp()) { - SwClientIter aIter( *GetTyp() ); - SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); + SwIterator<SwFmtFld,SwFieldType> aIter( *GetTyp() ); + SwFmtFld* pFld = aIter.First(); while(pFld) { SwTxtFld *pTxtFld = pFld->GetTxtFld(); @@ -483,7 +498,7 @@ sal_Bool SwDBField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) pTxtFld->NotifyContentChange(*pFld); break; } - pFld = (SwFmtFld*)aIter.Next(); + pFld = aIter.Next(); } } } @@ -551,10 +566,14 @@ String SwDBNameInfField::GetFieldName() const return lcl_DBTrennConv(sStr); } +<<<<<<< local +BOOL SwDBNameInfField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------06.03.98 16:55------------------- --------------------------------------------------*/ sal_Bool SwDBNameInfField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -578,10 +597,13 @@ sal_Bool SwDBNameInfField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) con } return sal_True; } -/*-----------------06.03.98 16:55------------------- +<<<<<<< local +BOOL SwDBNameInfField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwDBNameInfField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -612,17 +634,23 @@ sal_Bool SwDBNameInfField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) } return sal_True; } -/* -----------------4/10/2003 15:03------------------ +<<<<<<< local +USHORT SwDBNameInfField::GetSubType() const +======= --------------------------------------------------*/ sal_uInt16 SwDBNameInfField::GetSubType() const +>>>>>>> other { return nSubType; } -/* -----------------4/10/2003 15:03------------------ +<<<<<<< local +void SwDBNameInfField::SetSubType(USHORT nType) +======= --------------------------------------------------*/ void SwDBNameInfField::SetSubType(sal_uInt16 nType) +>>>>>>> other { nSubType = nType; } @@ -696,10 +724,13 @@ void SwDBNextSetField::SetPar1(const String& rStr) { aCond = rStr; } -/*-----------------06.03.98 16:16------------------- +<<<<<<< local +BOOL SwDBNextSetField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= --------------------------------------------------*/ sal_Bool SwDBNextSetField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { sal_Bool bRet = sal_True; switch( nWhichId ) @@ -712,10 +743,13 @@ sal_Bool SwDBNextSetField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) con } return bRet; } -/*-----------------06.03.98 16:16------------------- +<<<<<<< local +BOOL SwDBNextSetField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwDBNextSetField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Bool bRet = sal_True; switch( nWhichId ) @@ -730,21 +764,6 @@ sal_Bool SwDBNextSetField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) } /*-------------------------------------------------------------------- - Beschreibung: - --------------------------------------------------------------------*/ -/* -String SwDBNextSetField::GetPar2() const -{ - return GetDBName(); -} - -void SwDBNextSetField::SetPar2(const String& rStr) -{ - GetDBName() = rStr; -} -*/ - -/*-------------------------------------------------------------------- Beschreibung: Datensatz mit bestimmter ID --------------------------------------------------------------------*/ @@ -832,10 +851,13 @@ void SwDBNumSetField::SetPar2(const String& rStr) { aPar2 = rStr; } -/*-----------------06.03.98 16:16------------------- +<<<<<<< local +BOOL SwDBNumSetField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= --------------------------------------------------*/ sal_Bool SwDBNumSetField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { sal_Bool bRet = sal_True; switch( nWhichId ) @@ -851,10 +873,13 @@ sal_Bool SwDBNumSetField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) cons } return bRet; } -/*-----------------06.03.98 16:16------------------- +<<<<<<< local +BOOL SwDBNumSetField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwDBNumSetField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Bool bRet = sal_True; switch( nWhichId ) @@ -933,17 +958,23 @@ SwField* SwDBNameField::Copy() const return pTmp; } -/*-----------------06.03.98 16:16------------------- +<<<<<<< local +BOOL SwDBNameField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= --------------------------------------------------*/ sal_Bool SwDBNameField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { return SwDBNameInfField::QueryValue(rAny, nWhichId ); } -/*-----------------06.03.98 16:16------------------- +<<<<<<< local +BOOL SwDBNameField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwDBNameField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { return SwDBNameInfField::PutValue(rAny, nWhichId ); } @@ -983,8 +1014,12 @@ String SwDBSetNumberField::Expand() const if(0 !=(GetSubType() & nsSwExtendedSubType::SUB_INVISIBLE) || nNumber == 0) return aEmptyStr; else +<<<<<<< local + return FormatNumber((USHORT)nNumber, GetFormat()); +======= return FormatNumber((sal_uInt16)nNumber, GetFormat()); //return(nNumber == 0 ? aEmptyStr : FormatNumber(nNumber, GetFormat())); +>>>>>>> other } //------------------------------------------------------------------------------ @@ -1012,10 +1047,13 @@ SwField* SwDBSetNumberField::Copy() const pTmp->SetSubType(GetSubType()); return pTmp; } -/*-----------------06.03.98 16:15------------------- +<<<<<<< local +BOOL SwDBSetNumberField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= --------------------------------------------------*/ sal_Bool SwDBSetNumberField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { sal_Bool bRet = sal_True; switch( nWhichId ) @@ -1031,10 +1069,13 @@ sal_Bool SwDBSetNumberField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) c } return bRet; } -/*-----------------06.03.98 16:15------------------- +<<<<<<< local +BOOL SwDBSetNumberField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwDBSetNumberField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Bool bRet = sal_True; switch( nWhichId ) diff --git a/sw/source/core/fields/ddefld.cxx b/sw/source/core/fields/ddefld.cxx index 643efc626eb7..af709c5e9450 100644 --- a/sw/source/core/fields/ddefld.cxx +++ b/sw/source/core/fields/ddefld.cxx @@ -40,9 +40,7 @@ #include <swtable.hxx> #include <swbaslnk.hxx> #include <swddetbl.hxx> -#ifndef _UNOFLDMID_H #include <unofldmid.h> -#endif #include <hints.hxx> using rtl::OUString; @@ -124,7 +122,7 @@ void SwIntrnlRefLink::DataChanged( const String& rMimeType, int bCallModify = sal_False; rFldType.LockModify(); - SwClientIter aIter( rFldType ); + SwClientIter aIter( rFldType ); // TODO SwClient * pLast = aIter.GoStart(); if( pLast ) // konnte zum Anfang gesprungen werden ?? do { @@ -139,8 +137,13 @@ void SwIntrnlRefLink::DataChanged( const String& rMimeType, else if( pSh ) pSh->StartAction(); } +<<<<<<< local + pLast->ModifyNotification( 0, &aUpdateDDE ); + bCallModify = TRUE; +======= pLast->Modify( 0, &aUpdateDDE ); bCallModify = sal_True; +>>>>>>> other } } while( 0 != ( pLast = aIter++ )); @@ -186,7 +189,7 @@ const SwNode* SwIntrnlRefLink::GetAnchor() const { // hier sollte irgend ein Anchor aus dem normalen Nodes-Array reichen const SwNode* pNd = 0; - SwClientIter aIter( rFldType ); + SwClientIter aIter( rFldType ); // TODO SwClient * pLast = aIter.GoStart(); if( pLast ) // konnte zum Anfang gesprungen werden ?? do { @@ -213,7 +216,7 @@ sal_Bool SwIntrnlRefLink::IsInRange( sal_uLong nSttNd, sal_uLong nEndNd, { // hier sollte irgend ein Anchor aus dem normalen Nodes-Array reichen SwNodes* pNds = &rFldType.GetDoc()->GetNodes(); - SwClientIter aIter( rFldType ); + SwClientIter aIter( rFldType ); // TODO SwClient * pLast = aIter.GoStart(); if( pLast ) // konnte zum Anfang gesprungen werden ?? do { @@ -319,7 +322,7 @@ void SwDDEFieldType::_RefCntChgd() { refLink->SetVisible( pDoc->IsVisibleLinks() ); pDoc->GetLinkManager().InsertDDELink( refLink ); - if( pDoc->GetRootFrm() ) + if( pDoc->GetCurrentViewShell() ) //swmod 071108//swmod 071225 UpdateNow(); } else @@ -401,8 +404,8 @@ SwDDEField::SwDDEField( SwDDEFieldType* pInitType ) SwDDEField::~SwDDEField() { - if( GetTyp()->IsLastDepend() ) // der Letzte mach das - ((SwDDEFieldType*)GetTyp())->Disconnect(); // Licht aus + if( GetTyp()->IsLastDepend() ) + ((SwDDEFieldType*)GetTyp())->Disconnect(); } String SwDDEField::Expand() const diff --git a/sw/source/core/fields/ddetbl.cxx b/sw/source/core/fields/ddetbl.cxx index 05d8f4ff50a3..98b018a3a850 100644 --- a/sw/source/core/fields/ddetbl.cxx +++ b/sw/source/core/fields/ddetbl.cxx @@ -39,7 +39,7 @@ #include <ndindex.hxx> #include <fldupde.hxx> #include <swtblfmt.hxx> - +#include <fieldhint.hxx> TYPEINIT1( SwDDETable, SwTable ); @@ -62,10 +62,12 @@ SwDDETable::SwDDETable( SwTable& rTable, SwDDEFieldType* pDDEType, const SwNode& rNd = *GetTabSortBoxes()[0]->GetSttNd(); if( rNd.GetNodes().IsDocNodes() ) { - // "aktivieren der Updates" (Modify nicht noch mal rufen) - aDepend.LockModify(); + // mba: swclient refactoring - this code shouldn't have done anything! + // the ModifyLock Flag is evaluated in SwModify only, though it was accessible via SwClient + // This has been fixed now +// aDepend.LockModify(); pDDEType->IncRefCnt(); - aDepend.UnlockModify(); +// aDepend.UnlockModify(); // Setzen der Werte in die einzelnen Boxen // update box content only if update flag is set (false in import) @@ -91,7 +93,7 @@ __EXPORT SwDDETable::~SwDDETable() } } -void SwDDETable::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwDDETable::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { if( pNew && RES_UPDATEDDETBL == pNew->Which() ) ChangeContent(); @@ -99,6 +101,14 @@ void SwDDETable::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) SwTable::Modify( pOld, pNew ); } +void SwDDETable::SwClientNotify( const SwModify&, const SfxHint& rHint ) +{ + const SwFieldHint* pHint = dynamic_cast<const SwFieldHint*>( &rHint ); + if ( pHint ) + // replace DDETable by real table + NoDDETable(); +} + void SwDDETable::ChangeContent() { ASSERT( GetFrmFmt(), "Kein FrameFormat" ); @@ -176,7 +186,7 @@ sal_Bool SwDDETable::NoDDETable() pNewTbl->GetTabLines().Insert( &GetTabLines(),0 ); // move die Lines GetTabLines().Remove( 0, GetTabLines().Count() ); - if( pDoc->GetRootFrm() ) + if( pDoc->GetCurrentViewShell() ) //swmod 071108//swmod 071225 ((SwDDEFieldType*)aDepend.GetRegisteredIn())->DecRefCnt(); pTblNd->SetNewTable( pNewTbl ); // setze die Tabelle diff --git a/sw/source/core/fields/docufld.cxx b/sw/source/core/fields/docufld.cxx index 9f0e252a6421..0f84d40c5c1c 100644 --- a/sw/source/core/fields/docufld.cxx +++ b/sw/source/core/fields/docufld.cxx @@ -103,6 +103,7 @@ #include <editeng/outliner.hxx> #include <editeng/outlobj.hxx> +#include <switerator.hxx> #define URL_DECODE INetURLObject::DECODE_UNAMBIGUOUS @@ -176,14 +177,11 @@ void SwPageNumberFieldType::ChangeExpansion( SwDoc* pDoc, sal_uInt16 nPage, if( 0 != (pDesc = (SwFmtPageDesc*)rPool.GetItem2( RES_PAGEDESC, n ) ) && pDesc->GetNumOffset() && pDesc->GetDefinedIn() ) { - if( pDesc->GetDefinedIn()->ISA( SwCntntNode )) + SwCntntNode* pNd = PTR_CAST( SwCntntNode, pDesc->GetDefinedIn() ); + if( pNd ) { - SwClientIter aIter( *(SwModify*)pDesc->GetDefinedIn() ); - if( aIter.First( TYPE( SwFrm ) ) ) - { + if ( SwIterator<SwFrm,SwCntntNode>::FirstElement(*pNd) ) bVirtuell = sal_True; - break; - } } else if( pDesc->GetDefinedIn()->ISA( SwFmt )) { @@ -249,10 +247,14 @@ sal_uInt16 SwPageNumberField::GetSubType() const return nSubType; } +<<<<<<< local +BOOL SwPageNumberField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 10:25------------------- --------------------------------------------------*/ sal_Bool SwPageNumberField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -282,10 +284,13 @@ sal_Bool SwPageNumberField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) co } return sal_True; } -/*-----------------05.03.98 10:25------------------- +<<<<<<< local +BOOL SwPageNumberField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwPageNumberField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Bool bRet = sal_True; sal_Int16 nSet = 0; @@ -383,10 +388,14 @@ SwField* SwAuthorField::Copy() const return pTmp; } +<<<<<<< local +BOOL SwAuthorField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 11:15------------------- --------------------------------------------------*/ sal_Bool SwAuthorField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { sal_Bool bVal; switch( nWhichId ) @@ -410,10 +419,13 @@ sal_Bool SwAuthorField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return sal_True; } -/*-----------------05.03.98 11:15------------------- +<<<<<<< local +BOOL SwAuthorField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwAuthorField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -529,10 +541,14 @@ SwField* SwFileNameField::Copy() const return pTmp; } +<<<<<<< local +BOOL SwFileNameField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 08:59------------------- --------------------------------------------------*/ sal_Bool SwFileNameField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -571,10 +587,13 @@ sal_Bool SwFileNameField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) cons } return sal_True; } -/*-----------------05.03.98 09:01------------------- +<<<<<<< local +BOOL SwFileNameField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwFileNameField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -705,10 +724,14 @@ SwField* SwTemplNameField::Copy() const return pTmp; } +<<<<<<< local +BOOL SwTemplNameField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 08:59------------------- --------------------------------------------------*/ sal_Bool SwTemplNameField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch ( nWhichId ) { @@ -733,10 +756,13 @@ sal_Bool SwTemplNameField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) con } return sal_True; } -/*-----------------05.03.98 09:01------------------- +<<<<<<< local +BOOL SwTemplNameField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwTemplNameField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch ( nWhichId ) { @@ -796,8 +822,8 @@ String SwDocStatFieldType::Expand(sal_uInt16 nSubType, sal_uInt32 nFmt) const case DS_WORD: nVal = rDStat.nWord; break; case DS_CHAR: nVal = rDStat.nChar; break; case DS_PAGE: - if( pDoc->GetRootFrm() ) - ((SwDocStat &)rDStat).nPage = pDoc->GetRootFrm()->GetPageNum(); + if( pDoc->GetCurrentLayout() )//swmod 080218 + ((SwDocStat &)rDStat).nPage = pDoc->GetCurrentLayout()->GetPageNum(); //swmod 080218 nVal = rDStat.nPage; if( SVX_NUM_PAGEDESC == nFmt ) nFmt = (sal_uInt32)nNumberingType; @@ -860,10 +886,14 @@ void SwDocStatField::ChangeExpansion( const SwFrm* pFrm ) pFrm->FindPageFrm()->GetPageDesc()->GetNumType().GetNumberingType() ); } +<<<<<<< local +BOOL SwDocStatField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 11:38------------------- --------------------------------------------------*/ sal_Bool SwDocStatField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch ( nWhichId ) { @@ -875,10 +905,13 @@ sal_Bool SwDocStatField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return sal_True; } -/*-----------------05.03.98 11:38------------------- +<<<<<<< local +BOOL SwDocStatField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwDocStatField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Bool bRet = sal_False; switch ( nWhichId ) @@ -912,9 +945,7 @@ SwDocInfoFieldType::SwDocInfoFieldType(SwDoc* pDc) { } -/* --------------------------------------------------------------------------- - - ---------------------------------------------------------------------------*/ +// --------------------------------------------------------------------------- SwFieldType* SwDocInfoFieldType::Copy() const { SwDocInfoFieldType* pTyp = new SwDocInfoFieldType(GetDoc()); @@ -934,9 +965,7 @@ void lcl_GetLocalDataWrapper( sal_uLong nLang, SvxCreateLocale( static_cast<LanguageType>(nLang) ) ); } -/* --------------------------------------------------------------------------- - - ---------------------------------------------------------------------------*/ +// --------------------------------------------------------------------------- String SwDocInfoFieldType::Expand( sal_uInt16 nSub, sal_uInt32 nFormat, sal_uInt16 nLang, const String& rName ) const { @@ -1084,9 +1113,7 @@ String SwDocInfoFieldType::Expand( sal_uInt16 nSub, sal_uInt32 nFormat, return aStr; } -/* --------------------------------------------------------------------------- - - ---------------------------------------------------------------------------*/ +// --------------------------------------------------------------------------- SwDocInfoField::SwDocInfoField(SwDocInfoFieldType* pTyp, sal_uInt16 nSub, const String& rName, sal_uInt32 nFmt) : SwValueField(pTyp, nFmt), nSubType(nSub) { @@ -1101,9 +1128,8 @@ SwDocInfoField::SwDocInfoField(SwDocInfoFieldType* pTyp, sal_uInt16 nSub, const aContent = rValue; } -/* --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ template<class T> double lcl_TimeToDouble( const T& rTime ) { @@ -1743,10 +1769,13 @@ SwField* SwHiddenParaField::Copy() const return pFld; } -/*-----------------05.03.98 13:25------------------- +<<<<<<< local +BOOL SwHiddenParaField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= --------------------------------------------------*/ sal_Bool SwHiddenParaField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch ( nWhichId ) { @@ -1765,10 +1794,13 @@ sal_Bool SwHiddenParaField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) co } return sal_True; } -/*-----------------05.03.98 13:25------------------- +<<<<<<< local +BOOL SwHiddenParaField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwHiddenParaField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch ( nWhichId ) { @@ -1908,10 +1940,14 @@ sal_uInt32 SwPostItField::GetNumberOfParagraphs() const return (mpText) ? mpText->Count() : 1; } +<<<<<<< local +BOOL SwPostItField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 13:42------------------- --------------------------------------------------*/ sal_Bool SwPostItField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -1971,11 +2007,15 @@ sal_Bool SwPostItField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const return sal_True; } +<<<<<<< local +BOOL SwPostItField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= /*-----------------05.03.98 13:42------------------- --------------------------------------------------*/ sal_Bool SwPostItField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -2116,10 +2156,14 @@ void SwExtUserField::SetSubType(sal_uInt16 nSub) nType = nSub; } +<<<<<<< local +BOOL SwExtUserField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 14:14------------------- --------------------------------------------------*/ sal_Bool SwExtUserField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -2144,10 +2188,13 @@ sal_Bool SwExtUserField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return sal_True; } -/*-----------------05.03.98 14:14------------------- +<<<<<<< local +BOOL SwExtUserField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwExtUserField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -2194,7 +2241,7 @@ SwFieldType* SwRefPageSetFieldType::Copy() const ---------------------------------------------------------------------------*/ // ueberlagert, weil es nichts zum Updaten gibt! -void SwRefPageSetFieldType::Modify( SfxPoolItem *, SfxPoolItem * ) +void SwRefPageSetFieldType::Modify( const SfxPoolItem*, const SfxPoolItem * ) { } @@ -2236,10 +2283,14 @@ void SwRefPageSetField::SetPar2(const String& rStr) SetOffset( (short) rStr.ToInt32() ); } +<<<<<<< local +BOOL SwRefPageSetField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 14:52------------------- --------------------------------------------------*/ sal_Bool SwRefPageSetField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -2254,10 +2305,13 @@ sal_Bool SwRefPageSetField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) co } return sal_True; } -/*-----------------05.03.98 14:52------------------- +<<<<<<< local +BOOL SwRefPageSetField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwRefPageSetField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -2292,7 +2346,7 @@ SwFieldType* SwRefPageGetFieldType::Copy() const /* --------------------------------------------------------------------------- ---------------------------------------------------------------------------*/ -void SwRefPageGetFieldType::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwRefPageGetFieldType::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { // Update auf alle GetReferenz-Felder if( !pNew && !pOld && GetDepends() ) @@ -2301,30 +2355,26 @@ void SwRefPageGetFieldType::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) _SetGetExpFlds aTmpLst( 10, 5 ); if( MakeSetList( aTmpLst ) ) { - SwClientIter aIter( *this ); - if( aIter.GoStart() ) - do { + SwIterator<SwFmtFld,SwFieldType> aIter( *this ); + for ( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) // nur die GetRef-Felder Updaten - SwFmtFld* pFmtFld = (SwFmtFld*)aIter(); if( pFmtFld->GetTxtFld() ) UpdateField( pFmtFld->GetTxtFld(), aTmpLst ); - } while( aIter++ ); } } // weiter an die Text-Felder, diese "Expandieren" den Text - SwModify::Modify( pOld, pNew ); + NotifyClients( pOld, pNew ); } /* --------------------------------------------------------------------------- ---------------------------------------------------------------------------*/ sal_uInt16 SwRefPageGetFieldType::MakeSetList( _SetGetExpFlds& rTmpLst ) { - SwClientIter aIter( *pDoc->GetSysFldType( RES_REFPAGESETFLD)); - if( aIter.GoStart() ) - do { + SwIterator<SwFmtFld,SwFieldType> aIter(*pDoc->GetSysFldType( RES_REFPAGESETFLD)); + for ( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) + { // nur die GetRef-Felder Updaten - SwFmtFld* pFmtFld = (SwFmtFld*)aIter(); const SwTxtFld* pTFld = pFmtFld->GetTxtFld(); if( pTFld ) { @@ -2332,7 +2382,7 @@ sal_uInt16 SwRefPageGetFieldType::MakeSetList( _SetGetExpFlds& rTmpLst ) // immer den ersten !! (in Tab-Headline, Kopf-/Fuss ) Point aPt; - const SwCntntFrm* pFrm = rTxtNd.GetFrm( &aPt, 0, sal_False ); + const SwCntntFrm* pFrm = rTxtNd.getLayoutFrm( rTxtNd.GetDoc()->GetCurrentLayout(), &aPt, 0, sal_False ); _SetGetExpFld* pNew; @@ -2364,7 +2414,7 @@ sal_uInt16 SwRefPageGetFieldType::MakeSetList( _SetGetExpFlds& rTmpLst ) if( !rTmpLst.Insert( pNew )) delete pNew; } - } while( aIter++ ); + } return rTmpLst.Count(); } @@ -2397,8 +2447,8 @@ void SwRefPageGetFieldType::UpdateField( SwTxtFld* pTxtFld, { // dann bestimme mal den entsp. Offset Point aPt; - const SwCntntFrm* pFrm = pTxtNode->GetFrm( &aPt, 0, sal_False ); - const SwCntntFrm* pRefFrm = pRefTxtFld->GetTxtNode().GetFrm( &aPt, 0, sal_False ); + const SwCntntFrm* pFrm = pTxtNode->getLayoutFrm( pTxtNode->GetDoc()->GetCurrentLayout(), &aPt, 0, sal_False ); + const SwCntntFrm* pRefFrm = pRefTxtFld->GetTxtNode().getLayoutFrm( pRefTxtFld->GetTxtNode().GetDoc()->GetCurrentLayout(), &aPt, 0, sal_False ); const SwPageFrm* pPgFrm = 0; sal_uInt16 nDiff = ( pFrm && pRefFrm ) ? (pPgFrm = pFrm->FindPageFrm())->GetPhyPageNum() - @@ -2416,7 +2466,7 @@ void SwRefPageGetFieldType::UpdateField( SwTxtFld* pTxtFld, } } // dann die Formatierung anstossen - ((SwFmtFld&)pTxtFld->GetFld()).Modify( 0, 0 ); + ((SwFmtFld&)pTxtFld->GetFld()).ModifyNotification( 0, 0 ); } /*-------------------------------------------------------------------- @@ -2491,7 +2541,7 @@ void SwRefPageGetField::ChangeExpansion( const SwFrm* pFrm, const SwRefPageSetField* pSetFld = (SwRefPageSetField*)pRefTxtFld->GetFld().GetFld(); Point aPt; - const SwCntntFrm* pRefFrm = pRefTxtFld ? pRefTxtFld->GetTxtNode().GetFrm( &aPt, 0, sal_False ) : 0; + const SwCntntFrm* pRefFrm = pRefTxtFld ? pRefTxtFld->GetTxtNode().getLayoutFrm( pFrm->getRootFrm(), &aPt, 0, sal_False ) : 0; if( pSetFld->IsOn() && pRefFrm ) { // dann bestimme mal den entsp. Offset @@ -2507,10 +2557,13 @@ void SwRefPageGetField::ChangeExpansion( const SwFrm* pFrm, pGetFld->SetText( FormatNumber( nPageNum, nTmpFmt ) ); } } -/*-----------------05.03.98 14:52------------------- +<<<<<<< local +BOOL SwRefPageGetField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= --------------------------------------------------*/ sal_Bool SwRefPageGetField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -2525,10 +2578,13 @@ sal_Bool SwRefPageGetField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) co } return sal_True; } -/*-----------------05.03.98 14:52------------------- +<<<<<<< local +BOOL SwRefPageGetField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwRefPageGetField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -2643,10 +2699,14 @@ void SwJumpEditField::SetPar2(const String& rStr) sHelp = rStr; } +<<<<<<< local +BOOL SwJumpEditField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------05.03.98 15:00------------------- --------------------------------------------------*/ sal_Bool SwJumpEditField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -2677,10 +2737,13 @@ sal_Bool SwJumpEditField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) cons } return sal_True; } -/*-----------------05.03.98 15:00------------------- +<<<<<<< local +BOOL SwJumpEditField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwJumpEditField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { diff --git a/sw/source/core/fields/expfld.cxx b/sw/source/core/fields/expfld.cxx index 80daf36db63b..425566999b5e 100644 --- a/sw/source/core/fields/expfld.cxx +++ b/sw/source/core/fields/expfld.cxx @@ -63,6 +63,7 @@ #include <SwStyleNameMapper.hxx> #include <unofldmid.h> #include <numrule.hxx> +#include <switerator.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::text; @@ -284,10 +285,10 @@ SwFieldType* SwGetExpFieldType::Copy() const return new SwGetExpFieldType(GetDoc()); } -void SwGetExpFieldType::Modify( SfxPoolItem*, SfxPoolItem* pNew ) +void SwGetExpFieldType::Modify( const SfxPoolItem*, const SfxPoolItem* pNew ) { if( pNew && RES_DOCPOS_UPDATE == pNew->Which() ) - SwModify::Modify( 0, pNew ); + NotifyClients( 0, pNew ); // sonst nichts weiter expandieren } @@ -425,10 +426,14 @@ void SwGetExpField::SetLanguage(sal_uInt16 nLng) SwValueField::SetLanguage(nLng); } +<<<<<<< local +BOOL SwGetExpField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------07.03.98 16:08------------------- --------------------------------------------------*/ sal_Bool SwGetExpField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -464,10 +469,13 @@ sal_Bool SwGetExpField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return sal_True; } -/*-----------------07.03.98 16:08------------------- +<<<<<<< local +BOOL SwGetExpField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwGetExpField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Int32 nTmp = 0; String sTmp; @@ -507,11 +515,15 @@ sal_Bool SwGetExpField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) return sal_True; } +<<<<<<< local +SwSetExpFieldType::SwSetExpFieldType( SwDoc* pDc, const String& rName, USHORT nTyp ) +======= /*-----------------JP: 17.06.93 ------------------- Set-Expression-Type --------------------------------------------------*/ SwSetExpFieldType::SwSetExpFieldType( SwDoc* pDc, const String& rName, sal_uInt16 nTyp ) +>>>>>>> other : SwValueFieldType( pDc, RES_SETEXPFLD ), sName( rName ), pOutlChgNd( 0 ), @@ -538,16 +550,15 @@ const String& SwSetExpFieldType::GetName() const return sName; } -void SwSetExpFieldType::Modify( SfxPoolItem*, SfxPoolItem* ) +void SwSetExpFieldType::Modify( const SfxPoolItem*, const SfxPoolItem* ) { return; // nicht weiter expandieren } void SwSetExpFieldType::SetSeqFormat(sal_uLong nFmt) { - SwClientIter aIter(*this); - for( SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE(SwFmtFld) ); - pFld; pFld = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter(*this); + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) pFld->GetFld()->ChangeFormat( nFmt ); } @@ -572,10 +583,9 @@ extern void InsertSort( SvUShorts& rArr, sal_uInt16 nIdx, sal_uInt16* pInsPos = // dann testmal, ob die Nummer schon vergeben ist oder ob eine neue // bestimmt werden muss. - SwClientIter aIter( *this ); + SwIterator<SwFmtFld,SwFieldType> aIter( *this ); const SwTxtNode* pNd; - for( SwFmtFld* pF = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); pF; - pF = (SwFmtFld*)aIter.Next() ) + for( SwFmtFld* pF = aIter.First(); pF; pF = aIter.Next() ) if( pF->GetFld() != &rFld && pF->GetTxtFld() && 0 != ( pNd = pF->GetTxtFld()->GetpTxtNode() ) && pNd->GetNodes().IsDocNodes() ) @@ -610,10 +620,9 @@ sal_uInt16 SwSetExpFieldType::GetSeqFldList( SwSeqFldList& rList ) if( rList.Count() ) rList.Remove( 0, rList.Count() ); - SwClientIter aIter( *this ); + SwIterator<SwFmtFld,SwFieldType> aIter( *this ); const SwTxtNode* pNd; - for( SwFmtFld* pF = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); pF; - pF = (SwFmtFld*)aIter.Next() ) + for( SwFmtFld* pF = aIter.First(); pF; pF = aIter.Next() ) if( pF->GetTxtFld() && 0 != ( pNd = pF->GetTxtFld()->GetpTxtNode() ) && pNd->GetNodes().IsDocNodes() ) @@ -657,10 +666,14 @@ void SwSetExpFieldType::SetChapter( SwSetExpField& rFld, const SwNode& rNd ) } } +<<<<<<< local +BOOL SwSetExpFieldType::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /* -----------------24.03.99 09:44------------------- * * --------------------------------------------------*/ sal_Bool SwSetExpFieldType::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -909,7 +922,7 @@ void SwGetExpField::SetValue( const double& rAny ) sExpand = ((SwValueFieldType*)GetTyp())->ExpandValue( rAny, GetFormat(), GetLanguage()); } -/* -----------------14.07.99 12:21------------------- +/* ------------------------------------------------- Description: Find the index of the reference text following the current field --------------------------------------------------*/ @@ -1060,10 +1073,14 @@ String SwInputField::Expand() const return sRet; } +<<<<<<< local +BOOL SwInputField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------06.03.98 11:12------------------- --------------------------------------------------*/ sal_Bool SwInputField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -1084,10 +1101,13 @@ sal_Bool SwInputField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return sal_True; } -/*-----------------06.03.98 11:12------------------- +<<<<<<< local +BOOL SwInputField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwInputField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { switch( nWhichId ) { @@ -1170,10 +1190,13 @@ void SwInputField::SetSubType(sal_uInt16 nSub) { nSubType = nSub; } -/*-----------------05.03.98 17:22------------------- +<<<<<<< local +BOOL SwSetExpField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= --------------------------------------------------*/ sal_Bool SwSetExpField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -1237,10 +1260,13 @@ sal_Bool SwSetExpField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return sal_True; } -/*-----------------05.03.98 17:22------------------- +<<<<<<< local +BOOL SwSetExpField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwSetExpField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Int32 nTmp32 = 0; sal_Int16 nTmp16 = 0; diff --git a/sw/source/core/fields/fldlst.cxx b/sw/source/core/fields/fldlst.cxx index 2777dc82e9b4..092f2d70d1f7 100644 --- a/sw/source/core/fields/fldlst.cxx +++ b/sw/source/core/fields/fldlst.cxx @@ -28,7 +28,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - +#include "switerator.hxx" #include "editsh.hxx" #include "doc.hxx" #include <docary.hxx> @@ -63,10 +63,8 @@ SwInputFieldList::SwInputFieldList( SwEditShell* pShell, sal_Bool bBuildTmpLst ) if( RES_SETEXPFLD == nType || RES_INPUTFLD == nType || RES_DROPDOWN == nType ) { - SwClientIter aIter( *pFldType ); - for( SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE(SwFmtFld) ); - pFld; pFld = (SwFmtFld*)aIter.Next() ) - + SwIterator<SwFmtFld,SwFieldType> aIter( *pFldType ); + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) { const SwTxtFld* pTxtFld = pFld->GetTxtFld(); @@ -161,9 +159,8 @@ sal_uInt16 SwInputFieldList::BuildSortLst() if( RES_SETEXPFLD == nType || RES_INPUTFLD == nType ) { - SwClientIter aIter( *pFldType ); - for( SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE(SwFmtFld) ); - pFld; pFld = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pFldType ); + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) { const SwTxtFld* pTxtFld = pFld->GetTxtFld(); diff --git a/sw/source/core/fields/postithelper.cxx b/sw/source/core/fields/postithelper.cxx index 1d76dce43117..57c9a09ada24 100644 --- a/sw/source/core/fields/postithelper.cxx +++ b/sw/source/core/fields/postithelper.cxx @@ -47,7 +47,7 @@ #include <redline.hxx> #include <scriptinfo.hxx> #include <editeng/charhiddenitem.hxx> - +#include <switerator.hxx> namespace { @@ -93,9 +93,8 @@ SwPostItHelper::SwLayoutStatus SwPostItHelper::getLayoutInfos( std::vector< SwLa SwCntntNode* pNode = rPos.nNode.GetNode().GetCntntNode(); // getfirstcontentnode // getnext... if( !pNode ) return aRet; - SwClientIter aIter( *pNode ); - SwTxtFrm *pTxtFrm; - for( pTxtFrm = (SwTxtFrm*)aIter.First( TYPE( SwTxtFrm )); pTxtFrm; pTxtFrm = (SwTxtFrm*)aIter.Next() ) + SwIterator<SwTxtFrm,SwCntntNode> aIter( *pNode ); + for( SwTxtFrm* pTxtFrm = aIter.First(); pTxtFrm; pTxtFrm = aIter.Next() ) { if( !pTxtFrm->IsFollow() ) { diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx index 46bdd962df09..d83a38c777e6 100644 --- a/sw/source/core/fields/reffld.cxx +++ b/sw/source/core/fields/reffld.cxx @@ -57,9 +57,7 @@ #include <flyfrm.hxx> #include <pagedesc.hxx> #include <IMark.hxx> -// --> OD 2007-10-18 #i81002# #include <crossrefbookmark.hxx> -// <-- #include <ftnidx.hxx> #include <viewsh.hxx> #include <unofldmid.h> @@ -70,6 +68,7 @@ #include <comcore.hrc> #include <numrule.hxx> #include <SwNodeNum.hxx> +#include <switerator.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::text; @@ -105,8 +104,13 @@ void lcl_GetLayTree( const SwFrm* pFrm, SvPtrarr& rArr ) sal_Bool IsFrameBehind( const SwTxtNode& rMyNd, sal_uInt16 nMySttPos, const SwTxtNode& rBehindNd, sal_uInt16 nSttPos ) { +<<<<<<< local + const SwTxtFrm *pMyFrm = (SwTxtFrm*)rMyNd.getLayoutFrm( rMyNd.GetDoc()->GetCurrentLayout(), 0,0,FALSE), + *pFrm = (SwTxtFrm*)rBehindNd.getLayoutFrm( rBehindNd.GetDoc()->GetCurrentLayout(), 0,0,FALSE); +======= const SwTxtFrm *pMyFrm = (SwTxtFrm*)rMyNd.GetFrm(0,0,sal_False), *pFrm = (SwTxtFrm*)rBehindNd.GetFrm(0,0,sal_False); +>>>>>>> other while( pFrm && !pFrm->IsInside( nSttPos ) ) pFrm = (SwTxtFrm*)pFrm->GetFollow(); @@ -392,7 +396,11 @@ void SwGetRefField::UpdateField( const SwTxtFld* pFldTxtAttr ) case REF_PAGE: case REF_PAGE_PGDESC: { +<<<<<<< local + const SwTxtFrm* pFrm = (SwTxtFrm*)pTxtNd->getLayoutFrm( pDoc->GetCurrentLayout(), 0,0,FALSE), +======= const SwTxtFrm* pFrm = (SwTxtFrm*)pTxtNd->GetFrm(0,0,sal_False), +>>>>>>> other *pSave = pFrm; while( pFrm && !pFrm->IsInside( nStt ) ) pFrm = (SwTxtFrm*)pFrm->GetFollow(); @@ -414,7 +422,7 @@ void SwGetRefField::UpdateField( const SwTxtFld* pFldTxtAttr ) case REF_CHAPTER: { // ein bischen trickreich: suche irgend einen Frame - const SwFrm* pFrm = pTxtNd->GetFrm(); + const SwFrm* pFrm = pTxtNd->getLayoutFrm( pDoc->GetCurrentLayout() ); if( pFrm ) { SwChapterFieldType aFldTyp; @@ -577,10 +585,14 @@ String SwGetRefField::GetPar2() const return Expand(); } +<<<<<<< local +BOOL SwGetRefField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------06.03.98 13:34------------------- --------------------------------------------------*/ sal_Bool SwGetRefField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { switch( nWhichId ) { @@ -651,10 +663,13 @@ sal_Bool SwGetRefField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return sal_True; } -/*-----------------06.03.98 13:34------------------- +<<<<<<< local +BOOL SwGetRefField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwGetRefField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { String sTmp; switch( nWhichId ) @@ -728,9 +743,7 @@ sal_Bool SwGetRefField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) } return sal_True; } -/* -----------------------------11.01.2002 12:50------------------------------ - ---------------------------------------------------------------------------*/ void SwGetRefField::ConvertProgrammaticToUIName() { if(GetTyp() && REF_SEQUENCEFLD == nSubType) @@ -762,10 +775,6 @@ void SwGetRefField::ConvertProgrammaticToUIName() } } } -/*-----------------JP: 18.06.93 ------------------- - Get-Referenz-Type - --------------------------------------------------*/ - SwGetRefFieldType::SwGetRefFieldType( SwDoc* pDc ) : SwFieldType( RES_GETREFFLD ), pDoc( pDc ) @@ -778,14 +787,13 @@ SwFieldType* SwGetRefFieldType::Copy() const } -void SwGetRefFieldType::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwGetRefFieldType::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { // Update auf alle GetReferenz-Felder if( !pNew && !pOld ) { - SwClientIter aIter( *this ); - for( SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE(SwFmtFld) ); - pFld; pFld = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *this ); + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) { // nur die GetRef-Felder Updaten //JP 3.4.2001: Task 71231 - we need the correct language @@ -805,7 +813,7 @@ void SwGetRefFieldType::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) } } // weiter an die Text-Felder, diese "Expandieren" den Text - SwModify::Modify( pOld, pNew ); + NotifyClients( pOld, pNew ); } SwTxtNode* SwGetRefFieldType::FindAnchor( SwDoc* pDoc, const String& rRefMark, @@ -836,9 +844,8 @@ SwTxtNode* SwGetRefFieldType::FindAnchor( SwDoc* pDoc, const String& rRefMark, if( pFldType && pFldType->GetDepends() && nsSwGetSetExpType::GSE_SEQ & ((SwSetExpFieldType*)pFldType)->GetType() ) { - SwClientIter aIter( *pFldType ); - for( SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE(SwFmtFld) ); - pFld; pFld = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pFldType ); + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) { if( pFld->GetTxtFld() && nSeqNo == ((SwSetExpField*)pFld->GetFld())->GetSeqNumber() ) @@ -949,22 +956,20 @@ void _RefIdsMap::Check( SwDoc& rDoc, SwDoc& rDestDoc, SwGetRefField& rFld, if( bField ) { const SwTxtNode* pNd; - SwModify* pMod; - if( 0 != ( pMod = rDestDoc.GetFldType( RES_SETEXPFLD, aName, false ) )) + SwFieldType* pType; + if( 0 != ( pType = rDestDoc.GetFldType( RES_SETEXPFLD, aName, false ) )) { - SwClientIter aIter( *pMod ); - for( SwFmtFld* pF = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); pF; - pF = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + for( SwFmtFld* pF = aIter.First(); pF; pF = aIter.Next() ) if( pF->GetTxtFld() && 0 != ( pNd = pF->GetTxtFld()->GetpTxtNode() ) && pNd->GetNodes().IsDocNodes() ) aIds.Insert( ((SwSetExpField*)pF->GetFld())->GetSeqNumber() ); } - if( 0 != ( pMod = rDoc.GetFldType( RES_SETEXPFLD, aName, false ) )) + if( 0 != ( pType = rDoc.GetFldType( RES_SETEXPFLD, aName, false ) )) { - SwClientIter aIter( *pMod ); - for( SwFmtFld* pF = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); pF; - pF = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + for( SwFmtFld* pF = aIter.First(); pF; pF = aIter.Next() ) if( pF->GetTxtFld() && 0 != ( pNd = pF->GetTxtFld()->GetpTxtNode() ) && pNd->GetNodes().IsDocNodes() ) @@ -1010,12 +1015,11 @@ void _RefIdsMap::Check( SwDoc& rDoc, SwDoc& rDestDoc, SwGetRefField& rFld, // Id umsetzen if( bField ) { - SwModify* pMod = rDoc.GetFldType( RES_SETEXPFLD, aName, false ); - if( pMod ) + SwFieldType* pType = rDoc.GetFldType( RES_SETEXPFLD, aName, false ); + if( pType ) { - SwClientIter aIter( *pMod ); - for( SwFmtFld* pF = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); pF; - pF = (SwFmtFld*)aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + for( SwFmtFld* pF = aIter.First(); pF; pF = aIter.Next() ) if( pF->GetTxtFld() && nSeqNo == ((SwSetExpField*)pF->GetFld())->GetSeqNumber() ) ((SwSetExpField*)pF->GetFld())->SetSeqNumber( n ); @@ -1053,11 +1057,10 @@ void SwGetRefFieldType::MergeWithOtherDoc( SwDoc& rDestDoc ) _RefIdsMap aFntMap( aEmptyStr ); _RefIdsMaps aFldMap; - SwClientIter aIter( *this ); - for( SwClient* pFld = aIter.First( TYPE( SwFmtFld )); - pFld; pFld = aIter.Next() ) + SwIterator<SwFmtFld,SwFieldType> aIter( *this ); + for( SwFmtFld* pFld = aIter.First(); pFld; pFld = aIter.Next() ) { - SwGetRefField& rRefFld = *(SwGetRefField*)((SwFmtFld*)pFld)->GetFld(); + SwGetRefField& rRefFld = *(SwGetRefField*)pFld->GetFld(); switch( rRefFld.GetSubType() ) { case REF_SEQUENCEFLD: diff --git a/sw/source/core/fields/tblcalc.cxx b/sw/source/core/fields/tblcalc.cxx index 5d6500ec3646..0f2b22dbdee8 100644 --- a/sw/source/core/fields/tblcalc.cxx +++ b/sw/source/core/fields/tblcalc.cxx @@ -28,7 +28,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - +#include <switerator.hxx> #include <cntfrm.hxx> #include <doc.hxx> #include <pam.hxx> // fuer GetBodyTxtNode @@ -39,7 +39,6 @@ #include <docfld.hxx> // fuer _SetGetExpFld #include <unofldmid.h> - using namespace ::com::sun::star; using ::rtl::OUString; @@ -104,15 +103,10 @@ const SwNode* SwTblField::GetNodeOfFormula() const if( !GetTyp()->GetDepends() ) return 0; - SwClientIter aIter( *GetTyp() ); - SwClient * pLast = aIter.GoStart(); - if( pLast ) // konnte zum Anfang gesprungen werden ?? - do { - const SwFmtFld* pFmtFld = (SwFmtFld*)pLast; + SwIterator<SwFmtFld,SwFieldType> aIter( *GetTyp() ); + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) if( this == pFmtFld->GetFld() ) return (SwTxtNode*)&pFmtFld->GetTxtFld()->GetTxtNode(); - - } while( 0 != ( pLast = aIter++ )); return 0; } @@ -187,10 +181,14 @@ void SwTblField::SetPar2(const String& rStr) } +<<<<<<< local +BOOL SwTblField::QueryValue( uno::Any& rAny, USHORT nWhichId ) const +======= /*-----------------04.03.98 10:33------------------- --------------------------------------------------*/ sal_Bool SwTblField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const +>>>>>>> other { sal_Bool bRet = sal_True; switch ( nWhichId ) @@ -221,10 +219,13 @@ sal_Bool SwTblField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const } return bRet; } -/*-----------------04.03.98 10:33------------------- +<<<<<<< local +BOOL SwTblField::PutValue( const uno::Any& rAny, USHORT nWhichId ) +======= --------------------------------------------------*/ sal_Bool SwTblField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) +>>>>>>> other { sal_Bool bRet = sal_True; String sTmp; diff --git a/sw/source/core/fields/usrfld.cxx b/sw/source/core/fields/usrfld.cxx index 8ecb54472f45..2d5249d73e01 100644 --- a/sw/source/core/fields/usrfld.cxx +++ b/sw/source/core/fields/usrfld.cxx @@ -232,12 +232,12 @@ const String& SwUserFieldType::GetName() const return aName; } -void SwUserFieldType::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwUserFieldType::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { if( !pOld && !pNew ) ChgValid( sal_False ); - SwModify::Modify( pOld, pNew ); + NotifyClients( pOld, pNew ); // und ggfs. am UserFeld haengende InputFelder updaten! GetDoc()->GetSysFldType( RES_INPUTFLD )->UpdateFlds(); } diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx index b433c17af7ed..d7087ed03dd2 100644 --- a/sw/source/core/frmedt/fecopy.cxx +++ b/sw/source/core/frmedt/fecopy.cxx @@ -268,7 +268,11 @@ sal_Bool lcl_SetAnchor( const SwPosition& rPos, const SwNode& rNd, SwFlyFrm* pFl { sal_Bool bRet = sal_True; rAnchor.SetAnchor( &rPos ); +<<<<<<< local + SwCntntFrm* pTmpFrm = rNd.GetCntntNode()->getLayoutFrm( rDestShell.GetLayout(), &rInsPt, 0, FALSE ); +======= SwCntntFrm* pTmpFrm = rNd.GetCntntNode()->GetFrm( &rInsPt, 0, sal_False ); +>>>>>>> other SwFlyFrm *pTmpFly = pTmpFrm->FindFlyFrm(); if( pTmpFly && bCheckFlyRecur && pFly->IsUpperOf( *pTmpFly ) ) { diff --git a/sw/source/core/frmedt/fedesc.cxx b/sw/source/core/frmedt/fedesc.cxx index 0c79bc4ed159..30737bb8209f 100644 --- a/sw/source/core/frmedt/fedesc.cxx +++ b/sw/source/core/frmedt/fedesc.cxx @@ -240,14 +240,23 @@ const SwPageDesc* SwFEShell::GetSelectedPageDescs() const FOREACHPAM_START(this) if( 0 != (pCNd = PCURCRSR->GetCntntNode() ) && +<<<<<<< local + 0 != ( pPtFrm = pCNd->getLayoutFrm( GetLayout(), &aNulPt, 0, FALSE )) ) +======= 0 != ( pPtFrm = pCNd->GetFrm( &aNulPt, 0, sal_False )) ) +>>>>>>> other pPtFrm = pPtFrm->FindPageFrm(); else pPtFrm = 0; if( PCURCRSR->HasMark() && +<<<<<<< local + 0 != (pCNd = PCURCRSR->GetCntntNode( FALSE ) ) && + 0 != ( pMkFrm = pCNd->getLayoutFrm( GetLayout(), &aNulPt, 0, FALSE )) ) +======= 0 != (pCNd = PCURCRSR->GetCntntNode( sal_False ) ) && 0 != ( pMkFrm = pCNd->GetFrm( &aNulPt, 0, sal_False )) ) +>>>>>>> other pMkFrm = pMkFrm->FindPageFrm(); else pMkFrm = pPtFrm; diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx index 13db6377c8e2..2e423dc11069 100644 --- a/sw/source/core/frmedt/fefly1.cxx +++ b/sw/source/core/frmedt/fefly1.cxx @@ -115,7 +115,7 @@ sal_Bool lcl_SetNewFlyPos( const SwNode& rNode, SwFmtAnchor& rAnchor, else { const SwCntntNode *pCntNd = rNode.GetCntntNode(); - const SwCntntFrm* pCFrm = pCntNd ? pCntNd->GetFrm( &rPt, 0, sal_False ) : 0; + const SwCntntFrm* pCFrm = pCntNd ? pCntNd->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), &rPt, 0, sal_False ) : 0; const SwPageFrm *pPg = pCFrm ? pCFrm->FindPageFrm() : 0; rAnchor.SetPageNum( pPg ? pPg->GetPhyPageNum() : 1 ); @@ -178,9 +178,9 @@ sal_Bool lcl_FindAnchorPos( SwDoc& rDoc, const Point& rPt, const SwFrm& rFrm, SwCrsrMoveState aState( MV_SETONLYTEXT ); SwPosition aPos( rDoc.GetNodes() ); aTmpPnt.X() -= 1; //nicht im Fly landen!! - rDoc.GetRootFrm()->GetCrsrOfst( &aPos, aTmpPnt, &aState ); + rDoc.GetCurrentLayout()->GetCrsrOfst( &aPos, aTmpPnt, &aState ); //swmod 071108//swmod 071225 pNewAnch = ::FindAnchor( - aPos.nNode.GetNode().GetCntntNode()->GetFrm( 0, 0, sal_False ), + aPos.nNode.GetNode().GetCntntNode()->getLayoutFrm( rFrm.getRootFrm(), 0, 0, sal_False ), aTmpPnt )->FindFlyFrm(); if( pNewAnch && &rFrm != pNewAnch && !pNewAnch->IsProtected() ) @@ -297,7 +297,7 @@ SwFlyFrm *SwFEShell::FindFlyFrm() const return 0; SdrObject *pO = rMrkList.GetMark( 0 )->GetMarkedSdrObj(); - return pO->ISA(SwVirtFlyDrawObj) ? ((SwVirtFlyDrawObj*)pO)->GetFlyFrm() : 0; + return ( pO && pO->ISA(SwVirtFlyDrawObj) ) ? ((SwVirtFlyDrawObj*)pO)->GetFlyFrm() : 0; } return 0; } @@ -361,7 +361,7 @@ const SwFrmFmt* SwFEShell::IsFlyInFly() // OD 01.07.2003 #108784# - determine text frame by left-top-corner // of object //pTxtFrm = aPos.nNode.GetNode().GetCntntNode()->GetFrm( 0, 0, sal_False ); - pTxtFrm = aPos.nNode.GetNode().GetCntntNode()->GetFrm( &aTmpPos, 0, sal_False ); + pTxtFrm = aPos.nNode.GetNode().GetCntntNode()->getLayoutFrm( GetLayout(), &aTmpPos, 0, sal_False ); } const SwFrm *pTmp = ::FindAnchor( pTxtFrm, aTmpPos ); const SwFlyFrm *pFly = pTmp->FindFlyFrm(); @@ -492,7 +492,11 @@ Point SwFEShell::FindAnchorPos( const Point& rAbsPos, sal_Bool bMoveIt ) SwPosition aPos( GetDoc()->GetNodes().GetEndOfExtras() ); Point aTmpPnt( rAbsPos ); GetLayout()->GetCrsrOfst( &aPos, aTmpPnt, &aState ); +<<<<<<< local + pTxtFrm = aPos.nNode.GetNode().GetCntntNode()->getLayoutFrm( GetLayout(),0,&aPos,FALSE ); +======= pTxtFrm = aPos.nNode.GetNode().GetCntntNode()->GetFrm(0,&aPos,sal_False ); +>>>>>>> other } const SwFrm *pNewAnch; if( pTxtFrm ) @@ -943,8 +947,8 @@ void SwFEShell::InsertDrawObj( SdrObject& rDrawObj, { SwCrsrMoveState aState( MV_SETONLYTEXT ); Point aTmpPt( rInsertPosition ); - getIDocumentLayoutAccess()->GetRootFrm()->GetCrsrOfst( aPam.GetPoint(), aTmpPt, &aState ); - const SwFrm* pFrm = aPam.GetCntntNode()->GetFrm( 0, 0, sal_False ); + GetLayout()->GetCrsrOfst( aPam.GetPoint(), aTmpPt, &aState ); + const SwFrm* pFrm = aPam.GetCntntNode()->getLayoutFrm( GetLayout(), 0, 0, sal_False ); const Point aRelPos( rInsertPosition.X() - pFrm->Frm().Left(), rInsertPosition.Y() - pFrm->Frm().Top() ); rDrawObj.SetRelativePos( aRelPos ); @@ -1012,7 +1016,7 @@ void SwFEShell::SetPageObjsNewPage( SvPtrarr& rFillArr, int nOffset ) SwFrmFmt* pFmt; long nNewPage; - SwRootFrm* pTmpRootFrm = getIDocumentLayoutAccess()->GetRootFrm(); + SwRootFrm* pTmpRootFrm = GetLayout();//swmod 080317 sal_uInt16 nMaxPage = pTmpRootFrm->GetPageNum(); sal_Bool bTmpAssert = sal_False; for( sal_uInt16 n = 0; n < rFillArr.Count(); ++n ) @@ -1780,7 +1784,7 @@ const SwFrmFmt* SwFEShell::GetFmtFromAnyObj( const Point& rPt ) const Point aPt( rPt ); GetLayout()->GetCrsrOfst( &aPos, aPt ); SwCntntNode *pNd = aPos.nNode.GetNode().GetCntntNode(); - SwFrm* pFrm = pNd->GetFrm( &rPt )->FindFlyFrm(); + SwFrm* pFrm = pNd->getLayoutFrm( GetLayout(), &rPt, 0, FALSE )->FindFlyFrm(); pRet = pFrm ? ((SwLayoutFrm*)pFrm)->GetFmt() : 0; } return pRet; @@ -1899,6 +1903,8 @@ ObjCntType SwFEShell::GetObjCntTypeOfSelection( SdrObject** ppObj ) const for( sal_uInt32 i = 0, nE = rMrkList.GetMarkCount(); i < nE; ++i ) { SdrObject* pObj = rMrkList.GetMark( i )->GetMarkedSdrObj(); + if( !pObj ) + continue; ObjCntType eTmp = GetObjCntType( *pObj ); if( !i ) { diff --git a/sw/source/core/frmedt/feflyole.cxx b/sw/source/core/frmedt/feflyole.cxx index 96373fffb57b..1138859bcc47 100644 --- a/sw/source/core/frmedt/feflyole.cxx +++ b/sw/source/core/frmedt/feflyole.cxx @@ -79,8 +79,13 @@ SwFlyFrm *SwFEShell::FindFlyFrm( const uno::Reference < embed::XEmbeddedObject > if ( pNd->IsOLENode() && ((SwOLENode*)pNd)->GetOLEObj().GetOleRef() == xObj ) { +<<<<<<< local + bExist = TRUE; + SwFrm *pFrm = ((SwOLENode*)pNd)->getLayoutFrm( GetLayout() ); +======= bExist = sal_True; SwFrm *pFrm = ((SwOLENode*)pNd)->GetFrm(); +>>>>>>> other if ( pFrm ) pFly = pFrm->FindFlyFrm(); break; diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx index d32db01ee73e..88a9983af88f 100644 --- a/sw/source/core/frmedt/feshview.cxx +++ b/sw/source/core/frmedt/feshview.cxx @@ -49,7 +49,6 @@ #include <editeng/protitem.hxx> #include <svx/svdpage.hxx> #include <svx/svdpagv.hxx> - #include <IDocumentSettingAccess.hxx> #include <cmdid.h> #include <poolfmt.hrc> // fuer InitFldTypes @@ -87,12 +86,10 @@ #include "txtfrm.hxx" #include "txatbase.hxx" #include "mdiexp.hxx" // fuer Update der Statuszeile bei drag -// OD 2004-05-24 #i28701# #include <sortedobjs.hxx> -// --> OD 2006-03-06 #125892# #include <HandleAnchorNodeChg.hxx> -// <-- #include <basegfx/polygon/b2dpolygon.hxx> +#include <switerator.hxx> #define SCROLLVAL 75 @@ -109,7 +106,7 @@ SwFlyFrm *GetFlyFromMarked( const SdrMarkList *pLst, ViewShell *pSh ) if ( pLst && pLst->GetMarkCount() == 1 ) { SdrObject *pO = pLst->GetMark( 0 )->GetMarkedSdrObj(); - if ( pO->ISA(SwVirtFlyDrawObj) ) + if ( pO && pO->ISA(SwVirtFlyDrawObj) ) return ((SwVirtFlyDrawObj*)pO)->GetFlyFrm(); } return 0; @@ -144,10 +141,6 @@ extern sal_Bool bNoInterrupt; // in swapp.cxx /************************************************************************* |* |* SwFEShell::SelectObj() -|* -|* Ersterstellung MA 16. Nov. 92 -|* Letzte Aenderung MA 22. Oct. 96 -|* *************************************************************************/ sal_Bool SwFEShell::SelectObj( const Point& rPt, sal_uInt8 nFlag, SdrObject *pObj ) @@ -270,9 +263,6 @@ sal_Bool SwFEShell::SelectObj( const Point& rPt, sal_uInt8 nFlag, SdrObject *pOb |* |* sal_Bool SwFEShell::MoveAnchor( sal_uInt16 nDir ) |* -|* Created AMA 05/28/2002 -|* Last modify AMA 05/30/2002 -|* |* Description: MoveAnchor( nDir ) looked for an another Anchor for |* the selected drawing object (or fly frame) in the given direction. |* An object "as character" doesn't moves anyway. @@ -544,9 +534,6 @@ sal_Bool SwFEShell::MoveAnchor( sal_uInt16 nDir ) |* |* SwFEShell::GetSelFrmType() |* -|* Ersterstellung MA 12. Jan. 93 -|* Letzte Aenderung JP 19.03.96 -|* *************************************************************************/ const SdrMarkList* SwFEShell::_GetMarkList() const @@ -602,7 +589,7 @@ bool SwFEShell::IsSelContainsControl() const // if we have one marked object, get the SdrObject and check // whether it contains a control const SdrObject* pSdrObject = pMarkList->GetMark( 0 )->GetMarkedSdrObj(); - bRet = ::CheckControlLayer( pSdrObject ); + bRet = pSdrObject && ::CheckControlLayer( pSdrObject ); } return bRet; } @@ -611,9 +598,6 @@ bool SwFEShell::IsSelContainsControl() const |* |* SwFEShell::Scroll() |* -|* Ersterstellung MA 20. Dec. 94 -|* Letzte Aenderung MA 27. Jul. 95 -|* *************************************************************************/ void SwFEShell::ScrollTo( const Point &rPt ) @@ -632,9 +616,6 @@ void SwFEShell::ScrollTo( const Point &rPt ) |* |* SwFEShell::SetDragMode() |* -|* Ersterstellung MA 30. Jan. 95 -|* Letzte Aenderung MA 30. Jan. 95 -|* *************************************************************************/ void SwFEShell::SetDragMode( sal_uInt16 eDragMode ) @@ -647,9 +628,6 @@ void SwFEShell::SetDragMode( sal_uInt16 eDragMode ) |* |* SwFEShell::BeginDrag() |* -|* Ersterstellung MS 10.06.92 -|* Letzte Aenderung MA 13. Mar. 96 -|* *************************************************************************/ long SwFEShell::BeginDrag( const Point* pPt, sal_Bool ) @@ -669,9 +647,6 @@ long SwFEShell::BeginDrag( const Point* pPt, sal_Bool ) |* |* SwFEShell::Drag() |* -|* Ersterstellung MS 10.06.92 -|* Letzte Aenderung MA 13. Mar. 96 -|* *************************************************************************/ long SwFEShell::Drag( const Point *pPt, sal_Bool ) @@ -692,9 +667,6 @@ long SwFEShell::Drag( const Point *pPt, sal_Bool ) |* |* SwFEShell::EndDrag() |* -|* Ersterstellung MS 10.06.92 -|* Letzte Aenderung MA 13. Mar. 96 -|* *************************************************************************/ long SwFEShell::EndDrag( const Point *, sal_Bool ) @@ -721,7 +693,7 @@ long SwFEShell::EndDrag( const Point *, sal_Bool ) //pView->ShowShownXor( GetOut() ); pView->EndDragObj(); - // JP 18.08.95: DrawUndo-Action auf FlyFrames werden nicht gespeichert + // DrawUndo-Action auf FlyFrames werden nicht gespeichert // Die Fly aendern das Flag GetDoc()->GetIDocumentUndoRedo().DoDrawUndo(true); ChgAnchor( 0, sal_True ); @@ -745,9 +717,6 @@ long SwFEShell::EndDrag( const Point *, sal_Bool ) |* |* SwFEShell::BreakDrag() |* -|* Ersterstellung OM 02. Okt. 95 -|* Letzte Aenderung OM 02. Okt. 95 -|* *************************************************************************/ void SwFEShell::BreakDrag() @@ -764,9 +733,6 @@ void SwFEShell::BreakDrag() |* |* Beschreibung Wenn ein Fly selektiert ist, zieht er den Crsr in |* den ersten CntntFrm -|* Ersterstellung MA 11. Dec. 92 -|* Letzte Aenderung MA 07. Oct. 96 -|* *************************************************************************/ const SwFrmFmt* SwFEShell::SelFlyGrabCrsr() @@ -778,8 +744,6 @@ const SwFrmFmt* SwFEShell::SelFlyGrabCrsr() if( pFly ) { - // --> OD 2004-06-11 #i28701# - no format here -// pFly->GetAnchorFrm()->Calc(); SwCntntFrm *pCFrm = pFly->ContainsCntnt(); if ( pCFrm ) { @@ -812,9 +776,6 @@ const SwFrmFmt* SwFEShell::SelFlyGrabCrsr() |* |* Beschreibung Selektion nach oben/unten (Z-Order) |* -|* Ersterstellung MA 05. Nov. 92 -|* Letzte Aenderung MA 03. Jun. 96 -|* *************************************************************************/ void lcl_NotifyNeighbours( const SdrMarkList *pLst ) @@ -944,9 +905,6 @@ void SwFEShell::SelectionToBottom( sal_Bool bBottom ) |* |* Beschreibung Objekt ueber/unter dem Dokument? |* 2 Controls, 1 Heaven, 0 Hell, -1 Uneindeutig -|* Ersterstellung MA 20. Dec. 94 -|* Letzte Aenderung MA 20. Dec. 94 -|* *************************************************************************/ short SwFEShell::GetLayerId() const @@ -958,6 +916,8 @@ short SwFEShell::GetLayerId() const for ( sal_uInt16 i = 0; i < rMrkList.GetMarkCount(); ++i ) { const SdrObject *pObj = rMrkList.GetMark( i )->GetMarkedSdrObj(); + if( !pObj ) + continue; if ( nRet == SHRT_MAX ) nRet = pObj->GetLayer(); else if ( nRet != pObj->GetLayer() ) @@ -977,8 +937,6 @@ short SwFEShell::GetLayerId() const |* SwFEShell::SelectionToHeaven(), SelectionToHell() |* |* Beschreibung Objekt ueber/unter dem Dokument -|* Ersterstellung MA 20. Dec. 94 -|* Letzte Aenderung AMA 04. Jun. 98 |* *************************************************************************/ // OD 25.06.2003 #108784# @@ -995,6 +953,8 @@ void SwFEShell::ChangeOpaque( SdrLayerID nLayerId ) for ( sal_uInt16 i = 0; i < rMrkList.GetMarkCount(); ++i ) { SdrObject* pObj = rMrkList.GetMark( i )->GetMarkedSdrObj(); + if( !pObj ) + continue; // OD 21.08.2003 #i18447# - no change of layer for controls // or group objects containing controls. // --> OD 2010-09-14 #i113730# @@ -1036,9 +996,6 @@ void SwFEShell::SelectionToHell() |* |* SwFEShell::IsObjSelected(), IsFrmSelected() |* -|* Ersterstellung MA 16. Nov. 92 -|* Letzte Aenderung MA 17. Jan. 95 -|* *************************************************************************/ sal_uInt16 SwFEShell::IsObjSelected() const @@ -1071,9 +1028,6 @@ sal_Bool SwFEShell::IsObjSelected( const SdrObject& rObj ) const |* |* SwFEShell::EndTextEdit() |* -|* Ersterstellung MA 19. Feb. 96 -|* Letzte Aenderung MA 19. Feb. 96 -|* *************************************************************************/ void SwFEShell::EndTextEdit() @@ -1132,9 +1086,6 @@ void SwFEShell::EndTextEdit() |* |* SwFEShell::IsInsideSelectedObj() |* -|* Ersterstellung MA 16. Nov. 92 -|* Letzte Aenderung MA 08. Nov. 96 -|* *************************************************************************/ int SwFEShell::IsInsideSelectedObj( const Point &rPt ) @@ -1156,9 +1107,6 @@ int SwFEShell::IsInsideSelectedObj( const Point &rPt ) |* |* SwFEShell::IsObjSelectable() |* -|* Ersterstellung MA 16. Nov. 92 -|* Letzte Aenderung MA 02. Feb. 95 -|* *************************************************************************/ bool SwFEShell::IsObjSelectable( const Point& rPt ) @@ -1290,11 +1238,9 @@ sal_Bool SwFEShell::ShouldObjectBeSelected(const Point& rPt) |* |* Beschreibung Wenn ein Obj selektiert ist, gehen wir von dessen |* TopLeft aus, andernfalls von der Mitte des aktuellen CharRects. -|* Ersterstellung MA 01. Jun. 95 -|* Letzte Aenderung MA 30. Apr. 96 |* *************************************************************************/ -/* -----------------23.09.98 10:29------------------- +/* ------------------------------------ * Beinhaltet das Objekt ein Control oder Gruppen, * die nur aus Controls bestehen * --------------------------------------------------*/ @@ -1541,9 +1487,6 @@ sal_Bool SwFEShell::GotoObj( sal_Bool bNext, sal_uInt16 /*GOTOOBJ_...*/ eType ) |* |* SwFEShell::BeginCreate() |* -|* Ersterstellung MA 20. Dec. 94 -|* Letzte Aenderung MA 21. Mar. 95 -|* *************************************************************************/ sal_Bool SwFEShell::BeginCreate( sal_uInt16 /*SdrObjKind ?*/ eSdrObjectKind, const Point &rPos ) @@ -1592,9 +1535,6 @@ sal_Bool SwFEShell::BeginCreate( sal_uInt16 /*SdrObjKind ?*/ eSdrObjectKind, sa |* |* SwFEShell::MoveCreate() |* -|* Ersterstellung MA 20. Dec. 94 -|* Letzte Aenderung MA 24. Jan. 95 -|* *************************************************************************/ void SwFEShell::MoveCreate( const Point &rPos ) @@ -1612,14 +1552,11 @@ void SwFEShell::MoveCreate( const Point &rPos ) |* |* SwFEShell::EndCreate(), ImpEndCreate() |* -|* Ersterstellung MA 20. Dec. 94 -|* Letzte Aenderung MA 14. Oct. 96 -|* *************************************************************************/ sal_Bool SwFEShell::EndCreate( sal_uInt16 eSdrCreateCmd ) { - // JP 18.08.95: Damit das Undo-Object aus der DrawEngine nicht bei uns + // Damit das Undo-Object aus der DrawEngine nicht bei uns // gespeichert wird, (wir erzeugen ein eigenes Undo-Object!) hier kurz // das Undo abschalten ASSERT( Imp()->HasDrawView(), "EndCreate without DrawView?" ); @@ -1655,7 +1592,7 @@ sal_Bool SwFEShell::ImpEndCreate() if( rSdrObj.GetSnapRect().IsEmpty() ) { - //JP 10.04.95: das Object vergessen wir lieber, fuerht nur + // das Object vergessen wir lieber, fuerht nur // zu Problemen Imp()->GetDrawView()->DeleteMarked(); Imp()->GetDrawView()->UnmarkAll(); @@ -1697,12 +1634,12 @@ sal_Bool SwFEShell::ImpEndCreate() SwPosition aPos( GetDoc()->GetNodes() ); SwCrsrMoveState aState( MV_SETONLYTEXT ); Point aPoint( aPt.X(), aPt.Y() + rBound.GetHeight()/2 ); - getIDocumentLayoutAccess()->GetRootFrm()->GetCrsrOfst( &aPos, aPoint, &aState ); + GetLayout()->GetCrsrOfst( &aPos, aPoint, &aState ); //swmod 080317 - //JP 22.01.99: Zeichenbindung ist im ReadnOnly-Inhalt nicht erlaubt + //Zeichenbindung ist im ReadnOnly-Inhalt nicht erlaubt if( !aPos.nNode.GetNode().IsProtect() ) { - pAnch = aPos.nNode.GetNode().GetCntntNode()->GetFrm( &aPoint, &aPos ); + pAnch = aPos.nNode.GetNode().GetCntntNode()->getLayoutFrm( GetLayout(), &aPoint, &aPos ); SwRect aTmp; pAnch->GetCharRect( aTmp, aPos ); @@ -1744,13 +1681,17 @@ sal_Bool SwFEShell::ImpEndCreate() SwPosition aPos( GetDoc()->GetNodes() ); GetLayout()->GetCrsrOfst( &aPos, aPoint, &aState ); - //JP 22.01.99: nicht in ReadnOnly-Inhalt setzen + //nicht in ReadnOnly-Inhalt setzen if( aPos.nNode.GetNode().IsProtect() ) // dann darf er nur seitengebunden sein. Oder sollte man // die naechste nicht READONLY Position suchen? bAtPage = true; +<<<<<<< local + pAnch = aPos.nNode.GetNode().GetCntntNode()->getLayoutFrm( GetLayout(), &aPoint, 0, FALSE ); +======= pAnch = aPos.nNode.GetNode().GetCntntNode()->GetFrm( &aPoint, 0, sal_False ); +>>>>>>> other if( !bAtPage ) { @@ -1783,7 +1724,7 @@ sal_Bool SwFEShell::ImpEndCreate() pAnch = ::FindAnchor( pPage, aPt, bBodyOnly ); aPos.nNode = *((SwCntntFrm*)pAnch)->GetNode(); - //JP 22.01.99: nicht in ReadnOnly-Inhalt setzen + //nicht in ReadnOnly-Inhalt setzen if( aPos.nNode.GetNode().IsProtect() ) // dann darf er nur seitengebunden sein. Oder sollte man // die naechste nicht READONLY Position suchen? @@ -1992,9 +1933,6 @@ sal_Bool SwFEShell::ImpEndCreate() |* |* SwFEShell::BreakCreate() |* -|* Ersterstellung MA 20. Dec. 94 -|* Letzte Aenderung MA 09. Jan. 95 -|* *************************************************************************/ void SwFEShell::BreakCreate() @@ -2008,9 +1946,6 @@ void SwFEShell::BreakCreate() |* |* SwFEShell::IsDrawCreate() |* -|* Ersterstellung OM 16. Mar. 95 -|* Letzte Aenderung OM 16. Mar. 95 -|* *************************************************************************/ sal_Bool SwFEShell::IsDrawCreate() const @@ -2022,9 +1957,6 @@ sal_Bool SwFEShell::IsDrawCreate() const |* |* SwFEShell::BeginMark() |* -|* Ersterstellung OM 07. Feb. 95 -|* Letzte Aenderung OM 07. Feb. 95 -|* *************************************************************************/ sal_Bool SwFEShell::BeginMark( const Point &rPos ) @@ -2049,9 +1981,6 @@ sal_Bool SwFEShell::BeginMark( const Point &rPos ) |* |* SwFEShell::MoveMark() |* -|* Ersterstellung OM 07. Feb. 95 -|* Letzte Aenderung OM 07. Feb. 95 -|* *************************************************************************/ void SwFEShell::MoveMark( const Point &rPos ) @@ -2077,9 +2006,6 @@ void SwFEShell::MoveMark( const Point &rPos ) |* |* SwFEShell::EndMark() |* -|* Ersterstellung OM 07. Feb. 95 -|* Letzte Aenderung MA 08. Feb. 95 -|* *************************************************************************/ sal_Bool SwFEShell::EndMark() @@ -2145,9 +2071,6 @@ sal_Bool SwFEShell::EndMark() |* |* SwFEShell::BreakSelect() |* -|* Ersterstellung OM 07. Feb. 95 -|* Letzte Aenderung OM 07. Feb. 95 -|* *************************************************************************/ void SwFEShell::BreakMark() @@ -2160,9 +2083,6 @@ void SwFEShell::BreakMark() |* |* SwFEShell::GetAnchorId() |* -|* Ersterstellung MA 30. Jan. 95 -|* Letzte Aenderung MA 30. Jan. 95 -|* *************************************************************************/ short SwFEShell::GetAnchorId() const @@ -2199,9 +2119,6 @@ short SwFEShell::GetAnchorId() const |* |* SwFEShell::ChgAnchor() |* -|* Ersterstellung MA 10. Jan. 95 -|* Letzte Aenderung MA 30. May. 96 -|* *************************************************************************/ void SwFEShell::ChgAnchor( int eAnchorId, sal_Bool bSameOnly, sal_Bool bPosCorr ) @@ -2226,9 +2143,6 @@ void SwFEShell::ChgAnchor( int eAnchorId, sal_Bool bSameOnly, sal_Bool bPosCorr |* |* SwFEShell::DelSelectedObj() |* -|* Ersterstellung MA 03. Nov. 92 -|* Letzte Aenderung MA 14. Nov. 95 -|* *************************************************************************/ void SwFEShell::DelSelectedObj() @@ -2249,8 +2163,6 @@ void SwFEShell::DelSelectedObj() |* |* Beschreibung Fuer die Statuszeile zum Erfragen der aktuellen |* Verhaeltnisse -|* Ersterstellung MA 25. Apr. 95 -|* Letzte Aenderung MA 25. Apr. 95 |* *************************************************************************/ @@ -2308,9 +2220,6 @@ Point SwFEShell::GetObjAbsPos() const |* |* SwFEShell::IsGroupSelected() |* -|* Ersterstellung MA 30. Jan. 95 -|* Letzte Aenderung MA 30. May. 96 -|* *************************************************************************/ sal_Bool SwFEShell::IsGroupSelected() @@ -2421,8 +2330,6 @@ bool SwFEShell::IsGroupAllowed() const |* |* Beschreibung Die Gruppe bekommt den Anker und das Contactobjekt |* des ersten in der Selektion -|* Ersterstellung MA 30. Jan. 95 -|* Letzte Aenderung MA 23. Apr. 95 |* *************************************************************************/ @@ -2446,8 +2353,6 @@ void SwFEShell::GroupSelection() |* |* Beschreibung Die Einzelobjekte bekommen eine Kopie vom Anker und |* Contactobjekt der Gruppe. -|* Ersterstellung MA 30. Jan. 95 -|* Letzte Aenderung MA 01. Feb. 95 |* *************************************************************************/ @@ -2469,9 +2374,6 @@ void SwFEShell::UnGroupSelection() |* |* SwFEShell::MirrorSelection() |* -|* Ersterstellung MA 06. Aug. 95 -|* Letzte Aenderung MA 06. Aug. 95 -|* *************************************************************************/ void SwFEShell::MirrorSelection( sal_Bool bHorizontal ) @@ -2503,14 +2405,12 @@ static sal_uInt8 __READONLY_DATA aChkArr[ 4 ] = { { SET_CURR_SHELL( this ); - SwClientIter aIter( *(SwModify*)pFlyFmt ); - SwFlyFrm* pFrm = (SwFlyFrm*)aIter.First( TYPE( SwFlyFrm )); + SwFlyFrm* pFrm = SwIterator<SwFlyFrm,SwFmt>::FirstElement( *pFlyFmt ); if( pFrm ) { - ASSERT( pFrm->IsFlyFrm(), "Wrong FrmType" ); if( bSelFrm ) { - SelectObj( pFrm->Frm().Pos(), 0, ((SwFlyFrm*)pFrm)->GetVirtDrawObj() ); + SelectObj( pFrm->Frm().Pos(), 0, pFrm->GetVirtDrawObj() ); if( !ActionPend() ) MakeVisible( pFrm->Frm() ); } @@ -2809,9 +2709,7 @@ int SwFEShell::Chainable( SwRect &rRect, const SwFrmFmt &rSource, } return SW_CHAIN_NOT_FOUND; } -/* -----------------------------09.08.2002 07:40------------------------------ - ---------------------------------------------------------------------------*/ int SwFEShell::Chain( SwFrmFmt &rSource, const SwFrmFmt &rDest ) { return GetDoc()->Chain(rSource, rDest); @@ -2920,32 +2818,32 @@ long SwFEShell::GetSectionWidth( SwFmt& rFmt ) const do { // Ist es der Gewuenschte? - if( pSect->GetRegisteredIn() == &rFmt ) + if( pSect->KnowsFormat( rFmt ) ) return pSect->Frm().Width(); // fuer geschachtelte Bereiche pSect = pSect->GetUpper()->FindSctFrm(); } while( pSect ); } - SwClientIter aIter( rFmt ); - SwClient *pLast = aIter.GoStart(); - while ( pLast ) - { - if ( pLast->IsA( TYPE(SwFrm) ) ) - { - SwSectionFrm* pSct = (SwSectionFrm*)pLast; + SwIterator<SwSectionFrm,SwFmt> aIter( rFmt ); + for ( SwSectionFrm* pSct = aIter.First(); pFrm; pFrm = aIter.Next() ) if( !pSct->IsFollow() ) return pSct->Frm().Width(); - } - pLast = aIter++; - } return 0; } +<<<<<<< local +======= /* -----------------------------2002/06/24 15:07------------------------------ +>>>>>>> other +<<<<<<< local +void SwFEShell::CreateDefaultShape( UINT16 /*SdrObjKind ?*/ eSdrObjectKind, const Rectangle& rRect, + USHORT nSlotId) +======= ---------------------------------------------------------------------------*/ void SwFEShell::CreateDefaultShape( sal_uInt16 /*SdrObjKind ?*/ eSdrObjectKind, const Rectangle& rRect, sal_uInt16 nSlotId) +>>>>>>> other { SdrView* pDrawView = GetDrawView(); SdrModel* pDrawModel = pDrawView->GetModel(); @@ -3230,9 +3128,7 @@ bool SwFEShell::IsShapeDefaultHoriTextDirR2L() const return bRet; } -/* -----------------20.03.2003 14:35----------------- - --------------------------------------------------*/ Point SwFEShell::GetRelativePagePosition(const Point& rDocPos) { Point aRet(-1, -1); diff --git a/sw/source/core/frmedt/fetab.cxx b/sw/source/core/frmedt/fetab.cxx index fe05bc4c4dcf..26dc11c4b4f1 100644 --- a/sw/source/core/frmedt/fetab.cxx +++ b/sw/source/core/frmedt/fetab.cxx @@ -1167,7 +1167,11 @@ sal_uInt16 lcl_GetRowNumber( const SwPosition& rPos ) const SwCntntFrm *pFrm; if( 0 != ( pNd = rPos.nNode.GetNode().GetCntntNode() )) +<<<<<<< local + pFrm = pNd->getLayoutFrm( pNd->GetDoc()->GetCurrentLayout(), &aTmpPt, &rPos, FALSE ); +======= pFrm = pNd->GetFrm( &aTmpPt, &rPos, sal_False ); +>>>>>>> other else pFrm = 0; diff --git a/sw/source/core/frmedt/fews.cxx b/sw/source/core/frmedt/fews.cxx index 965d7c4ffe87..68105ee81b26 100644 --- a/sw/source/core/frmedt/fews.cxx +++ b/sw/source/core/frmedt/fews.cxx @@ -124,10 +124,17 @@ const SwRect& SwFEShell::GetAnyCurRect( CurRectType eType, const Point* pPt, Point aPt( *pPt ); GetLayout()->GetCrsrOfst( &aPos, aPt ); SwCntntNode *pNd = aPos.nNode.GetNode().GetCntntNode(); - pFrm = pNd->GetFrm( pPt ); + pFrm = pNd->getLayoutFrm( GetLayout(), pPt ); } else + { + const bool bOldCallbackActionEnabled = GetLayout()->IsCallbackActionEnabled(); + if( bOldCallbackActionEnabled ) + GetLayout()->SetCallbackActionEnabled( FALSE ); pFrm = GetCurrFrm(); + if( bOldCallbackActionEnabled ) + GetLayout()->SetCallbackActionEnabled( TRUE ); + } } if( !pFrm ) @@ -264,7 +271,7 @@ sal_uInt16 SwFEShell::GetFrmType( const Point *pPt, sal_Bool bStopAtFly ) const Point aPt( *pPt ); GetLayout()->GetCrsrOfst( &aPos, aPt ); SwCntntNode *pNd = aPos.nNode.GetNode().GetCntntNode(); - pFrm = pNd->GetFrm( pPt ); + pFrm = pNd->getLayoutFrm( GetLayout(), pPt ); } else pFrm = GetCurrFrm( sal_False ); @@ -422,8 +429,13 @@ void SwFEShell::SetNewPageOffset( sal_uInt16 nOffset ) void SwFEShell::SetPageOffset( sal_uInt16 nOffset ) { +<<<<<<< local + const SwPageFrm *pPage = GetCurrFrm( FALSE )->FindPageFrm(); + const SwRootFrm* pDocLayout = GetLayout(); +======= const SwPageFrm *pPage = GetCurrFrm( sal_False )->FindPageFrm(); const SwRootFrm* pLayout = GetLayout(); +>>>>>>> other while ( pPage ) { const SwFrm *pFlow = pPage->FindFirstBodyCntnt(); @@ -434,7 +446,11 @@ void SwFEShell::SetPageOffset( sal_uInt16 nOffset ) const SwFmtPageDesc& rPgDesc = pFlow->GetAttrSet()->GetPageDesc(); if ( rPgDesc.GetNumOffset() ) { +<<<<<<< local + pDocLayout->SetVirtPageNum( TRUE ); +======= pLayout->SetVirtPageNum( sal_True ); +>>>>>>> other lcl_SetAPageOffset( nOffset, (SwPageFrm*)pPage, this ); break; } @@ -521,6 +537,7 @@ void SwFEShell::InsertLabel( const SwLabelType eType, const String &rTxt, const for ( sal_uInt16 i = 0; i < rMrkList.GetMarkCount(); ++i ) { SdrObject* pDrawObj = rMrkList.GetMark(i)->GetMarkedSdrObj(); + if( pDrawObj ) aDrawObjs.push_back( pDrawObj ); } } diff --git a/sw/source/core/frmedt/tblsel.cxx b/sw/source/core/frmedt/tblsel.cxx index 4006e30922e8..a1e38d87f194 100644 --- a/sw/source/core/frmedt/tblsel.cxx +++ b/sw/source/core/frmedt/tblsel.cxx @@ -54,9 +54,9 @@ #include <swtblfmt.hxx> #include <UndoTable.hxx> #include <mvsave.hxx> -// OD 26.08.2003 #i18103# #include <sectfrm.hxx> #include <frmtool.hxx> +#include <switerator.hxx> #include <deque> //siehe auch swtable.cxx @@ -196,7 +196,7 @@ void GetTblSelCrs( const SwTableCursor& rTblCrsr, SwSelBoxes& rBoxes ) if( rTblCrsr.IsChgd() || !rTblCrsr.GetBoxesCount() ) { SwTableCursor* pTCrsr = (SwTableCursor*)&rTblCrsr; - pTCrsr->GetDoc()->GetRootFrm()->MakeTblCrsrs( *pTCrsr ); + pTCrsr->GetDoc()->GetCurrentLayout()->MakeTblCrsrs( *pTCrsr ); //swmod 080218 } if( rTblCrsr.GetBoxesCount() ) @@ -291,10 +291,15 @@ void GetTblSel( const SwCursor& rCrsr, SwSelBoxes& rBoxes, } const SwCntntNode *pCntNd = rCrsr.GetCntntNode(); const SwLayoutFrm *pStart = pCntNd ? +<<<<<<< local + pCntNd->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), &aPtPos )->GetUpper() : 0; + pCntNd = rCrsr.GetCntntNode(FALSE); +======= pCntNd->GetFrm( &aPtPos )->GetUpper() : 0; pCntNd = rCrsr.GetCntntNode(sal_False); +>>>>>>> other const SwLayoutFrm *pEnd = pCntNd ? - pCntNd->GetFrm( &aMkPos )->GetUpper() : 0; + pCntNd->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), &aMkPos )->GetUpper() : 0; if( pStart && pEnd ) GetTblSel( pStart, pEnd, rBoxes, 0, eSearchType ); } @@ -503,10 +508,15 @@ sal_Bool ChkChartSel( const SwNode& rSttNd, const SwNode& rEndNd, // OD 07.11.2003 #i22135# - Also the content of the table could be // invisible - e.g. in a hidden section // Robust: check, if content was found (e.g. empty table cells) +<<<<<<< local + if ( !pCNd || pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout() ) == NULL ) + return FALSE; +======= if ( !pCNd || pCNd->GetFrm() == NULL ) return sal_False; +>>>>>>> other - const SwLayoutFrm *pStart = pCNd ? pCNd->GetFrm( &aNullPos )->GetUpper() : 0; + const SwLayoutFrm *pStart = pCNd ? pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout(), &aNullPos )->GetUpper() : 0; ASSERT( pStart, "ohne Frame geht gar nichts" ); aIdx = rEndNd; @@ -515,12 +525,12 @@ sal_Bool ChkChartSel( const SwNode& rSttNd, const SwNode& rEndNd, pCNd = aIdx.GetNodes().GoNextSection( &aIdx, sal_False, sal_False ); // OD 07.11.2003 #i22135# - Robust: check, if content was found and if it's visible - if ( !pCNd || pCNd->GetFrm() == NULL ) + if ( !pCNd || pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout() ) == NULL ) { return sal_False; } - const SwLayoutFrm *pEnd = pCNd ? pCNd->GetFrm( &aNullPos )->GetUpper() : 0; + const SwLayoutFrm *pEnd = pCNd ? pCNd->getLayoutFrm( pCNd->GetDoc()->GetCurrentLayout(), &aNullPos )->GetUpper() : 0; ASSERT( pEnd, "ohne Frame geht gar nichts" ); @@ -775,9 +785,13 @@ sal_Bool GetAutoSumSel( const SwCrsrShell& rShell, SwCellFrms& rBoxes ) if ( rShell.IsTableMode() ) pCrsr = rShell.pTblCrsr; - const SwLayoutFrm *pStart = pCrsr->GetCntntNode()->GetFrm( + const SwLayoutFrm *pStart = pCrsr->GetCntntNode()->getLayoutFrm( rShell.GetLayout(), &pCrsr->GetPtPos() )->GetUpper(), +<<<<<<< local + *pEnd = pCrsr->GetCntntNode(FALSE)->getLayoutFrm( rShell.GetLayout(), +======= *pEnd = pCrsr->GetCntntNode(sal_False)->GetFrm( +>>>>>>> other &pCrsr->GetMkPos() )->GetUpper(); const SwLayoutFrm* pSttCell = pStart; @@ -1015,9 +1029,18 @@ void GetMergeSel( const SwPaM& rPam, SwSelBoxes& rBoxes, // das die 1. Headline mit drin ist. // Point aPt( rShell.GetCharRect().Pos() ); Point aPt( 0, 0 ); +<<<<<<< local + + const SwCntntNode* pCntNd = rPam.GetCntntNode(); + const SwLayoutFrm *pStart = pCntNd->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), + &aPt )->GetUpper(); + pCntNd = rPam.GetCntntNode(FALSE); + const SwLayoutFrm *pEnd = rPam.GetCntntNode(FALSE)->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), +======= const SwLayoutFrm *pStart = rPam.GetCntntNode()->GetFrm( &aPt )->GetUpper(), *pEnd = rPam.GetCntntNode(sal_False)->GetFrm( +>>>>>>> other &aPt )->GetUpper(); SwSelUnions aUnions; @@ -1531,9 +1554,17 @@ sal_uInt16 CheckMergeSel( const SwPaM& rPam ) // richtig. Warum nicht Point 0,0 benutzen? Dann ist garantiert, // das die 1. Headline mit drin ist. Point aPt; +<<<<<<< local + const SwCntntNode* pCntNd = rPam.GetCntntNode(); + const SwLayoutFrm *pStart = pCntNd->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), + &aPt )->GetUpper(); + pCntNd = rPam.GetCntntNode(FALSE); + const SwLayoutFrm *pEnd = rPam.GetCntntNode(FALSE)->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), +======= const SwLayoutFrm *pStart = rPam.GetCntntNode()->GetFrm( &aPt )->GetUpper(), *pEnd = rPam.GetCntntNode(sal_False)->GetFrm( +>>>>>>> other &aPt )->GetUpper(); GetTblSel( pStart, pEnd, aBoxes, 0 ); return CheckMergeSel( aBoxes ); @@ -1608,31 +1639,6 @@ SwTwips lcl_CalcWish( const SwLayoutFrm *pCell, long nWish, return nRet; } -/* MA: 20. Sep. 93 wird nicht mehr gebraucht. -static const SwLayoutFrm *GetPrevCell( const SwLayoutFrm *pCell ) -{ - const SwLayoutFrm *pLay = pCell->GetPrevLayoutLeaf(); - if ( pLay && pLay->IsLayoutFrm() && !pLay->IsTab() ) - { - //GetPrevLayoutLeaf() liefert ggf. auch die Umgebung einer Tab zurueck - //(naehmlich genau dann, wenn die Zelle noch Vorgaenger hat). - const SwFrm *pFrm = pLay->Lower(); - while ( pFrm->GetNext() ) - pFrm = pFrm->GetNext(); - pLay = pFrm->IsTabFrm() ? (SwLayoutFrm*)pFrm : 0; - } - if ( pLay && pLay->IsTabFrm() ) - { - //GetPrevLayoutLeaf() liefert ggf. auch Tabellen zurueck die letzte - //Zelle dieser Tabelle ist das das gesuchte Blatt. - pLay = ((SwTabFrm*)pLay)->FindLastCntnt()->GetUpper(); - while ( !pLay->IsCellFrm() ) - pLay = pLay->GetUpper(); - } - return pLay; -} -*/ - void lcl_FindStartEndRow( const SwLayoutFrm *&rpStart, const SwLayoutFrm *&rpEnd, const int bChkProtected ) @@ -2088,9 +2094,18 @@ sal_Bool CheckSplitCells( const SwCursor& rCrsr, sal_uInt16 nDiv, aPtPos = pShCrsr->GetPtPos(); aMkPos = pShCrsr->GetMkPos(); } +<<<<<<< local + + const SwCntntNode* pCntNd = rCrsr.GetCntntNode(); + const SwLayoutFrm *pStart = pCntNd->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), + &aPtPos )->GetUpper(); + pCntNd = rCrsr.GetCntntNode(FALSE); + const SwLayoutFrm *pEnd = rCrsr.GetCntntNode(FALSE)->getLayoutFrm( pCntNd->GetDoc()->GetCurrentLayout(), +======= const SwLayoutFrm *pStart = rCrsr.GetCntntNode()->GetFrm( &aPtPos )->GetUpper(), *pEnd = rCrsr.GetCntntNode(sal_False)->GetFrm( +>>>>>>> other &aMkPos )->GetUpper(); SWRECTFN( pStart->GetUpper() ) @@ -2149,7 +2164,7 @@ sal_Bool CheckSplitCells( const SwCursor& rCrsr, sal_uInt16 nDiv, void lcl_InsertRow( SwTableLine &rLine, SwLayoutFrm *pUpper, SwFrm *pSibling ) { - SwRowFrm *pRow = new SwRowFrm( rLine ); + SwRowFrm *pRow = new SwRowFrm( rLine, pUpper ); if ( pUpper->IsTabFrm() && ((SwTabFrm*)pUpper)->IsFollow() ) { SwTabFrm* pTabFrm = (SwTabFrm*)pUpper; @@ -2307,14 +2322,10 @@ void _FndBox::DelFrms( SwTable &rTable ) for ( sal_uInt16 i = nStPos; i <= nEndPos; ++i) { SwFrmFmt *pFmt = rTable.GetTabLines()[i]->GetFrmFmt(); - SwClientIter aIter( *pFmt ); - SwClient* pLast = aIter.GoStart(); - if( pLast ) + SwIterator<SwRowFrm,SwFmt> aIter( *pFmt ); + for ( SwRowFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { - do { - SwFrm *pFrm = PTR_CAST( SwFrm, pLast ); - if ( pFrm && - ((SwRowFrm*)pFrm)->GetTabLine() == rTable.GetTabLines()[i] ) + if ( pFrm->GetTabLine() == rTable.GetTabLines()[i] ) { sal_Bool bDel = sal_True; SwTabFrm *pUp = !pFrm->GetPrev() && !pFrm->GetNext() ? @@ -2402,7 +2413,6 @@ void _FndBox::DelFrms( SwTable &rTable ) delete pFrm; } } - } while( 0 != ( pLast = aIter++ )); } } } @@ -2436,8 +2446,7 @@ void lcl_UpdateRepeatedHeadlines( SwTabFrm& rTabFrm, bool bCalcLowers ) const sal_uInt16 nRepeat = rTable.GetRowsToRepeat(); for ( sal_uInt16 nIdx = 0; nIdx < nRepeat; ++nIdx ) { - SwRowFrm* pHeadline = new SwRowFrm( - *rTable.GetTabLines()[ nIdx ] ); + SwRowFrm* pHeadline = new SwRowFrm( *rTable.GetTabLines()[ nIdx ], &rTabFrm ); pHeadline->SetRepeatedHeadline( true ); pHeadline->Paste( &rTabFrm, pLower ); pHeadline->RegistFlys(); @@ -2471,33 +2480,38 @@ void _FndBox::MakeFrms( SwTable &rTable ) --nEndPos; } //Jetzt die grosse Einfuegeoperation fuer alle Tabllen. - SwClientIter aTabIter( *rTable.GetFrmFmt() ); - for ( SwTabFrm *pTable = (SwTabFrm*)aTabIter.First( TYPE(SwFrm) ); pTable; - pTable = (SwTabFrm*)aTabIter.Next() ) + SwIterator<SwTabFrm,SwFmt> aTabIter( *rTable.GetFrmFmt() ); + for ( SwTabFrm *pTable = aTabIter.First(); pTable; pTable = aTabIter.Next() ) { if ( !pTable->IsFollow() ) { - SwFrm *pSibling = 0; + SwRowFrm *pSibling = 0; SwFrm *pUpperFrm = 0; int i; for ( i = rTable.GetTabLines().Count()-1; i >= 0 && !pSibling; --i ) { SwTableLine *pLine = pLineBehind ? pLineBehind : +<<<<<<< local + rTable.GetTabLines()[static_cast<USHORT>(i)]; + SwIterator<SwRowFrm,SwFmt> aIter( *pLine->GetFrmFmt() ); + pSibling = aIter.First(); +======= rTable.GetTabLines()[static_cast<sal_uInt16>(i)]; SwClientIter aIter( *pLine->GetFrmFmt() ); pSibling = (SwFrm*)aIter.First( TYPE(SwFrm) ); +>>>>>>> other while ( pSibling && ( - static_cast<SwRowFrm*>(pSibling)->GetTabLine() != pLine || + pSibling->GetTabLine() != pLine || !lcl_IsLineOfTblFrm( *pTable, *pSibling ) || - static_cast<SwRowFrm*>(pSibling)->IsRepeatedHeadline() || + pSibling->IsRepeatedHeadline() || // --> FME 2005-08-24 #i53647# If !pLineBehind, // IsInSplitTableRow() should be checked. ( pLineBehind && pSibling->IsInFollowFlowRow() ) || (!pLineBehind && pSibling->IsInSplitTableRow() ) ) ) // <-- { - pSibling = (SwFrm*)aIter.Next(); + pSibling = aIter.Next(); } } if ( pSibling ) @@ -2545,32 +2559,31 @@ void _FndBox::MakeNewFrms( SwTable &rTable, const sal_uInt16 nNumber, (nBfPos != USHRT_MAX ? nBfPos + 1 : 0)) / (nNumber + 1); //Den Master-TabFrm suchen - SwClientIter aTabIter( *rTable.GetFrmFmt() ); + SwIterator<SwTabFrm,SwFmt> aTabIter( *rTable.GetFrmFmt() ); SwTabFrm *pTable; - for ( pTable = (SwTabFrm*)aTabIter.First( TYPE(SwFrm) ); pTable; - pTable = (SwTabFrm*)aTabIter.Next() ) + for ( pTable = aTabIter.First(); pTable; pTable = aTabIter.Next() ) { if( !pTable->IsFollow() ) { - SwFrm *pSibling = 0; + SwRowFrm* pSibling = 0; SwLayoutFrm *pUpperFrm = 0; if ( bBehind ) { if ( pLineBehind ) { - SwClientIter aIter( *pLineBehind->GetFrmFmt() ); - pSibling = (SwFrm*)aIter.First( TYPE(SwFrm) ); + SwIterator<SwRowFrm,SwFmt> aIter( *pLineBehind->GetFrmFmt() ); + pSibling = aIter.First(); while ( pSibling && ( // only consider row frames associated with pLineBehind: - static_cast<SwRowFrm*>(pSibling)->GetTabLine() != pLineBehind || + pSibling->GetTabLine() != pLineBehind || // only consider row frames that are in pTables Master-Follow chain: !lcl_IsLineOfTblFrm( *pTable, *pSibling ) || // only consider row frames that are not repeated headlines: - static_cast<SwRowFrm*>(pSibling)->IsRepeatedHeadline() || + pSibling->IsRepeatedHeadline() || // only consider row frames that are not follow flow rows pSibling->IsInFollowFlowRow() ) ) { - pSibling = (SwFrm*)aIter.Next(); + pSibling = aIter.Next(); } } if ( pSibling ) @@ -2601,16 +2614,16 @@ void _FndBox::MakeNewFrms( SwTable &rTable, const sal_uInt16 nNumber, { SwTableLine* pLine = pLineBefore ? pLineBefore : rTable.GetTabLines()[i]; - SwClientIter aIter( *pLine->GetFrmFmt() ); - pSibling = (SwFrm*)aIter.First( TYPE(SwFrm) ); + SwIterator<SwRowFrm,SwFmt> aIter( *pLine->GetFrmFmt() ); + pSibling = aIter.First(); while ( pSibling && ( // only consider row frames associated with pLineBefore: - static_cast<SwRowFrm*>(pSibling)->GetTabLine() != pLine || + pSibling->GetTabLine() != pLine || // only consider row frames that are in pTables Master-Follow chain: !lcl_IsLineOfTblFrm( *pTable, *pSibling ) || // only consider row frames that are not repeated headlines: - static_cast<SwRowFrm*>(pSibling)->IsRepeatedHeadline() || + pSibling->IsRepeatedHeadline() || // 1. case: pLineBefore == 0: // only consider row frames that are not follow flow rows // 2. case: pLineBefore != 0: @@ -2621,13 +2634,13 @@ void _FndBox::MakeNewFrms( SwTable &rTable, const sal_uInt16 nNumber, ( pLineBefore && pSibling->IsInSplitTableRow() ) ) ) ) // <-- { - pSibling = (SwFrm*)aIter.Next(); + pSibling = aIter.Next(); } } pUpperFrm = pSibling->GetUpper(); if ( pLineBefore ) - pSibling = pSibling->GetNext(); + pSibling = (SwRowFrm*) pSibling->GetNext(); sal_uInt16 nMax = nBhPos != USHRT_MAX ? nBhPos - nCnt : @@ -2650,8 +2663,7 @@ void _FndBox::MakeNewFrms( SwTable &rTable, const sal_uInt16 nNumber, ( ( !bBehind && ( nBfPos == USHRT_MAX || nBfPos + 1 < nRowsToRepeat ) ) || ( bBehind && ( ( nBfPos == USHRT_MAX && nRowsToRepeat > 1 ) || nBfPos + 2 < nRowsToRepeat ) ) ) ) { - for ( pTable = (SwTabFrm*)aTabIter.First( TYPE(SwFrm) ); pTable; - pTable = (SwTabFrm*)aTabIter.Next() ) + for ( pTable = aTabIter.First(); pTable; pTable = aTabIter.Next() ) { if ( pTable->Lower() ) { @@ -2702,9 +2714,8 @@ sal_Bool _FndBox::AreLinesToRestore( const SwTable &rTable ) const { // ups. sollte unsere zu wiederholende Kopfzeile geloescht worden // sein?? - SwClientIter aIter( *rTable.GetFrmFmt() ); - for( SwTabFrm* pTable = (SwTabFrm*)aIter.First( TYPE( SwFrm )); - pTable; pTable = (SwTabFrm*)aIter.Next() ) + SwIterator<SwTabFrm,SwFmt> aIter( *rTable.GetFrmFmt() ); + for( SwTabFrm* pTable = aIter.First(); pTable; pTable = aIter.Next() ) { if( pTable->IsFollow() ) { diff --git a/sw/source/core/graphic/ndgrf.cxx b/sw/source/core/graphic/ndgrf.cxx index 1f8dc1ee488b..a66f0b708d80 100644 --- a/sw/source/core/graphic/ndgrf.cxx +++ b/sw/source/core/graphic/ndgrf.cxx @@ -213,10 +213,10 @@ sal_Bool SwGrfNode::ReRead( if( refLink.Is() ) { - if( GetFrm() ) + if( getLayoutFrm( GetDoc()->GetCurrentLayout() ) ) { SwMsgPoolItem aMsgHint( RES_GRF_REREAD_AND_INCACHE ); - Modify( &aMsgHint, &aMsgHint ); + ModifyNotification( &aMsgHint, &aMsgHint ); } // --> OD 2006-11-03 #i59688# // do not load linked graphic, if it isn't a new linked graphic. @@ -310,7 +310,7 @@ sal_Bool SwGrfNode::ReRead( if( bReadGrf && bNewGrf ) { SwMsgPoolItem aMsgHint( RES_UPDATE_ATTR ); - Modify( &aMsgHint, &aMsgHint ); + ModifyNotification( &aMsgHint, &aMsgHint ); } return bReadGrf; @@ -438,7 +438,7 @@ short SwGrfNode::SwapIn( sal_Bool bWaitForData ) // keine default Bitmap mehr, also neu Painten! aGrfObj.SetGraphic( Graphic() ); SwMsgPoolItem aMsgHint( RES_GRAPHIC_PIECE_ARRIVED ); - Modify( &aMsgHint, &aMsgHint ); + ModifyNotification( &aMsgHint, &aMsgHint ); } } else if( aGrfObj.IsSwappedOut() ) { @@ -488,7 +488,7 @@ short SwGrfNode::SwapIn( sal_Bool bWaitForData ) if( 1 == nRet ) { SwMsgPoolItem aMsg( RES_GRAPHIC_SWAPIN ); - Modify( &aMsg, &aMsg ); + ModifyNotification( &aMsg, &aMsg ); } } else @@ -597,7 +597,7 @@ sal_Bool SwGrfNode::RestorePersistentData() IDocumentLinksAdministration* pIDLA = getIDocumentLinksAdministration(); refLink->SetVisible( pIDLA->IsVisibleLinks() ); pIDLA->GetLinkManager().InsertDDELink( refLink ); - if( getIDocumentLayoutAccess()->GetRootFrm() ) + if( getIDocumentLayoutAccess()->GetCurrentLayout() ) //swmod 080218 refLink->Update(); } return sal_True; @@ -1176,7 +1176,7 @@ void SwGrfNode::ApplyInputStream( mbIsStreamReadOnly = bIsStreamReadOnly; mbLinkedInputStreamReady = true; SwMsgPoolItem aMsgHint( RES_LINKED_GRAPHIC_STREAM_ARRIVED ); - Modify( &aMsgHint, &aMsgHint ); + ModifyNotification( &aMsgHint, &aMsgHint ); } } } @@ -1188,7 +1188,7 @@ void SwGrfNode::UpdateLinkWithInputStream() GetLink()->setStreamToLoadFrom( mxInputStream, mbIsStreamReadOnly ); GetLink()->Update(); SwMsgPoolItem aMsgHint( RES_GRAPHIC_ARRIVED ); - Modify( &aMsgHint, &aMsgHint ); + ModifyNotification( &aMsgHint, &aMsgHint ); // --> OD 2008-06-18 #i88291# mxInputStream.clear(); diff --git a/sw/source/core/inc/attrhint.hxx b/sw/source/core/inc/attrhint.hxx new file mode 100644 index 000000000000..da2ed160b9c4 --- /dev/null +++ b/sw/source/core/inc/attrhint.hxx @@ -0,0 +1,44 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _ATTRHINT_HXX +#define _ATTRHINT_HXX + +#include <svl/hint.hxx> + +class SwAttrHint : public SfxHint +{ + sal_Int32 nId; +public: + SwAttrHint( sal_Int32 n ) + : nId(n) + {} + + sal_Int32 GetId() const { return nId; } +}; + +#endif diff --git a/sw/source/core/inc/bodyfrm.hxx b/sw/source/core/inc/bodyfrm.hxx index 9bd12a45205f..1ab39ff1578c 100644 --- a/sw/source/core/inc/bodyfrm.hxx +++ b/sw/source/core/inc/bodyfrm.hxx @@ -41,7 +41,7 @@ protected: ~SwBodyFrm(); #endif public: - SwBodyFrm( SwFrmFmt* ); + SwBodyFrm( SwFrmFmt*, SwFrm* ); DECL_FIXEDMEMPOOL_NEWDEL(SwBodyFrm) }; diff --git a/sw/source/core/inc/bookmrk.hxx b/sw/source/core/inc/bookmrk.hxx index 90c6a44fa239..9b8a0d7c3876 100644 --- a/sw/source/core/inc/bookmrk.hxx +++ b/sw/source/core/inc/bookmrk.hxx @@ -50,7 +50,6 @@ namespace sw { namespace mark { class MarkBase : virtual public IMark - , private ::boost::noncopyable { public: //getters @@ -104,9 +103,6 @@ namespace sw { namespace mark virtual ~MarkBase(); - // SwClient - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ); - const ::com::sun::star::uno::WeakReference< ::com::sun::star::text::XTextContent> & GetXBookmark() const { return m_wXBookmark; } @@ -115,6 +111,9 @@ namespace sw { namespace mark { m_wXBookmark = xBkmk; } protected: + // SwClient + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ); + MarkBase(const SwPaM& rPaM, const ::rtl::OUString& rName); ::boost::scoped_ptr<SwPosition> m_pPos1; diff --git a/sw/source/core/inc/cellfrm.hxx b/sw/source/core/inc/cellfrm.hxx index 1a5b24b58fa1..317e70aa22c1 100644 --- a/sw/source/core/inc/cellfrm.hxx +++ b/sw/source/core/inc/cellfrm.hxx @@ -41,16 +41,23 @@ class SwCellFrm: public SwLayoutFrm protected: virtual void Format( const SwBorderAttrs *pAttrs = 0 ); + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); public: - SwCellFrm( const SwTableBox &, bool bInsertContent = true ); + SwCellFrm( const SwTableBox &, SwFrm*, bool bInsertContent = true ); ~SwCellFrm(); +<<<<<<< local + virtual BOOL GetCrsrOfst( SwPosition *, Point&, SwCrsrMoveState* = 0 ) const; + virtual void Paint( SwRect const&, SwPrintData const*const pPrintData = NULL ) const; + virtual void CheckDirection( BOOL bVert ); +======= virtual sal_Bool GetCrsrOfst( SwPosition *, Point&, SwCrsrMoveState* = 0 ) const; virtual void Modify( SfxPoolItem*, SfxPoolItem* ); virtual void Paint( SwRect const&, SwPrintData const*const pPrintData = NULL ) const; virtual void CheckDirection( sal_Bool bVert ); +>>>>>>> other // --> OD 2010-02-17 #i103961# virtual void Cut(); diff --git a/sw/source/core/inc/cntfrm.hxx b/sw/source/core/inc/cntfrm.hxx index 431f93912140..88c8f68c17f5 100644 --- a/sw/source/core/inc/cntfrm.hxx +++ b/sw/source/core/inc/cntfrm.hxx @@ -53,7 +53,11 @@ class SwCntntFrm: public SwFrm, public SwFlowFrm // <-- virtual void MakeAll(); +<<<<<<< local + void _UpdateAttr( const SfxPoolItem*, const SfxPoolItem*, BYTE &, +======= void _UpdateAttr( SfxPoolItem*, SfxPoolItem*, sal_uInt8 &, +>>>>>>> other SwAttrSetChg *pa = 0, SwAttrSetChg *pb = 0 ); virtual sal_Bool ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool, sal_Bool& ); @@ -64,11 +68,17 @@ protected: sal_Bool MakePrtArea( const SwBorderAttrs & ); +<<<<<<< local + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); + virtual SwTwips ShrinkFrm( SwTwips, BOOL bTst = FALSE, BOOL bInfo = FALSE ); + virtual SwTwips GrowFrm ( SwTwips, BOOL bTst = FALSE, BOOL bInfo = FALSE ); +======= virtual void Modify( SfxPoolItem*, SfxPoolItem* ); virtual SwTwips ShrinkFrm( SwTwips, sal_Bool bTst = sal_False, sal_Bool bInfo = sal_False ); virtual SwTwips GrowFrm ( SwTwips, sal_Bool bTst = sal_False, sal_Bool bInfo = sal_False ); +>>>>>>> other - SwCntntFrm( SwCntntNode * const ); + SwCntntFrm( SwCntntNode * const, SwFrm* ); public: virtual ~SwCntntFrm(); @@ -108,6 +118,9 @@ public: inline SwCntntFrm* GetNextCntntFrm() const; inline SwCntntFrm* GetPrevCntntFrm() const; + static bool CalcLowers( SwLayoutFrm* pLay, const SwLayoutFrm* pDontLeave, long nBottom, bool bSkipRowSpanCells ); + void RegisterToNode( SwCntntNode& ); + static void DelFrms( const SwCntntNode& ); }; inline SwCntntFrm* SwCntntFrm::GetNextCntntFrm() const diff --git a/sw/source/core/inc/colfrm.hxx b/sw/source/core/inc/colfrm.hxx index 4d8a54528aa5..90bb547c3333 100644 --- a/sw/source/core/inc/colfrm.hxx +++ b/sw/source/core/inc/colfrm.hxx @@ -33,7 +33,7 @@ class SwColumnFrm: public SwFtnBossFrm { public: - SwColumnFrm( SwFrmFmt* ); + SwColumnFrm( SwFrmFmt*, SwFrm* ); ~SwColumnFrm(); DECL_FIXEDMEMPOOL_NEWDEL(SwColumnFrm) diff --git a/sw/source/core/inc/fieldhint.hxx b/sw/source/core/inc/fieldhint.hxx new file mode 100644 index 000000000000..82955be53bc8 --- /dev/null +++ b/sw/source/core/inc/fieldhint.hxx @@ -0,0 +1,44 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _FIELDHINT_HXX +#define _FIELDHINT_HXX + +#include <svl/hint.hxx> + +class SwFieldHint : public SfxHint +{ + SwPaM* pPaM; +public: + SwFieldHint( SwPaM* p ) + : pPaM(p) + {} + + SwPaM* GetPaM() const { return pPaM; } +}; + +#endif diff --git a/sw/source/core/inc/flyfrm.hxx b/sw/source/core/inc/flyfrm.hxx index d171bd0b0a26..bd57549a41c5 100644 --- a/sw/source/core/inc/flyfrm.hxx +++ b/sw/source/core/inc/flyfrm.hxx @@ -28,6 +28,7 @@ #define SW_FLYFRM_HXX #include "layfrm.hxx" +#include <list> #include "frmfmt.hxx" class SwPageFrm; @@ -38,8 +39,10 @@ class SwVirtFlyDrawObj; class SwSpzFrmFmts; class SwAttrSetChg; class PolyPolygon; +class SwFlyDrawContact; +class SwDrawContact; +class SwFmt; -// OD 2004-03-22 #i26791# #include <anchoredobject.hxx> //Sucht ausgehend von pOldAnch einen Anker fuer Absatzgebundene Rahmen. @@ -57,19 +60,30 @@ sal_Bool CalcClipRect( const SdrObject *pSdrObj, SwRect &rRect, sal_Bool bMove = class SwFlyFrm : public SwLayoutFrm, public SwAnchoredObject { //darf Locken. Definiert in frmtool.cxx +<<<<<<< local + friend void AppendObjs ( const SwSpzFrmFmts *, ULONG, SwFrm *, SwPageFrm * ); +======= friend void AppendObjs ( const SwSpzFrmFmts *, sal_uLong, SwFrm *, SwPageFrm * ); friend void AppendAllObjs( const SwSpzFrmFmts * ); +>>>>>>> other friend void Notify( SwFlyFrm *, SwPageFrm *pOld, const SwRect &rOld, const SwRect* pOldPrt ); void InitDrawObj( sal_Bool bNotify ); //Wird von den CToren gerufen. void FinitDrawObj(); //Wird vom CTor gerufen. +<<<<<<< local + void _UpdateAttr( const SfxPoolItem*, const SfxPoolItem*, BYTE &, +======= void _UpdateAttr( SfxPoolItem*, SfxPoolItem*, sal_uInt8 &, +>>>>>>> other SwAttrSetChg *pa = 0, SwAttrSetChg *pb = 0 ); using SwLayoutFrm::CalcRel; + sal_uInt32 _GetOrdNumForNewRef( const SwFlyDrawContact* ); + SwVirtFlyDrawObj* CreateNewRef( SwFlyDrawContact* ); + protected: SwFlyFrm *pPrevLink, // Vorgaenger/Nachfolger fuer Verkettung mit @@ -131,7 +145,7 @@ protected: Size CalcRel( const SwFmtFrmSize &rSz ) const; SwTwips CalcAutoWidth() const; - SwFlyFrm( SwFlyFrmFmt*, SwFrm *pAnchor ); + SwFlyFrm( SwFlyFrmFmt*, SwFrm*, SwFrm *pAnchor ); /** method to assure that anchored object is registered at the correct page frame @@ -142,20 +156,17 @@ protected: */ virtual void RegisterAtCorrectPage(); - // --> OD 2006-08-10 #i68520# virtual bool _SetObjTop( const SwTwips _nTop ); virtual bool _SetObjLeft( const SwTwips _nLeft ); - // <-- - // --> OD 2006-10-05 #i70122# virtual const SwRect GetObjBoundRect() const; - // <-- + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); + public: // OD 2004-03-23 #i26791# TYPEINFO(); virtual ~SwFlyFrm(); - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); // erfrage vom Client Informationen virtual sal_Bool GetInfo( SfxPoolItem& ) const; virtual void Paint( SwRect const&, @@ -284,6 +295,7 @@ public: @author OD */ virtual bool IsFormatPossible() const; + static void GetAnchoredObjects( std::list<SwAnchoredObject*>&, const SwFmt& rFmt ); // overwriting "SwFrmFmt *SwLayoutFrm::GetFmt" to provide the correct derived return type. // (This is in order to skip on the otherwise necessary casting of the result to diff --git a/sw/source/core/inc/flyfrms.hxx b/sw/source/core/inc/flyfrms.hxx index 079272eb6db1..a0a2d9dd1619 100644 --- a/sw/source/core/inc/flyfrms.hxx +++ b/sw/source/core/inc/flyfrms.hxx @@ -68,7 +68,7 @@ protected: virtual void NotifyBackground( SwPageFrm *pPage, const SwRect& rRect, PrepareHint eHint); - SwFlyFreeFrm( SwFlyFrmFmt*, SwFrm *pAnchor ); + SwFlyFreeFrm( SwFlyFrmFmt*, SwFrm*, SwFrm *pAnchor ); public: // --> OD 2004-06-29 #i28701# @@ -130,11 +130,10 @@ public: // --> OD 2004-06-29 #i28701# TYPEINFO(); - SwFlyLayFrm( SwFlyFrmFmt*, SwFrm *pAnchor ); + SwFlyLayFrm( SwFlyFrmFmt*, SwFrm*, SwFrm *pAnchor ); SwFlyLayFrm( SwFlyLayFrm& ); - - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); - +protected: + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); }; //Die Flys, die an einem Cntnt haengen nicht aber im Inhalt @@ -154,14 +153,13 @@ protected: @author OD */ virtual void RegisterAtCorrectPage(); + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); public: // --> OD 2004-06-29 #i28701# TYPEINFO(); - SwFlyAtCntFrm( SwFlyFrmFmt*, SwFrm *pAnchor ); - - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); + SwFlyAtCntFrm( SwFlyFrmFmt*, SwFrm*, SwFrm *pAnchor ); void SetAbsPos( const Point &rNew ); @@ -193,16 +191,16 @@ protected: virtual void NotifyBackground( SwPageFrm *pPage, const SwRect& rRect, PrepareHint eHint); virtual void MakeAll(); + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); public: // --> OD 2004-06-29 #i28701# TYPEINFO(); - SwFlyInCntFrm( SwFlyFrmFmt*, SwFrm *pAnchor ); + SwFlyInCntFrm( SwFlyFrmFmt*, SwFrm*, SwFrm *pAnchor ); virtual ~SwFlyInCntFrm(); virtual void Format( const SwBorderAttrs *pAttrs = 0 ); - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); void SetRefPoint( const Point& rPoint, const Point &rRelAttr, const Point &rRelPos ); diff --git a/sw/source/core/inc/frame.hxx b/sw/source/core/inc/frame.hxx index 9b3599ac977f..62ed01cce55d 100644 --- a/sw/source/core/inc/frame.hxx +++ b/sw/source/core/inc/frame.hxx @@ -31,6 +31,7 @@ #include "swtypes.hxx" // fuer SwTwips #include "swrect.hxx" #include "calbck.hxx" // fuer SwClient +#include <svl/brdcst.hxx> class SwLayoutFrm; class SwRootFrm; @@ -54,12 +55,10 @@ class SvxBrushItem; class SwSelectionList; struct SwPosition; struct SwCrsrMoveState; +class SwFmt; class SwPrintData; - -// --> OD 2004-07-06 #i28701# class SwSortedObjs; class SwAnchoredObject; -// <-- //Jeder FrmTyp findet sich hier in einem Bit wieder. //Die Bits muessen so gesetzt werden, dass mit einer Maskierung festgestellt @@ -240,7 +239,7 @@ enum MakePageType //typedef SdrObject* SdrObjectPtr; //SV_DECL_PTRARR(SwDrawObjs,SdrObjectPtr,1,1); -class SwFrm: public SwClient +class SwFrm: public SwClient, public SfxBroadcaster { //Der verkappte Frm friend class SwFlowFrm; @@ -274,6 +273,7 @@ class SwFrm: public SwClient const sal_uInt32 mnFrmId; // <-- + SwRootFrm *mpRoot; SwLayoutFrm *pUpper; SwFrm *pNext; SwFrm *pPrev; @@ -344,7 +344,11 @@ class SwFrm: public SwClient SwCntntFrm* _FindPrevCnt( const bool _bInSameFtn = false ); +<<<<<<< local + void _UpdateAttrFrm( const SfxPoolItem*, const SfxPoolItem*, BYTE & ); +======= void _UpdateAttrFrm( SfxPoolItem*, SfxPoolItem*, sal_uInt8 & ); +>>>>>>> other SwFrm* _GetIndNext(); void SetDirFlags( sal_Bool bVert ); @@ -400,7 +404,14 @@ protected: void ColLock() { bColLocked = sal_True; } void ColUnlock() { bColLocked = sal_False; } +<<<<<<< local + // Only used by SwRootFrm Ctor to get 'this' into mpRoot... + void setRootFrm( SwRootFrm* pRoot ) { mpRoot = pRoot; } + + SwPageFrm *InsertPage( SwPageFrm *pSibling, BOOL bFtn ); +======= SwPageFrm *InsertPage( SwPageFrm *pSibling, sal_Bool bFtn ); +>>>>>>> other void PrepareMake(); void OptPrepareMake(); void MakePos(); @@ -419,10 +430,10 @@ protected: virtual SwTwips ShrinkFrm( SwTwips, sal_Bool bTst = sal_False, sal_Bool bInfo = sal_False ) = 0; virtual SwTwips GrowFrm ( SwTwips, sal_Bool bTst = sal_False, sal_Bool bInfo = sal_False ) = 0; - SwModify *GetDep() { return pRegisteredIn; } - const SwModify *GetDep() const { return pRegisteredIn; } + SwModify *GetDep() { return GetRegisteredInNonConst(); } + const SwModify *GetDep() const { return GetRegisteredIn(); } - SwFrm( SwModify* ); + SwFrm( SwModify*, SwFrm* ); void CheckDir( sal_uInt16 nDir, sal_Bool bVert, sal_Bool bOnlyBiDi, sal_Bool bBrowse ); @@ -457,6 +468,7 @@ protected: //Schatten und Umrandung painten void PaintShadow( const SwRect&, SwRect&, const SwBorderAttrs& ) const; + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); public: TYPEINFO(); //Bereits in Basisklasse Client drin. @@ -599,7 +611,6 @@ public: //Fussnote einzufuegen (nicht z.B. in wiederholten TabellenHeadlines). sal_Bool IsFtnAllowed() const; - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); virtual void Format( const SwBorderAttrs *pAttrs = 0 ); virtual void CheckDirection( sal_Bool bVert ); @@ -611,10 +622,6 @@ public: inline sal_Bool HasFixSize() const { return bFixSize; } inline void SetFixSize( sal_Bool bNew ) { bFixSize = bNew; } - //Kann 0 liefern, pruefen auch ob die Shell zum richtigen Dokument - //gehoert. Impl in frmsh.hxx - ViewShell *GetShell() const; - //Prueft alle Seiten ab der Uebergebenen und korrigiert ggf. static void CheckPageDescs( SwPageFrm *pStart, sal_Bool bNotifyFields = sal_True ); @@ -622,7 +629,7 @@ public: SwFrm *GetNext() { return pNext; } SwFrm *GetPrev() { return pPrev; } SwLayoutFrm *GetUpper() { return pUpper; } - SwRootFrm *FindRootFrm(); + SwRootFrm *getRootFrm(){ return mpRoot; } SwPageFrm *FindPageFrm(); SwFrm *FindColFrm(); SwFtnBossFrm *FindFtnBossFrm( sal_Bool bFootnotes = sal_False ); @@ -635,6 +642,7 @@ public: const SwFrm *GetNext() const { return pNext; } const SwFrm *GetPrev() const { return pPrev; } const SwLayoutFrm *GetUpper() const { return pUpper; } + const SwRootFrm *getRootFrm() const { return mpRoot; } inline SwTabFrm *FindTabFrm(); inline SwFtnFrm *FindFtnFrm(); inline SwFlyFrm *FindFlyFrm(); @@ -645,8 +653,12 @@ public: // <-- inline SwFrm *FindPrev(); inline const SwPageFrm *FindPageFrm() const; +<<<<<<< local + inline const SwFtnBossFrm *FindFtnBossFrm( BOOL bFtn = FALSE ) const; +======= inline const SwRootFrm *FindRootFrm() const; inline const SwFtnBossFrm *FindFtnBossFrm( sal_Bool bFtn = sal_False ) const; +>>>>>>> other inline const SwFrm *FindColFrm() const; inline const SwFrm *FindFooterOrHeader() const; inline const SwTabFrm *FindTabFrm() const; @@ -911,7 +923,13 @@ public: bool IsInCoveredCell() const; // FME 2007-08-30 #i81146# new loop control +<<<<<<< local + void ValidateThisAndAllLowers( const USHORT nStage ); + bool KnowsFormat( const SwFmt& rFmt ) const; + void RegisterToFormat( SwFmt& rFmt ); +======= void ValidateThisAndAllLowers( const sal_uInt16 nStage ); +>>>>>>> other }; inline sal_Bool SwFrm::IsInDocBody() const @@ -1075,10 +1093,6 @@ inline const SwPageFrm *SwFrm::FindPageFrm() const { return ((SwFrm*)this)->FindPageFrm(); } -inline const SwRootFrm *SwFrm::FindRootFrm() const -{ - return ((SwFrm*)this)->FindRootFrm(); -} inline const SwFrm *SwFrm::FindColFrm() const { return ((SwFrm*)this)->FindColFrm(); diff --git a/sw/source/core/inc/frmtool.hxx b/sw/source/core/inc/frmtool.hxx index 473e30549c66..d5157954b9bb 100644 --- a/sw/source/core/inc/frmtool.hxx +++ b/sw/source/core/inc/frmtool.hxx @@ -37,6 +37,7 @@ class SwPageFrm; class SwFlyFrm; class SwCntntFrm; +class SwRootFrm; class SwDoc; class SwAttrSet; class SdrObject; @@ -138,7 +139,11 @@ const SwFrm * MA_FASTCALL FindPage( const SwRect &rRect, const SwFrm *pPage ); // JP 07.05.98: wird von SwCntntNode::GetFrm und von SwFlyFrm::GetFrm // gerufen +<<<<<<< local +SwFrm* GetFrmOfModify( const SwRootFrm* pLayout, SwModify const&, USHORT const nFrmType, const Point* = 0, +======= SwFrm* GetFrmOfModify( SwModify const&, sal_uInt16 const nFrmType, const Point* = 0, +>>>>>>> other const SwPosition *pPos = 0, const sal_Bool bCalcFrm = sal_False ); @@ -567,7 +572,7 @@ class SwDeletionChecker SwDeletionChecker( const SwFrm* pFrm ) : mpFrm( pFrm ), - mpRegIn( pFrm ? pFrm->GetRegisteredIn() : 0 ) + mpRegIn( pFrm ? const_cast<SwFrm*>(pFrm)->GetRegisteredIn() : 0 ) { } diff --git a/sw/source/core/inc/ftnboss.hxx b/sw/source/core/inc/ftnboss.hxx index 6c13fa75bff3..e993951d7143 100644 --- a/sw/source/core/inc/ftnboss.hxx +++ b/sw/source/core/inc/ftnboss.hxx @@ -70,7 +70,7 @@ protected: void InsertFtn( SwFtnFrm * ); static void ResetFtn( const SwFtnFrm *pAssumed ); public: - inline SwFtnBossFrm( SwFrmFmt* pFmt) : SwLayoutFrm( pFmt ) {} + inline SwFtnBossFrm( SwFrmFmt* pFmt, SwFrm* pSib ) : SwLayoutFrm( pFmt, pSib ) {} SwLayoutFrm *FindBodyCont(); inline const SwLayoutFrm *FindBodyCont() const; diff --git a/sw/source/core/inc/ftnfrm.hxx b/sw/source/core/inc/ftnfrm.hxx index afd97b4ce6e7..c70493b3a6ca 100644 --- a/sw/source/core/inc/ftnfrm.hxx +++ b/sw/source/core/inc/ftnfrm.hxx @@ -43,7 +43,7 @@ class SwFtnFrm; class SwFtnContFrm: public SwLayoutFrm { public: - SwFtnContFrm( SwFrmFmt* ); + SwFtnContFrm( SwFrmFmt*, SwFrm* ); const SwFtnFrm* FindFootNote() const; @@ -79,7 +79,7 @@ protected: public: - SwFtnFrm( SwFrmFmt*, SwCntntFrm*, SwTxtFtn* ); + SwFtnFrm( SwFrmFmt*, SwFrm*, SwCntntFrm*, SwTxtFtn* ); virtual void Cut(); virtual void Paste( SwFrm* pParent, SwFrm* pSibling = 0 ); diff --git a/sw/source/core/inc/hffrm.hxx b/sw/source/core/inc/hffrm.hxx index 425719e62afa..0158f04e7dc5 100644 --- a/sw/source/core/inc/hffrm.hxx +++ b/sw/source/core/inc/hffrm.hxx @@ -39,7 +39,11 @@ protected: void FormatPrt(SwTwips & nUL, const SwBorderAttrs * pAttrs); inline sal_Bool GetEatSpacing() const; // in hffrm.cxx public: +<<<<<<< local + SwHeadFootFrm(SwFrmFmt * pFrm, SwFrm*, USHORT aType); +======= SwHeadFootFrm(SwFrmFmt * pFrm, sal_uInt16 aType); +>>>>>>> other virtual void Format( const SwBorderAttrs *pAttrs = 0 ); virtual SwTwips GrowFrm( SwTwips, sal_Bool bTst = sal_False, sal_Bool bInfo = sal_False ); @@ -50,7 +54,7 @@ public: class SwHeaderFrm: public SwHeadFootFrm { public: - SwHeaderFrm( SwFrmFmt* pFrm ) : SwHeadFootFrm(pFrm, FRMC_HEADER) {}; + SwHeaderFrm( SwFrmFmt* pFrm, SwFrm* pSib ) : SwHeadFootFrm(pFrm, pSib, FRMC_HEADER) {}; DECL_FIXEDMEMPOOL_NEWDEL(SwHeaderFrm) }; @@ -58,7 +62,7 @@ public: class SwFooterFrm: public SwHeadFootFrm { public: - SwFooterFrm( SwFrmFmt* pFrm ) : SwHeadFootFrm(pFrm, FRMC_FOOTER) {}; + SwFooterFrm( SwFrmFmt* pFrm, SwFrm* pSib ) : SwHeadFootFrm(pFrm, pSib, FRMC_FOOTER) {}; DECL_FIXEDMEMPOOL_NEWDEL(SwFooterFrm) }; diff --git a/sw/source/core/inc/layfrm.hxx b/sw/source/core/inc/layfrm.hxx index 3f437e083a7c..e782d19ae78f 100644 --- a/sw/source/core/inc/layfrm.hxx +++ b/sw/source/core/inc/layfrm.hxx @@ -102,7 +102,7 @@ public: const SwCrsrMoveState *pCMS = 0, const sal_Bool bDefaultExpand = sal_True ) const; - SwLayoutFrm( SwFrmFmt* ); + SwLayoutFrm( SwFrmFmt*, SwFrm* ); ~SwLayoutFrm(); virtual void Paint( SwRect const&, diff --git a/sw/source/core/inc/notxtfrm.hxx b/sw/source/core/inc/notxtfrm.hxx index 97ebb7d72400..b460d7465f3c 100644 --- a/sw/source/core/inc/notxtfrm.hxx +++ b/sw/source/core/inc/notxtfrm.hxx @@ -51,11 +51,11 @@ class SwNoTxtFrm: public SwCntntFrm void PaintPicture( OutputDevice*, const SwRect& ) const; protected: virtual void MakeAll(); + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); public: - SwNoTxtFrm( SwNoTxtNode * const ); + SwNoTxtFrm( SwNoTxtNode * const, SwFrm* ); ~SwNoTxtFrm(); - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); virtual void Paint( SwRect const&, SwPrintData const*const pPrintData = NULL ) const; virtual sal_Bool GetCharRect( SwRect &, const SwPosition&, diff --git a/sw/source/core/inc/pagedeschint.hxx b/sw/source/core/inc/pagedeschint.hxx new file mode 100644 index 000000000000..b18ed39e3315 --- /dev/null +++ b/sw/source/core/inc/pagedeschint.hxx @@ -0,0 +1,46 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _PAGEDESCHINT_HXX +#define _PAGEDESCHINT_HXX + +#include <svl/hint.hxx> + +class SwPageDesc; + +class SwPageDescHint : public SfxHint +{ + SwPageDesc* pPageDesc; +public: + SwPageDescHint( SwPageDesc* p ) + : pPageDesc(p) + {} + + SwPageDesc* GetPageDesc() const { return const_cast<SwPageDesc*>(pPageDesc); } +}; + +#endif diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx index 994701980a3f..0672251a8323 100644 --- a/sw/source/core/inc/pagefrm.hxx +++ b/sw/source/core/inc/pagefrm.hxx @@ -92,7 +92,11 @@ class SwPageFrm: public SwFtnBossFrm static const sal_Int8 mnBorderPxWidth; static const sal_Int8 mnShadowPxWidth; +<<<<<<< local + void _UpdateAttr( const SfxPoolItem*, const SfxPoolItem*, BYTE &, +======= void _UpdateAttr( SfxPoolItem*, SfxPoolItem*, sal_uInt8 &, +>>>>>>> other SwAttrSetChg *pa = 0, SwAttrSetChg *pb = 0 ); // Anpassen der max. Fussnotenhoehen in den einzelnen Spalten @@ -191,11 +195,12 @@ class SwPageFrm: public SwFtnBossFrm protected: virtual void MakeAll(); + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); public: DECL_FIXEDMEMPOOL_NEWDEL(SwPageFrm) - SwPageFrm( SwFrmFmt*, SwPageDesc* ); + SwPageFrm( SwFrmFmt*, SwFrm*, SwPageDesc* ); ~SwPageFrm(); //public, damit die ViewShell beim Umschalten vom BrowseMode darauf @@ -251,7 +256,6 @@ public: virtual sal_Bool GetCrsrOfst( SwPosition *, Point&, SwCrsrMoveState* = 0 ) const; - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); // erfrage vom Client Informationen virtual sal_Bool GetInfo( SfxPoolItem& ) const; diff --git a/sw/source/core/inc/prevwpage.hxx b/sw/source/core/inc/prevwpage.hxx index 517f4494b44f..5e9e0d752a4f 100644 --- a/sw/source/core/inc/prevwpage.hxx +++ b/sw/source/core/inc/prevwpage.hxx @@ -1,3 +1,30 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + #ifndef _PREVIEWPAGES_HXX #define _PREVIEWPAGES_HXX diff --git a/sw/source/core/inc/rolbck.hxx b/sw/source/core/inc/rolbck.hxx index 9a39200f0b21..c94383c83377 100644 --- a/sw/source/core/inc/rolbck.hxx +++ b/sw/source/core/inc/rolbck.hxx @@ -425,6 +425,9 @@ private: void _MakeSetWhichIds(); +protected: + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ); + public: // --> OD 2008-02-27 #refactorlists# - removed <rDoc> SwRegHistory( SwHistory* pHst ); @@ -432,8 +435,6 @@ public: SwRegHistory( const SwNode& rNd, SwHistory* pHst ); SwRegHistory( SwModify* pRegIn, const SwNode& rNd, SwHistory* pHst ); - virtual void Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ); - /// @return true iff at least 1 item was inserted bool InsertItems( const SfxItemSet& rSet, xub_StrLen const nStart, xub_StrLen const nEnd, diff --git a/sw/source/core/inc/rootfrm.hxx b/sw/source/core/inc/rootfrm.hxx index ea976a77765f..401c5271a5e6 100644 --- a/sw/source/core/inc/rootfrm.hxx +++ b/sw/source/core/inc/rootfrm.hxx @@ -166,6 +166,11 @@ public: //MasterObjekte aus der Page entfernen (von den Ctoren gerufen). static void RemoveMasterObjs( SdrPage *pPg ); + void AllCheckPageDescs() const;//swmod 080226 + void AllInvalidateAutoCompleteWords() const;//swmod 080305 + void AllAddPaintRect() const; + void AllRemoveFtns() ;//swmod 080305 + void AllInvalidateSmartTagsOrSpelling(BOOL bSmartTags) const;//swmod 080307 //Virtuelles Device ausgeben (z.B. wenn Animationen ins Spiel kommen) static sal_Bool FlushVout(); //Clipping sparen, wenn im Vout eh genau das Cliprechteck ausgegeben wird diff --git a/sw/source/core/inc/rowfrm.hxx b/sw/source/core/inc/rowfrm.hxx index 2869e45bf540..e66b521d80ba 100644 --- a/sw/source/core/inc/rowfrm.hxx +++ b/sw/source/core/inc/rowfrm.hxx @@ -54,13 +54,13 @@ class SwRowFrm: public SwLayoutFrm protected: virtual void MakeAll(); + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); public: - SwRowFrm( const SwTableLine &, bool bInsertContent = true ); + SwRowFrm( const SwTableLine &, SwFrm*, bool bInsertContent = true ); ~SwRowFrm(); virtual void Cut(); - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); //Zum Anmelden der Flys nachdem eine Zeile erzeugt _und_ eingefuegt wurde. //Muss vom Erzeuger gerufen werden, denn erst nach dem Konstruieren wird diff --git a/sw/source/core/inc/sectfrm.hxx b/sw/source/core/inc/sectfrm.hxx index 27169fe0e97f..d7c5b7cccb66 100644 --- a/sw/source/core/inc/sectfrm.hxx +++ b/sw/source/core/inc/sectfrm.hxx @@ -45,7 +45,11 @@ class SwSectionFrm: public SwLayoutFrm, public SwFlowFrm { SwSection* pSection; +<<<<<<< local + void _UpdateAttr( const SfxPoolItem*, const SfxPoolItem*, BYTE &, +======= void _UpdateAttr( SfxPoolItem*, SfxPoolItem*, sal_uInt8 &, +>>>>>>> other SwAttrSetChg *pa = 0, SwAttrSetChg *pb = 0 ); void _Cut( sal_Bool bRemove ); // Is there a FtnContainer? @@ -59,9 +63,17 @@ protected: virtual void MakeAll(); virtual sal_Bool ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool bHead, sal_Bool &rReformat ); virtual void Format( const SwBorderAttrs *pAttrs = 0 ); + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); + virtual void SwClientNotify( const SwModify&, const SfxHint& ); + public: +<<<<<<< local + SwSectionFrm( SwSection &, SwFrm* ); //Inhalt wird nicht erzeugt! + SwSectionFrm( SwSectionFrm &, BOOL bMaster );//_Nur_ zum Erzeugen von Master/Follows +======= SwSectionFrm( SwSection & ); //Inhalt wird nicht erzeugt! SwSectionFrm( SwSectionFrm &, sal_Bool bMaster );//_Nur_ zum Erzeugen von Master/Follows +>>>>>>> other ~SwSectionFrm(); void Init(); @@ -69,7 +81,6 @@ public: virtual void Cut(); virtual void Paste( SwFrm* pParent, SwFrm* pSibling = 0 ); - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); inline const SwSectionFrm *GetFollow() const; inline SwSectionFrm *GetFollow(); diff --git a/sw/source/core/inc/tabfrm.hxx b/sw/source/core/inc/tabfrm.hxx index a93ddf24ebf3..4b839e9da0fe 100644 --- a/sw/source/core/inc/tabfrm.hxx +++ b/sw/source/core/inc/tabfrm.hxx @@ -102,7 +102,11 @@ class SwTabFrm: public SwLayoutFrm, public SwFlowFrm bool Split( const SwTwips nCutPos, bool bTryToSplit, bool bTableRowKeep ); bool Join(); +<<<<<<< local + void _UpdateAttr( const SfxPoolItem*, const SfxPoolItem*, BYTE &, +======= void _UpdateAttr( SfxPoolItem*, SfxPoolItem*, sal_uInt8 &, +>>>>>>> other SwAttrSetChg *pa = 0, SwAttrSetChg *pb = 0 ); virtual sal_Bool ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool bHead, sal_Bool &rReformat ); @@ -111,9 +115,14 @@ protected: virtual void MakeAll(); virtual void Format( const SwBorderAttrs *pAttrs = 0 ); //Aendert nur die Framesize, nicht die PrtArea-SSize +<<<<<<< local + virtual SwTwips GrowFrm ( SwTwips, BOOL bTst = FALSE, BOOL bInfo = FALSE ); + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); +======= virtual SwTwips GrowFrm ( SwTwips, sal_Bool bTst = sal_False, sal_Bool bInfo = sal_False ); +>>>>>>> other public: - SwTabFrm( SwTable & ); //Immer nach dem erzeugen _und_ pasten das + SwTabFrm( SwTable &, SwFrm* ); //Immer nach dem erzeugen _und_ pasten das //Regist Flys rufen! SwTabFrm( SwTabFrm & ); //_Nur_ zum erzeugen von Follows ~SwTabFrm(); @@ -127,8 +136,12 @@ public: inline SwTabFrm *GetFollow(); SwTabFrm* FindMaster( bool bFirstMaster = false ) const; +<<<<<<< local + virtual BOOL GetInfo( SfxPoolItem &rHnt ) const; +======= virtual void Modify( SfxPoolItem*, SfxPoolItem* ); virtual sal_Bool GetInfo( SfxPoolItem &rHnt ) const; +>>>>>>> other virtual void Paint( SwRect const&, SwPrintData const*const pPrintData = NULL ) const; virtual void CheckDirection( sal_Bool bVert ); diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx index 3cc1cbfc03b9..b5418f8d415d 100644 --- a/sw/source/core/inc/txtfrm.hxx +++ b/sw/source/core/inc/txtfrm.hxx @@ -228,6 +228,8 @@ class SwTxtFrm: public SwCntntFrm xub_StrLen nInsertPos, xub_StrLen nActPos, xub_StrLen &nChgStart, xub_StrLen &nChgEnd, xub_StrLen &nInvStart, xub_StrLen &nInvEnd); +protected: + virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ); public: @@ -295,7 +297,6 @@ public: SwRect Paint(); virtual void Paint( SwRect const&, SwPrintData const*const pPrintData = NULL ) const; - virtual void Modify( SfxPoolItem*, SfxPoolItem* ); virtual sal_Bool GetInfo( SfxPoolItem & ) const; //Layoutorientiertes Cursortravelling: Linker, rechter Rand, @@ -339,7 +340,7 @@ public: inline const SwTxtNode *GetTxtNode() const { return (SwTxtNode*)SwCntntFrm::GetNode(); } - SwTxtFrm(SwTxtNode * const); + SwTxtFrm(SwTxtNode * const, SwFrm* ); virtual ~SwTxtFrm(); // SwCntntFrm: der "kurze Dienstweg" fuer die Frames. @@ -611,6 +612,8 @@ public: { return mnHeightOfLastLine; } + + static void repaintTextFrames( const SwTxtNode& rNode ); }; /************************************************************************* diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx index e56c34c4bff1..d95185064f6b 100644 --- a/sw/source/core/layout/atrfrm.cxx +++ b/sw/source/core/layout/atrfrm.cxx @@ -99,22 +99,17 @@ #include <unoframe.hxx> #include <unotextbodyhf.hxx> #include <SwStyleNameMapper.hxx> -/// OD 22.08.2002 #99657# -/// include definition of class SvxBrushItem and GraphicObject -/// in order to determine, if background is transparent. #include <editeng/brshitem.hxx> #include <svtools/grfmgr.hxx> - #include <cmdid.h> #include <unomid.h> #include <comcore.hrc> #include <svx/svdundo.hxx> // #111827# -// OD 2004-05-24 #i28701# #include <sortedobjs.hxx> -// --> OD 2006-03-06 #125892# #include <HandleAnchorNodeChg.hxx> -// <-- #include <svl/cjkoptions.hxx> +#include <switerator.hxx> +#include <pagedeschint.hxx> using namespace ::com::sun::star; using ::rtl::OUString; @@ -190,7 +185,7 @@ void DelHFFormat( SwClient *pToRemove, SwFrmFmt *pFmt ) { // Klammer, weil im DTOR SwClientIter das Flag bTreeChg zurueck // gesetzt wird. Unguenstig, wenn das Format vorher zerstoert wird. - SwClientIter aIter( *pFmt ); + SwClientIter aIter( *pFmt ); // TODO SwClient *pLast = aIter.GoStart(); if( pLast ) do { @@ -224,16 +219,12 @@ void DelHFFormat( SwClient *pToRemove, SwFrmFmt *pFmt ) if ( pNode->IsCntntNode() && ((SwCntntNode*)pNode)->GetDepends() ) { - SwClientIter aIter( *(SwCntntNode*)pNode ); - do + SwCrsrShell *pShell = SwIterator<SwCrsrShell,SwCntntNode>::FirstElement( *(SwCntntNode*)pNode ); + if( pShell ) { - if( aIter()->ISA( SwCrsrShell ) ) - { - ((SwCrsrShell*)aIter())->ParkCrsr( aIdx ); + pShell->ParkCrsr( aIdx ); aIdx = nEnd-1; - break; - } - } while ( aIter++ ); + } } aIdx++; pNode = & aIdx.GetNode(); @@ -533,7 +524,7 @@ SwFmtHeader::SwFmtHeader( sal_Bool bOn ) int SwFmtHeader::operator==( const SfxPoolItem& rAttr ) const { ASSERT( SfxPoolItem::operator==( rAttr ), "keine gleichen Attribute" ); - return ( pRegisteredIn == ((SwFmtHeader&)rAttr).GetRegisteredIn() && + return ( GetRegisteredIn() == ((SwFmtHeader&)rAttr).GetRegisteredIn() && bActive == ((SwFmtHeader&)rAttr).IsActive() ); } @@ -542,6 +533,11 @@ SfxPoolItem* SwFmtHeader::Clone( SfxItemPool* ) const return new SwFmtHeader( *this ); } +void SwFmtHeader::RegisterToFormat( SwFmt& rFmt ) +{ + rFmt.Add(this); +} + // class SwFmtFooter // Implementierung teilweise inline im hxx @@ -572,10 +568,15 @@ SwFmtFooter::SwFmtFooter( sal_Bool bOn ) DelHFFormat( this, GetFooterFmt() ); } +void SwFmtFooter::RegisterToFormat( SwFmt& rFmt ) +{ + rFmt.Add(this); +} + int SwFmtFooter::operator==( const SfxPoolItem& rAttr ) const { ASSERT( SfxPoolItem::operator==( rAttr ), "keine gleichen Attribute" ); - return ( pRegisteredIn == ((SwFmtFooter&)rAttr).GetRegisteredIn() && + return ( GetRegisteredIn() == ((SwFmtFooter&)rAttr).GetRegisteredIn() && bActive == ((SwFmtFooter&)rAttr).IsActive() ); } @@ -649,6 +650,11 @@ SwFmtPageDesc::SwFmtPageDesc( const SwPageDesc *pDesc ) SwFmtPageDesc::~SwFmtPageDesc() {} +bool SwFmtPageDesc::KnowsPageDesc() const +{ + return (GetRegisteredIn() != 0); +} + int SwFmtPageDesc::operator==( const SfxPoolItem& rAttr ) const { ASSERT( SfxPoolItem::operator==( rAttr ), "keine gleichen Attribute" ); @@ -662,7 +668,39 @@ SfxPoolItem* SwFmtPageDesc::Clone( SfxItemPool* ) const return new SwFmtPageDesc( *this ); } -void SwFmtPageDesc::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwFmtPageDesc::SwClientNotify( const SwModify&, const SfxHint& rHint ) +{ + const SwPageDescHint* pHint = dynamic_cast<const SwPageDescHint*>(&rHint); + if ( pHint ) + { + // mba: shouldn't that be broadcasted also? + SwFmtPageDesc aDfltDesc( pHint->GetPageDesc() ); + SwPageDesc* pDesc = pHint->GetPageDesc(); + const SwModify* pMod = GetDefinedIn(); + if ( pMod ) + { + if( pMod->ISA( SwCntntNode ) ) + ((SwCntntNode*)pMod)->SetAttr( aDfltDesc ); + else if( pMod->ISA( SwFmt )) + ((SwFmt*)pMod)->SetFmtAttr( aDfltDesc ); + else + { + DBG_ERROR( "What kind of SwModify is this?" ); + RegisterToPageDesc( *pDesc ); + } + } + else + // there could be an Undo-copy + RegisterToPageDesc( *pDesc ); + } +} + +void SwFmtPageDesc::RegisterToPageDesc( SwPageDesc& rDesc ) +{ + rDesc.Add( this ); +} + +void SwFmtPageDesc::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { if( !pDefinedIn ) return; @@ -2438,7 +2476,7 @@ SfxPoolItem* SwHeaderAndFooterEatSpacingItem::Clone( SfxItemPool* ) const TYPEINIT1( SwFrmFmt, SwFmt ); IMPL_FIXEDMEMPOOL_NEWDEL_DLL( SwFrmFmt, 20, 20 ) -void SwFrmFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwFrmFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { SwFmtHeader *pH = 0; SwFmtFooter *pF = 0; @@ -2460,13 +2498,13 @@ void SwFrmFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if( pH && pH->IsActive() && !pH->GetHeaderFmt() ) { //Hat er keinen, mach ich ihm einen SwFrmFmt *pFmt = GetDoc()->MakeLayoutFmt( RND_STD_HEADER, 0 ); - pFmt->Add( pH ); + pH->RegisterToFormat( *pFmt ); } if( pF && pF->IsActive() && !pF->GetFooterFmt() ) { //Hat er keinen, mach ich ihm einen SwFrmFmt *pFmt = GetDoc()->MakeLayoutFmt( RND_STD_FOOTER, 0 ); - pFmt->Add( pF ); + pF->RegisterToFormat( *pFmt ); } // MIB 24.3.98: Modify der Basisklasse muss immer gerufen werden, z.B. @@ -2480,20 +2518,22 @@ void SwFrmFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) } } +void SwFrmFmt::RegisterToFormat( SwFmt& rFmt ) +{ + rFmt.Add( this ); +} + //Vernichtet alle Frms, die in aDepend angemeldet sind. void SwFrmFmt::DelFrms() { - SwClientIter aIter( *this ); - SwClient * pLast = aIter.GoStart(); + SwIterator<SwFrm,SwFmt> aIter( *this ); + SwFrm * pLast = aIter.First(); if( pLast ) do { - if ( pLast->ISA(SwFrm) ) - { - ((SwFrm*)pLast)->Cut(); + pLast->Cut(); delete pLast; - } - } while( 0 != ( pLast = aIter++ )); + } while( 0 != ( pLast = aIter.Next() )); } void SwFrmFmt::MakeFrms() @@ -2517,7 +2557,7 @@ SwRect SwFrmFmt::FindLayoutRect( const sal_Bool bPrtArea, const Point* pPoint, SwNode2Layout aTmp( *pSectNd, pSectNd->GetIndex() - 1 ); pFrm = aTmp.NextFrm(); - if( pFrm && pFrm->GetRegisteredIn() != this ) + if( pFrm && !pFrm->KnowsFormat(*this) ) { // die Section hat keinen eigenen frame::Frame, also falls // jemand die tatsaechliche Groe?e braucht, so muss das @@ -2539,7 +2579,7 @@ SwRect SwFrmFmt::FindLayoutRect( const sal_Bool bPrtArea, const Point* pPoint, else { sal_uInt16 nFrmType = RES_FLYFRMFMT == Which() ? FRM_FLY : USHRT_MAX; - pFrm = ::GetFrmOfModify( *(SwModify*)this, nFrmType, pPoint, + pFrm = ::GetFrmOfModify( 0, *(SwModify*)this, nFrmType, pPoint, 0, bCalcFrm ); } @@ -2555,8 +2595,7 @@ SwRect SwFrmFmt::FindLayoutRect( const sal_Bool bPrtArea, const Point* pPoint, SwContact* SwFrmFmt::FindContactObj() { - SwClientIter aIter( *this ); - return (SwContact*)aIter.First( TYPE( SwContact ) ); + return SwIterator<SwContact,SwFmt>::FirstElement( *this ); } SdrObject* SwFrmFmt::FindSdrObject() @@ -2573,7 +2612,7 @@ SdrObject* SwFrmFmt::FindRealSdrObject() if( RES_FLYFRMFMT == Which() ) { Point aNullPt; - SwFlyFrm* pFly = (SwFlyFrm*)::GetFrmOfModify( *this, FRM_FLY, + SwFlyFrm* pFly = (SwFlyFrm*)::GetFrmOfModify( 0, *this, FRM_FLY, &aNullPt, 0, sal_False ); return pFly ? pFly->GetVirtDrawObj() : 0; } @@ -2585,12 +2624,10 @@ sal_Bool SwFrmFmt::IsLowerOf( const SwFrmFmt& rFmt ) const { //Auch eine Verkettung von Innen nach aussen oder von aussen //nach innen ist nicht zulaessig. - SwClientIter aIter( *(SwModify*)this ); - SwFlyFrm *pSFly = (SwFlyFrm*)aIter.First( TYPE(SwFlyFrm) ); + SwFlyFrm *pSFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement(*this); if( pSFly ) { - SwClientIter aOtherIter( (SwModify&)rFmt ); - SwFlyFrm *pAskFly = (SwFlyFrm*)aOtherIter.First( TYPE(SwFlyFrm) ); + SwFlyFrm *pAskFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement(rFmt); if( pAskFly ) return pSFly->IsLowerOf( pAskFly ); } @@ -2672,22 +2709,20 @@ IMPL_FIXEDMEMPOOL_NEWDEL( SwFlyFrmFmt, 10, 10 ) SwFlyFrmFmt::~SwFlyFrmFmt() { - SwClientIter aIter( *this ); - SwClient * pLast = aIter.GoStart(); + SwIterator<SwFlyFrm,SwFmt> aIter( *this ); + SwFlyFrm * pLast = aIter.First(); if( pLast ) do { - if ( pLast->ISA( SwFlyFrm ) ) delete pLast; + } while( 0 != ( pLast = aIter.Next() )); - } while( 0 != ( pLast = aIter++ )); - - pLast = aIter.GoStart(); - if( pLast ) + SwIterator<SwFlyDrawContact,SwFmt> a2ndIter( *this ); + SwFlyDrawContact* pC = a2ndIter.First(); + if( pC ) do { - if ( pLast->ISA( SwFlyDrawContact ) ) - delete pLast; + delete pC; - } while( 0 != ( pLast = aIter++ )); + } while( 0 != ( pC = a2ndIter.Next() )); } //Erzeugen der Frms wenn das Format einen Absatzgebundenen Rahmen beschreibt. @@ -2696,8 +2731,8 @@ SwFlyFrmFmt::~SwFlyFrmFmt() void SwFlyFrmFmt::MakeFrms() { // gibts ueberhaupt ein Layout ?? - if( !GetDoc()->GetRootFrm() ) - return; + if( !GetDoc()->GetCurrentViewShell() ) + return; //swmod 071108//swmod 071225 SwModify *pModify = 0; // OD 24.07.2003 #111032# - create local copy of anchor attribute for possible changes. @@ -2730,8 +2765,7 @@ void SwFlyFrmFmt::MakeFrms() if ( pCNd ) // <-- { - SwClientIter aIter( *pCNd ); - if ( aIter.First( TYPE(SwFrm) ) ) + if( SwIterator<SwFrm,SwCntntNode>::FirstElement( *pCNd ) ) { pModify = pCNd; } @@ -2759,17 +2793,15 @@ void SwFlyFrmFmt::MakeFrms() case FLY_AT_PAGE: { sal_uInt16 nPgNum = aAnchorAttr.GetPageNum(); - SwPageFrm *pPage = (SwPageFrm*)GetDoc()->GetRootFrm()->Lower(); + SwPageFrm *pPage = (SwPageFrm*)GetDoc()->GetCurrentLayout()->Lower(); //swmod 080218 if( !nPgNum && aAnchorAttr.GetCntntAnchor() ) { SwCntntNode *pCNd = aAnchorAttr.GetCntntAnchor()->nNode.GetNode().GetCntntNode(); - SwClientIter aIter( *pCNd ); - do + SwIterator<SwFrm,SwCntntNode> aIter( *pCNd ); + for (SwFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { - if( aIter()->ISA( SwFrm ) ) - { - pPage = ((SwFrm*)aIter())->FindPageFrm(); + pPage = pFrm->FindPageFrm(); if( pPage ) { nPgNum = pPage->GetPhyPageNum(); @@ -2780,7 +2812,6 @@ void SwFlyFrmFmt::MakeFrms() } break; } - } while ( aIter++ ); } while ( pPage ) { @@ -2801,10 +2832,8 @@ void SwFlyFrmFmt::MakeFrms() if( pModify ) { - SwClientIter aIter( *pModify ); - for( SwFrm *pFrm = (SwFrm*)aIter.First( TYPE(SwFrm) ); - pFrm; - pFrm = (SwFrm*)aIter.Next() ) + SwIterator<SwFrm,SwModify> aIter( *pModify ); + for( SwFrm *pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { sal_Bool bAdd = !pFrm->IsCntntFrm() || !((SwCntntFrm*)pFrm)->IsFollow(); @@ -2853,16 +2882,16 @@ void SwFlyFrmFmt::MakeFrms() switch( aAnchorAttr.GetAnchorId() ) { case FLY_AT_FLY: - pFly = new SwFlyLayFrm( this, pFrm ); + pFly = new SwFlyLayFrm( this, pFrm, pFrm ); break; case FLY_AT_PARA: case FLY_AT_CHAR: - pFly = new SwFlyAtCntFrm( this, pFrm ); + pFly = new SwFlyAtCntFrm( this, pFrm, pFrm ); break; case FLY_AS_CHAR: - pFly = new SwFlyInCntFrm( this, pFrm ); + pFly = new SwFlyInCntFrm( this, pFrm, pFrm ); break; default: ASSERT( !this, "Neuer Ankertyp" ) @@ -2879,7 +2908,7 @@ void SwFlyFrmFmt::MakeFrms() SwFlyFrm* SwFlyFrmFmt::GetFrm( const Point* pPoint, const sal_Bool bCalcFrm ) const { - return (SwFlyFrm*)::GetFrmOfModify( *(SwModify*)this, FRM_FLY, + return (SwFlyFrm*)::GetFrmOfModify( 0, *(SwModify*)this, FRM_FLY, pPoint, 0, bCalcFrm ); } @@ -2903,8 +2932,7 @@ sal_Bool SwFlyFrmFmt::GetInfo( SfxPoolItem& rInfo ) const { case RES_CONTENT_VISIBLE: { - ((SwPtrMsgPoolItem&)rInfo).pObject = - SwClientIter( *(SwFlyFrmFmt*)this ).First( TYPE(SwFrm) ); + ((SwPtrMsgPoolItem&)rInfo).pObject = SwIterator<SwFrm,SwFmt>::FirstElement( *this ); } return sal_False; @@ -2930,7 +2958,7 @@ void SwFlyFrmFmt::SetObjTitle( const String& rTitle, bool bBroadcast ) SwStringMsgPoolItem aOld( RES_TITLE_CHANGED, pMasterObject->GetTitle() ); SwStringMsgPoolItem aNew( RES_TITLE_CHANGED, rTitle ); pMasterObject->SetTitle( rTitle ); - Modify( &aOld, &aNew ); + ModifyNotification( &aOld, &aNew ); } else { @@ -2966,7 +2994,7 @@ void SwFlyFrmFmt::SetObjDescription( const String& rDescription, bool bBroadcast SwStringMsgPoolItem aOld( RES_DESCRIPTION_CHANGED, pMasterObject->GetDescription() ); SwStringMsgPoolItem aNew( RES_DESCRIPTION_CHANGED, rDescription ); pMasterObject->SetDescription( rDescription ); - Modify( &aOld, &aNew ); + ModifyNotification( &aOld, &aNew ); } else { @@ -3074,33 +3102,32 @@ SwHandleAnchorNodeChg::SwHandleAnchorNodeChg( SwFlyFrmFmt& _rFlyFrmFmt, { // determine 'old' number of anchor frames sal_uInt32 nOldNumOfAnchFrm( 0L ); - SwClientIter aOldIter( *(aOldAnchorFmt.GetCntntAnchor()->nNode.GetNode().GetCntntNode()) ); - for( aOldIter.First( TYPE(SwFrm) ); aOldIter(); aOldIter.Next() ) + SwIterator<SwFrm,SwCntntNode> aOldIter( *(aOldAnchorFmt.GetCntntAnchor()->nNode.GetNode().GetCntntNode()) ); + for( SwFrm* pOld = aOldIter.First(); pOld; pOld = aOldIter.Next() ) { ++nOldNumOfAnchFrm; } // determine 'new' number of anchor frames sal_uInt32 nNewNumOfAnchFrm( 0L ); - SwClientIter aNewIter( *(_rNewAnchorFmt.GetCntntAnchor()->nNode.GetNode().GetCntntNode()) ); - for( aNewIter.First( TYPE(SwFrm) ); aNewIter(); aNewIter.Next() ) + SwIterator<SwFrm,SwCntntNode> aNewIter( *(_rNewAnchorFmt.GetCntntAnchor()->nNode.GetNode().GetCntntNode()) ); + for( SwFrm* pNew = aNewIter.First(); pNew; pNew = aNewIter.Next() ) { ++nNewNumOfAnchFrm; } if ( nOldNumOfAnchFrm != nNewNumOfAnchFrm ) { // delete existing fly frames except <_pKeepThisFlyFrm> - SwClientIter aIter( mrFlyFrmFmt ); - SwClient* pLast = aIter.GoStart(); - if ( pLast ) + SwIterator<SwFrm,SwFmt> aIter( mrFlyFrmFmt ); + SwFrm* pFrm = aIter.First(); + if ( pFrm ) { do { - SwFrm* pFrm( dynamic_cast<SwFrm*>(pLast) ); - if ( pFrm && pFrm != _pKeepThisFlyFrm ) + if ( pFrm != _pKeepThisFlyFrm ) { pFrm->Cut(); delete pFrm; } - } while( 0 != ( pLast = aIter++ )); + } while( 0 != ( pFrm = aIter.Next() )); } // indicate, that re-creation of fly frames necessary mbAnchorNodeChanged = true; @@ -3214,7 +3241,7 @@ IMapObject* SwFrmFmt::GetIMapObject( const Point& rPoint, if( !pFly ) { - pFly = (SwFlyFrm*) SwClientIter( *(SwFrmFmt*)this ).First( TYPE( SwFlyFrm )); + pFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement( *this ); if( !pFly ) return 0; } diff --git a/sw/source/core/layout/calcmove.cxx b/sw/source/core/layout/calcmove.cxx index 0f4a60c3fa5b..90eb1f9ddff2 100644 --- a/sw/source/core/layout/calcmove.cxx +++ b/sw/source/core/layout/calcmove.cxx @@ -33,6 +33,7 @@ #include "viewsh.hxx" #include "doc.hxx" #include "viewimp.hxx" +#include "viewopt.hxx" #include "swtypes.hxx" #include "dflyobj.hxx" #include "dcontact.hxx" @@ -179,9 +180,9 @@ sal_Bool SwCntntFrm::ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool, sal_Bool //determine space left in new upper frame nSpace = (aRect.*fnRectX->fnGetHeight)(); - + const ViewShell *pSh = pNewUpper->getRootFrm()->GetCurrShell(); if ( IsInFtn() || - pIDSA->get(IDocumentSettingAccess::BROWSE_MODE) || + (pSh && pSh->GetViewOptions()->getBrowseMode()) || pNewUpper->IsCellFrm() || ( pNewUpper->IsInSct() && ( pNewUpper->IsSctFrm() || ( pNewUpper->IsColBodyFrm() && @@ -732,8 +733,8 @@ void SwPageFrm::MakeAll() pAttrs = pAccess->Get(); } //Bei der BrowseView gelten feste Einstellungen. - ViewShell *pSh = GetShell(); - if ( pSh && GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + ViewShell *pSh = getRootFrm()->GetCurrShell(); + if ( pSh && pSh->GetViewOptions()->getBrowseMode() ) { const Size aBorder = pSh->GetOut()->PixelToLogic( pSh->GetBrowseBorder() ); const long nTop = pAttrs->CalcTopLine() + aBorder.Height(); @@ -986,11 +987,11 @@ sal_Bool SwCntntFrm::MakePrtArea( const SwBorderAttrs &rAttrs ) const long nRight = ((SwBorderAttrs&)rAttrs).CalcRight( this ); (this->*fnRect->fnSetXMargins)( nLeft, nRight ); - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); SwTwips nWidthArea; if( pSh && 0!=(nWidthArea=(pSh->VisArea().*fnRect->fnGetWidth)()) && GetUpper()->IsPageBodyFrm() && // nicht dagegen bei BodyFrms in Columns - pSh->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + pSh->GetViewOptions()->getBrowseMode() ) { //Nicht ueber die Kante des sichbaren Bereiches hinausragen. //Die Seite kann breiter sein, weil es Objekte mit "ueberbreite" diff --git a/sw/source/core/layout/colfrm.cxx b/sw/source/core/layout/colfrm.cxx index 854012ca9e57..0e2aaa1c0081 100644 --- a/sw/source/core/layout/colfrm.cxx +++ b/sw/source/core/layout/colfrm.cxx @@ -45,6 +45,7 @@ #include "bodyfrm.hxx" // ColumnFrms jetzt mit BodyFrm #include "rootfrm.hxx" // wg. RemoveFtns #include "sectfrm.hxx" // wg. FtnAtEnd-Flag +#include "switerator.hxx" // ftnfrm.cxx: void lcl_RemoveFtns( SwFtnBossFrm* pBoss, sal_Bool bPageOnly, sal_Bool bEndNotes ); @@ -58,11 +59,11 @@ void lcl_RemoveFtns( SwFtnBossFrm* pBoss, sal_Bool bPageOnly, sal_Bool bEndNotes |* Letzte Aenderung AMA 30. Oct 98 |* |*************************************************************************/ -SwColumnFrm::SwColumnFrm( SwFrmFmt *pFmt ): - SwFtnBossFrm( pFmt ) +SwColumnFrm::SwColumnFrm( SwFrmFmt *pFmt, SwFrm* pSib ): + SwFtnBossFrm( pFmt, pSib ) { nType = FRMC_COLUMN; - SwBodyFrm* pColBody = new SwBodyFrm( pFmt->GetDoc()->GetDfltFrmFmt() ); + SwBodyFrm* pColBody = new SwBodyFrm( pFmt->GetDoc()->GetDfltFrmFmt(), pSib ); pColBody->InsertBehind( this, 0 ); // ColumnFrms jetzt mit BodyFrm SetMaxFtnHeight( LONG_MAX ); } @@ -143,8 +144,8 @@ static sal_Bool lcl_AddColumns( SwLayoutFrm *pCont, sal_uInt16 nCount ) if ( pCont->IsBodyFrm() ) pAttrOwner = pCont->FindPageFrm(); SwLayoutFrm *pNeighbourCol = 0; - SwClientIter aIter( *pAttrOwner->GetFmt() ); - SwLayoutFrm *pNeighbour = (SwLayoutFrm*)aIter.First( TYPE(SwLayoutFrm) ); + SwIterator<SwLayoutFrm,SwFmt> aIter( *pAttrOwner->GetFmt() ); + SwLayoutFrm *pNeighbour = aIter.First(); sal_uInt16 nAdd = 0; SwFrm *pCol = pCont->Lower(); @@ -157,7 +158,7 @@ static sal_Bool lcl_AddColumns( SwLayoutFrm *pCont, sal_uInt16 nCount ) pNeighbourCol != pCont ) break; pNeighbourCol = 0; - pNeighbour = (SwLayoutFrm*)aIter.Next(); + pNeighbour = aIter.Next(); } sal_Bool bRet; @@ -174,7 +175,7 @@ static sal_Bool lcl_AddColumns( SwLayoutFrm *pCont, sal_uInt16 nCount ) } for ( sal_uInt16 i = 0; i < nCount; ++i ) { - SwColumnFrm *pTmpCol = new SwColumnFrm( pNeighbourCol->GetFmt() ); + SwColumnFrm *pTmpCol = new SwColumnFrm( pNeighbourCol->GetFmt(), pCont ); pTmpCol->SetMaxFtnHeight( nMax ); pTmpCol->InsertBefore( pCont, NULL ); pNeighbourCol = (SwLayoutFrm*)pNeighbourCol->GetNext(); @@ -186,7 +187,7 @@ static sal_Bool lcl_AddColumns( SwLayoutFrm *pCont, sal_uInt16 nCount ) for ( sal_uInt16 i = 0; i < nCount; ++i ) { SwFrmFmt *pFmt = pDoc->MakeFrmFmt( aEmptyStr, pDoc->GetDfltFrmFmt()); - SwColumnFrm *pTmp = new SwColumnFrm( pFmt ); + SwColumnFrm *pTmp = new SwColumnFrm( pFmt, pCont ); pTmp->SetMaxFtnHeight( nMax ); pTmp->Paste( pCont ); } @@ -248,7 +249,11 @@ void SwLayoutFrm::ChgColumns( const SwFmtCol &rOld, const SwFmtCol &rNew, // SaveCntnt wuerde auch den Inhalt der Fussnotencontainer aufsaugen // und im normalen Textfluss unterbringen. if( IsPageBodyFrm() ) +<<<<<<< local + pDoc->GetCurrentLayout()->RemoveFtns( (SwPageFrm*)GetUpper(), TRUE, FALSE ); //swmod 080218 +======= pDoc->GetRootFrm()->RemoveFtns( (SwPageFrm*)GetUpper(), sal_True, sal_False ); +>>>>>>> other pSave = ::SaveCntnt( this ); //Wenn Spalten existieren, jetzt aber eine Spaltenanzahl von diff --git a/sw/source/core/layout/findfrm.cxx b/sw/source/core/layout/findfrm.cxx index dfdc9dc04c53..0af84edd0691 100644 --- a/sw/source/core/layout/findfrm.cxx +++ b/sw/source/core/layout/findfrm.cxx @@ -47,8 +47,8 @@ #include "ftnfrm.hxx" #include "txtftn.hxx" #include "fmtftn.hxx" -// OD 09.01.2004 #i11859# #include <txtfrm.hxx> // SwTxtFrm +#include <switerator.hxx> /************************************************************************* |* @@ -468,22 +468,6 @@ const SwCntntFrm* SwCntntFrm::ImplGetNextCntntFrm( bool bFwd ) const |* Letzte Aenderung MA 05. Sep. 93 |* |*************************************************************************/ -SwRootFrm* SwFrm::FindRootFrm() -{ - // MIB: A layout frame is always registerd at a SwFrmFmt and a content - // frame alyways at a SwCntntNode. For any other case we won't find - // a root frame. - // Casting the GetDep() result instead of the frame itself (that has - // been done before) makes it save to use that method in constructors - // and destructors. - ASSERT( GetDep(), "frame is not registered any longer" ); - ASSERT( IsLayoutFrm() || IsCntntFrm(), "invalid frame type" ); - SwDoc *pDoc = IsLayoutFrm() - ? static_cast < SwFrmFmt * >( GetDep() )->GetDoc() - : static_cast < SwCntntNode * >( GetDep() )->GetDoc(); - return pDoc->GetRootFrm(); -} - SwPageFrm* SwFrm::FindPageFrm() { SwFrm *pRet = this; @@ -1699,13 +1683,10 @@ const SwCellFrm& SwCellFrm::FindStartEndOfRowSpanCell( bool bStart, bool bCurren GetTabBox()->FindStartOfRowSpan( *pTable, nMax ) : GetTabBox()->FindEndOfRowSpan( *pTable, nMax ); - SwClientIter aIter( const_cast<SwFrmFmt&>( *rMasterBox.GetFrmFmt()) ); + SwIterator<SwCellFrm,SwFmt> aIter( *rMasterBox.GetFrmFmt() ); - for ( SwClient* pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) + for ( SwCellFrm* pMasterCell = aIter.First(); pMasterCell; pMasterCell = aIter.Next() ) { - ASSERT( ((SwFrm*)pLast)->IsCellFrm(), "Non-row frame registered in table line" ) - const SwCellFrm* pMasterCell = static_cast<const SwCellFrm*>(pLast); - if ( pMasterCell->GetTabBox() == &rMasterBox ) { const SwTabFrm* pMasterTable = static_cast<const SwTabFrm*>(pMasterCell->GetUpper()->GetUpper()); diff --git a/sw/source/core/layout/flowfrm.cxx b/sw/source/core/layout/flowfrm.cxx index f5edaf5bbab4..65e0bd6734a8 100644 --- a/sw/source/core/layout/flowfrm.cxx +++ b/sw/source/core/layout/flowfrm.cxx @@ -30,11 +30,13 @@ #include "pam.hxx" #include "swtable.hxx" #include "frame.hxx" +#include "rootfrm.hxx" #include "pagefrm.hxx" #include "flyfrm.hxx" #include "viewsh.hxx" #include "doc.hxx" #include "viewimp.hxx" +#include "viewopt.hxx" #include "dflyobj.hxx" #include "frmtool.hxx" #include "dcontact.hxx" @@ -49,7 +51,6 @@ #include <fmtftn.hxx> #include <editeng/pgrditem.hxx> #include <paratr.hxx> - #include "ftnfrm.hxx" #include "txtfrm.hxx" #include "tabfrm.hxx" @@ -61,15 +62,11 @@ #include "section.hxx" #include "dbg_lay.hxx" #include "lineinfo.hxx" -// OD 2004-03-02 #106629# #include <fmtclbl.hxx> -// --> OD 2004-06-23 #i28701# #include <sortedobjs.hxx> #include <layouter.hxx> -// <-- -// --> OD 2004-10-15 #i26945# #include <fmtfollowtextflow.hxx> -// <-- +#include <switerator.hxx> sal_Bool SwFlowFrm::bMoveBwdJump = sal_False; @@ -604,7 +601,7 @@ void SwFlowFrm::MoveSubTree( SwLayoutFrm* pParent, SwFrm* pSibling ) ASSERT( rThis.GetUpper(), "Wo kommen wir denn her?" ); //Sparsamer benachrichtigen wenn eine Action laeuft. - ViewShell *pSh = rThis.GetShell(); + ViewShell *pSh = rThis.getRootFrm()->GetCurrShell(); const SwViewImp *pImp = pSh ? pSh->Imp() : 0; const sal_Bool bComplete = pImp && pImp->IsAction() && pImp->GetLayAction().IsComplete(); @@ -737,20 +734,13 @@ SwSectionFrm* SwSectionFrm::FindMaster() const { ASSERT( IsFollow(), "SwSectionFrm::FindMaster(): !IsFollow" ); - SwClientIter aIter( *pSection->GetFmt() ); - SwClient *pLast = aIter.GoStart(); - - while ( pLast ) + SwIterator<SwSectionFrm,SwFmt> aIter( *pSection->GetFmt() ); + SwSectionFrm* pSect = aIter.First(); + while ( pSect ) { - if ( pLast->ISA( SwFrm ) ) - { - ASSERT( ((SwFrm*)pLast)->IsSctFrm(), - "Non-section frame registered in section format" ) - SwSectionFrm* pSect = (SwSectionFrm*)pLast; if( pSect->GetFollow() == this ) return pSect; - } - pLast = aIter++; + pSect = aIter.Next(); } ASSERT( sal_False, "Follow ist lost in Space." ); @@ -761,17 +751,10 @@ SwTabFrm* SwTabFrm::FindMaster( bool bFirstMaster ) const { ASSERT( IsFollow(), "SwTabFrm::FindMaster(): !IsFollow" ); - SwClientIter aIter( *GetTable()->GetFrmFmt() ); - SwClient* pLast = aIter.GoStart(); - - while ( pLast ) + SwIterator<SwTabFrm,SwFmt> aIter( *GetTable()->GetFrmFmt() ); + SwTabFrm* pTab = aIter.First(); + while ( pTab ) { - if ( pLast->ISA( SwFrm ) ) - { - ASSERT( ((SwFrm*)pLast)->IsTabFrm(), - "Non-table frame registered in table format" ) - SwTabFrm* pTab = (SwTabFrm*)pLast; - if ( bFirstMaster ) { // @@ -795,8 +778,8 @@ SwTabFrm* SwTabFrm::FindMaster( bool bFirstMaster ) const if ( pTab->GetFollow() == this ) return pTab; } - } - pLast = aIter++; + + pTab = aIter.Next(); } ASSERT( sal_False, "Follow ist lost in Space." ); @@ -1042,12 +1025,13 @@ SwLayoutFrm *SwFrm::GetNextLeaf( MakePageType eMakePage ) return pLayLeaf; SwPageFrm *pNew = pLayLeaf->FindPageFrm(); + const ViewShell *pSh = getRootFrm()->GetCurrShell(); // #111704# The pagedesc check does not make sense for frames in fly frames if ( pNew != FindPageFrm() && !bNewPg && !IsInFly() && // --> FME 2005-05-10 #i46683# // Do not consider page descriptions in browse mode (since // MoveBwd ignored them) - !pNew->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + !(pSh && pSh->GetViewOptions()->getBrowseMode() ) ) // <-- { if( WrongPageDesc( pNew ) ) @@ -1173,8 +1157,14 @@ sal_Bool SwFlowFrm::IsPrevObjMove() const // und fuer diesen ggf. Umbrechen. //!!!!!!!!!!!Hack!!!!!!!!!!! +<<<<<<< local + const ViewShell *pSh = rThis.getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) + return FALSE; +======= if ( rThis.GetUpper()->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) return sal_False; +>>>>>>> other SwFrm *pPre = rThis.FindPrev(); @@ -1252,9 +1242,11 @@ sal_Bool SwFlowFrm::IsPrevObjMove() const sal_Bool SwFlowFrm::IsPageBreak( sal_Bool bAct ) const { if ( !IsFollow() && rThis.IsInDocBody() && - ( !rThis.IsInTab() || ( rThis.IsTabFrm() && !rThis.GetUpper()->IsInTab() ) ) && // i66968 - !rThis.GetUpper()->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + ( !rThis.IsInTab() || ( rThis.IsTabFrm() && !rThis.GetUpper()->IsInTab() ) ) ) // i66968 { + const ViewShell *pSh = rThis.getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) + return FALSE; const SwAttrSet *pSet = rThis.GetAttrSet(); //Vorgaenger ermitteln @@ -2113,7 +2105,7 @@ sal_Bool SwFlowFrm::MoveFwd( sal_Bool bMakePage, sal_Bool bPageBreak, sal_Bool b rThis.Prepare( PREP_BOSS_CHGD, 0, sal_False ); if( !bSamePage ) { - ViewShell *pSh = rThis.GetShell(); + ViewShell *pSh = rThis.getRootFrm()->GetCurrShell(); if ( pSh && !pSh->Imp()->IsUpdateExpFlds() ) pSh->GetDoc()->SetNewFldLst(true); //Wird von CalcLayout() hinterher erledigt! @@ -2125,7 +2117,9 @@ sal_Bool SwFlowFrm::MoveFwd( sal_Bool bMakePage, sal_Bool bPageBreak, sal_Bool b } } // OD 30.10.2002 #97265# - no <CheckPageDesc(..)> in online layout - if ( !pNewPage->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + const ViewShell *pSh = rThis.getRootFrm()->GetCurrShell(); + + if ( !( pSh && pSh->GetViewOptions()->getBrowseMode() ) ) { // --> OD 2009-12-31 #i106452# // check page description not only in situation with sections. @@ -2593,7 +2587,7 @@ sal_Bool SwFlowFrm::MoveBwd( sal_Bool &rbReformat ) { //Kann sein, dass ich einen Container bekam. SwFtnFrm *pOld = rThis.FindFtnFrm(); - SwFtnFrm *pNew = new SwFtnFrm( pOld->GetFmt(), + SwFtnFrm *pNew = new SwFtnFrm( pOld->GetFmt(), pOld, pOld->GetRef(), pOld->GetAttr() ); if ( pOld->GetMaster() ) { @@ -2673,8 +2667,13 @@ sal_Bool SwFlowFrm::MoveBwd( sal_Bool &rbReformat ) SwPageFrm *pNewPage = rThis.FindPageFrm(); if( pNewPage != pOldPage ) { +<<<<<<< local + rThis.Prepare( PREP_BOSS_CHGD, (const void*)pOldPage, FALSE ); + ViewShell *pSh = rThis.getRootFrm()->GetCurrShell(); +======= rThis.Prepare( PREP_BOSS_CHGD, (const void*)pOldPage, sal_False ); ViewShell *pSh = rThis.GetShell(); +>>>>>>> other if ( pSh && !pSh->Imp()->IsUpdateExpFlds() ) pSh->GetDoc()->SetNewFldLst(true); //Wird von CalcLayout() hinterher eledigt! @@ -2684,7 +2683,7 @@ sal_Bool SwFlowFrm::MoveBwd( sal_Bool &rbReformat ) pNewPage->InvalidateWordCount(); // OD 30.10.2002 #97265# - no <CheckPageDesc(..)> in online layout - if ( !pNewPage->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if ( !( pSh && pSh->GetViewOptions()->getBrowseMode() ) ) { if ( bCheckPageDescs && pNewPage->GetNext() ) { diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx index 38ce56f902d4..fe79266ac084 100644 --- a/sw/source/core/layout/fly.cxx +++ b/sw/source/core/layout/fly.cxx @@ -50,27 +50,16 @@ #include <fmtcnct.hxx> #include <layhelp.hxx> #include <ndtxt.hxx> - -// --> OD 2010-09-14 #i113730# #include <svx/svdogrp.hxx> -// <-- -// OD 16.04.2003 #i13147# - for <SwFlyFrm::GetContour(..)> #include <ndgrf.hxx> -// OD 29.10.2003 #113049# #include <tolayoutanchoredobjectposition.hxx> -// OD 06.11.2003 #i22305# #include <fmtfollowtextflow.hxx> -// --> OD 2004-06-28 #i28701# #include <sortedobjs.hxx> #include <objectformatter.hxx> -// <-- -// OD 2004-04-06 #i26791# #include <anchoredobject.hxx> -// --> OD 2006-01-31 #i53298# #include <ndole.hxx> -// <-- #include <swtable.hxx> - +#include <svx/svdpage.hxx> #include "doc.hxx" #include "viewsh.hxx" #include "layouter.hxx" @@ -80,6 +69,7 @@ #include "pam.hxx" #include "frmatr.hxx" #include "viewimp.hxx" +#include "viewopt.hxx" #include "errhdl.hxx" #include "dcontact.hxx" #include "dflyobj.hxx" @@ -98,6 +88,7 @@ #include "sectfrm.hxx" #include <vcl/svapp.hxx> #include <vcl/salbtype.hxx> // FRound +#include "switerator.hxx" using namespace ::com::sun::star; @@ -114,8 +105,8 @@ TYPEINIT2(SwFlyFrm,SwLayoutFrm,SwAnchoredObject); |* |*************************************************************************/ -SwFlyFrm::SwFlyFrm( SwFlyFrmFmt *pFmt, SwFrm *pAnch ) : - SwLayoutFrm( pFmt ), +SwFlyFrm::SwFlyFrm( SwFlyFrmFmt *pFmt, SwFrm* pSib, SwFrm *pAnch ) : + SwLayoutFrm( pFmt, pSib ), // OD 2004-03-22 #i26791# SwAnchoredObject(), // OD 2004-05-27 #i26791# - moved to <SwAnchoredObject> @@ -152,11 +143,16 @@ SwFlyFrm::SwFlyFrm( SwFlyFrmFmt *pFmt, SwFrm *pAnch ) : bInvalidVert = 0; bDerivedVert = 0; bDerivedR2L = 0; - if( FRMDIR_HORI_LEFT_TOP == nDir || FRMDIR_HORI_RIGHT_TOP == nDir - || pFmt->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if( FRMDIR_HORI_LEFT_TOP == nDir || FRMDIR_HORI_RIGHT_TOP == nDir ) + bVertical = 0; + else + { + const ViewShell *pSh = getRootFrm() ? getRootFrm()->GetCurrShell() : 0; + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) bVertical = 0; else bVertical = 1; + } bVert = bVertical; bInvalidR2L = 0; if( FRMDIR_HORI_RIGHT_TOP == nDir ) @@ -291,7 +287,7 @@ SwFlyFrm::~SwFlyFrm() // anchor will do that. if( IsAccessibleFrm() && GetFmt() && (IsFlyInCntFrm() || !GetAnchorFrm()) ) { - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() ) { ViewShell *pVSh = pRootFrm->GetCurrShell(); @@ -382,15 +378,85 @@ void SwFlyFrm::DeleteCnt() |* Letzte Aenderung MA 30. Nov. 95 |* |*************************************************************************/ +<<<<<<< local + +sal_uInt32 SwFlyFrm::_GetOrdNumForNewRef( const SwFlyDrawContact* pContact ) +{ + sal_uInt32 nOrdNum( 0L ); + + // search for another Writer fly frame registered at same frame format + SwIterator<SwFlyFrm,SwFmt> aIter( *pContact->GetFmt() ); + const SwFlyFrm* pFlyFrm( 0L ); + for ( pFlyFrm = aIter.First(); pFlyFrm; pFlyFrm = aIter.Next() ) + { + if ( pFlyFrm != this ) + { + break; + } + } + + if ( pFlyFrm ) + { + // another Writer fly frame found. Take its order number + nOrdNum = pFlyFrm->GetVirtDrawObj()->GetOrdNum(); + } + else + { + // no other Writer fly frame found. Take order number of 'master' object + // --> OD 2004-11-11 #i35748# - use method <GetOrdNumDirect()> instead + // of method <GetOrdNum()> to avoid a recalculation of the order number, + // which isn't intended. + nOrdNum = pContact->GetMaster()->GetOrdNumDirect(); + // <-- + } + + return nOrdNum; +} + +SwVirtFlyDrawObj* SwFlyFrm::CreateNewRef( SwFlyDrawContact *pContact ) +{ + SwVirtFlyDrawObj *pDrawObj = new SwVirtFlyDrawObj( *pContact->GetMaster(), this ); + pDrawObj->SetModel( pContact->GetMaster()->GetModel() ); + pDrawObj->SetUserCall( pContact ); + + //Der Reader erzeugt die Master und setzt diese, um die Z-Order zu + //transportieren, in die Page ein. Beim erzeugen der ersten Referenz werden + //die Master aus der Liste entfernt und fuehren von da an ein + //Schattendasein. + SdrPage* pPg( 0L ); + if ( 0 != ( pPg = pContact->GetMaster()->GetPage() ) ) + { + const UINT32 nOrdNum = pContact->GetMaster()->GetOrdNum(); + pPg->ReplaceObject( pDrawObj, nOrdNum ); + } + // --> OD 2004-08-16 #i27030# - insert new <SwVirtFlyDrawObj> instance + // into drawing page with correct order number + else + { + pContact->GetFmt()->getIDocumentDrawModelAccess()->GetDrawModel()->GetPage( 0 )-> + InsertObject( pDrawObj, _GetOrdNumForNewRef( pContact ) ); + } + // <-- + // --> OD 2004-12-13 #i38889# - assure, that new <SwVirtFlyDrawObj> instance + // is in a visible layer. + pContact->MoveObjToVisibleLayer( pDrawObj ); + // <-- + return pDrawObj; +} + + + +void SwFlyFrm::InitDrawObj( BOOL bNotify ) +======= void SwFlyFrm::InitDrawObj( sal_Bool bNotify ) +>>>>>>> other { //ContactObject aus dem Format suchen. Wenn bereits eines existiert, so //braucht nur eine neue Ref erzeugt werden, anderfalls ist es jetzt an //der Zeit das Contact zu erzeugen. - SwClientIter aIter( *GetFmt() ); - SwFlyDrawContact *pContact = (SwFlyDrawContact*) - aIter.First( TYPE(SwFlyDrawContact) ); + IDocumentDrawModelAccess* pIDDMA = GetFmt()->getIDocumentDrawModelAccess(); + SwFlyDrawContact *pContact = SwIterator<SwFlyDrawContact,SwFmt>::FirstElement( *GetFmt() ); if ( !pContact ) { // --> OD 2005-08-08 #i52858# - method name changed @@ -400,7 +466,7 @@ void SwFlyFrm::InitDrawObj( sal_Bool bNotify ) } ASSERT( pContact, "InitDrawObj failed" ); // OD 2004-03-22 #i26791# - SetDrawObj( *(pContact->CreateNewRef( this )) ); + SetDrawObj( *(CreateNewRef( pContact )) ); //Den richtigen Layer setzen. // OD 2004-01-19 #110582# @@ -431,7 +497,7 @@ void SwFlyFrm::FinitDrawObj() //Bei den SdrPageViews abmelden falls das Objekt dort noch selektiert ist. if ( !GetFmt()->GetDoc()->IsInDtor() ) { - ViewShell *p1St = GetShell(); + ViewShell *p1St = getRootFrm()->GetCurrShell(); if ( p1St ) { ViewShell *pSh = p1St; @@ -452,18 +518,19 @@ void SwFlyFrm::FinitDrawObj() SwFlyDrawContact *pMyContact = 0; if ( GetFmt() ) { - SwClientIter aIter( *GetFmt() ); - aIter.GoStart(); - do { - if ( aIter()->ISA(SwFrm) && (SwFrm*)aIter() != this ) + bool bContinue = true; + SwIterator<SwFrm,SwFmt> aFrmIter( *GetFmt() ); + for ( SwFrm* pFrm = aFrmIter.First(); pFrm; pFrm = aFrmIter.Next() ) + if ( pFrm != this ) { - pMyContact = 0; + // don't delete Contact if there is still a Frm + bContinue = false; break; } - if( !pMyContact && aIter()->ISA(SwFlyDrawContact) ) - pMyContact = (SwFlyDrawContact*)aIter(); - aIter++; - } while( aIter() ); + + if ( bContinue ) + // no Frm left, find Contact object to destroy + pMyContact = SwIterator<SwFlyDrawContact,SwFmt>::FirstElement( *GetFmt() ); } // OD, OS 2004-03-31 #116203# - clear user call of Writer fly frame 'master' @@ -527,10 +594,13 @@ void SwFlyFrm::ChainFrames( SwFlyFrm *pMaster, SwFlyFrm *pFollow ) } // invalidate accessible relation set (accessibility wrapper) - ViewShell* pSh = pMaster->GetShell(); - if( pSh && pSh->GetLayout()->IsAnyShellAccessible() ) + ViewShell* pSh = pMaster->getRootFrm()->GetCurrShell(); + if( pSh ) + { + SwRootFrm* pLayout = pMaster->getRootFrm(); + if( pLayout && pLayout->IsAnyShellAccessible() ) pSh->Imp()->InvalidateAccessibleRelationSet( pMaster, pFollow ); - + } } void SwFlyFrm::UnchainFrames( SwFlyFrm *pMaster, SwFlyFrm *pFollow ) @@ -570,10 +640,14 @@ void SwFlyFrm::UnchainFrames( SwFlyFrm *pMaster, SwFlyFrm *pFollow ) pFollow->GetFmt()->GetDoc(), ++nIndex ); // invalidate accessible relation set (accessibility wrapper) - ViewShell* pSh = pMaster->GetShell(); - if( pSh && pSh->GetLayout()->IsAnyShellAccessible() ) + ViewShell* pSh = pMaster->getRootFrm()->GetCurrShell(); + if( pSh ) + { + SwRootFrm* pLayout = pMaster->getRootFrm(); + if( pLayout && pLayout->IsAnyShellAccessible() ) pSh->Imp()->InvalidateAccessibleRelationSet( pMaster, pFollow ); } +} /************************************************************************* |* @@ -604,8 +678,8 @@ SwFlyFrm *SwFlyFrm::FindChainNeighbour( SwFrmFmt &rChain, SwFrm *pAnch ) pLay = pLay->GetUpper(); } - SwClientIter aIter( rChain ); - SwFlyFrm *pFly = (SwFlyFrm*)aIter.First( TYPE(SwFlyFrm ) ); + SwIterator<SwFlyFrm,SwFmt> aIter( rChain ); + SwFlyFrm *pFly = aIter.First(); if ( pLay ) { while ( pFly ) @@ -620,7 +694,7 @@ SwFlyFrm *SwFlyFrm::FindChainNeighbour( SwFrmFmt &rChain, SwFrm *pAnch ) else if ( pLay == pFly->FindFooterOrHeader() ) break; } - pFly = (SwFlyFrm*)aIter.Next(); + pFly = aIter.Next(); } } else if ( pFly ) @@ -723,7 +797,7 @@ sal_Bool SwFlyFrm::FrmSizeChg( const SwFmtFrmSize &rFrmSize ) |* |*************************************************************************/ -void SwFlyFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) +void SwFlyFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew ) { sal_uInt8 nInvFlags = 0; @@ -775,7 +849,7 @@ void SwFlyFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) if ( ( nInvFlags & 0x40 ) && Lower() && Lower()->IsNoTxtFrm() ) ClrContourCache( GetVirtDrawObj() ); SwRootFrm *pRoot; - if ( nInvFlags & 0x20 && 0 != (pRoot = FindRootFrm()) ) + if ( nInvFlags & 0x20 && 0 != (pRoot = getRootFrm()) ) pRoot->InvalidateBrowseWidth(); // --> OD 2004-06-28 #i28701# if ( nInvFlags & 0x80 ) @@ -791,13 +865,24 @@ void SwFlyFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) // <-- } +<<<<<<< local +void SwFlyFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem *pNew, + BYTE &rInvFlags, +======= void SwFlyFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, sal_uInt8 &rInvFlags, +>>>>>>> other SwAttrSetChg *pOldSet, SwAttrSetChg *pNewSet ) { +<<<<<<< local + BOOL bClear = TRUE; + const USHORT nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; + ViewShell *pSh = getRootFrm()->GetCurrShell(); +======= sal_Bool bClear = sal_True; const sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; ViewShell *pSh = GetShell(); +>>>>>>> other switch( nWhich ) { case RES_VERT_ORIENT: @@ -849,8 +934,12 @@ void SwFlyFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, const SvxProtectItem *pP = (SvxProtectItem*)pNew; GetVirtDrawObj()->SetMoveProtect( pP->IsPosProtected() ); GetVirtDrawObj()->SetResizeProtect( pP->IsSizeProtected() ); - if( pSh && pSh->GetLayout()->IsAnyShellAccessible() ) + if( pSh ) + { + SwRootFrm* pLayout = getRootFrm(); + if( pLayout && pLayout->IsAnyShellAccessible() ) pSh->Imp()->InvalidateAccessibleEditableState( sal_True, this ); + } break; } @@ -961,8 +1050,8 @@ void SwFlyFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, case RES_LR_SPACE: { rInvFlags |= 0x41; - if ( GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) - GetFmt()->GetDoc()->GetRootFrm()->InvalidateBrowseWidth(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) + getRootFrm()->InvalidateBrowseWidth(); SwRect aNew( GetObjRectWithSpaces() ); SwRect aOld( aFrm ); if ( RES_UL_SPACE == nWhich ) @@ -1003,11 +1092,15 @@ void SwFlyFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, pIDDMA->GetHeavenId() : pIDDMA->GetHellId(); GetVirtDrawObj()->SetLayer( nId ); - if( pSh && pSh->GetLayout()->IsAnyShellAccessible() ) + if( pSh ) + { + SwRootFrm* pLayout = getRootFrm(); + if( pLayout && pLayout->IsAnyShellAccessible() ) { pSh->Imp()->DisposeAccessibleFrm( this ); pSh->Imp()->AddAccessibleFrm( this ); } + } // --> OD 2004-06-28 #i28701# - perform reorder of object lists // at anchor frame and at page frame. rInvFlags |= 0x80; @@ -2198,7 +2291,7 @@ void SwFrm::RemoveFly( SwFlyFrm *pToRemove ) pToRemove->GetFmt() && !pToRemove->IsFlyInCntFrm() ) { - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() ) { ViewShell *pVSh = pRootFrm->GetCurrShell(); @@ -2289,9 +2382,11 @@ void SwFrm::AppendDrawObj( SwAnchoredObject& _rNewObj ) } // Notify accessible layout. - ViewShell* pSh = GetShell(); - if( pSh && pSh->GetLayout()->IsAnyShellAccessible() ) + ViewShell* pSh = getRootFrm()->GetCurrShell(); + if( pSh ) { + SwRootFrm* pLayout = getRootFrm(); + if( pLayout && pLayout->IsAnyShellAccessible() ) pSh->Imp()->AddAccessibleObj( _rNewObj.GetDrawObj() ); } } @@ -2299,9 +2394,11 @@ void SwFrm::AppendDrawObj( SwAnchoredObject& _rNewObj ) void SwFrm::RemoveDrawObj( SwAnchoredObject& _rToRemoveObj ) { // Notify accessible layout. - ViewShell* pSh = GetShell(); - if( pSh && pSh->GetLayout()->IsAnyShellAccessible() ) + ViewShell* pSh = getRootFrm()->GetCurrShell(); + if( pSh ) { + SwRootFrm* pLayout = getRootFrm(); + if( pLayout && pLayout->IsAnyShellAccessible() ) pSh->Imp()->DisposeAccessibleObj( _rToRemoveObj.GetDrawObj() ); } @@ -2521,10 +2618,10 @@ Size SwFlyFrm::CalcRel( const SwFmtFrmSize &rSz ) const if( pRel ) // LAYER_IMPL { long nRelWidth = LONG_MAX, nRelHeight = LONG_MAX; - const ViewShell *pSh = GetShell(); + const ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( ( pRel->IsBodyFrm() || pRel->IsPageFrm() ) && - GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && - pSh && pSh->VisArea().HasArea() ) + pSh && pSh->GetViewOptions()->getBrowseMode() && + pSh->VisArea().HasArea() ) { nRelWidth = pSh->GetBrowseWidth(); nRelHeight = pSh->VisArea().Height(); @@ -2853,6 +2950,13 @@ bool SwFlyFrm::IsFormatPossible() const !IsLocked() && !IsColLocked(); } +void SwFlyFrm::GetAnchoredObjects( std::list<SwAnchoredObject*>& aList, const SwFmt& rFmt ) +{ + SwIterator<SwFlyFrm,SwFmt> aIter( rFmt ); + for( SwFlyFrm* pFlyFrm = aIter.First(); pFlyFrm; pFlyFrm = aIter.Next() ) + aList.push_back( pFlyFrm ); +} + const SwFlyFrmFmt * SwFlyFrm::GetFmt() const { return static_cast< const SwFlyFrmFmt * >( GetDep() ); diff --git a/sw/source/core/layout/flycnt.cxx b/sw/source/core/layout/flycnt.cxx index aa0661f126b3..e6f73c81c381 100644 --- a/sw/source/core/layout/flycnt.cxx +++ b/sw/source/core/layout/flycnt.cxx @@ -30,7 +30,6 @@ #include <tools/bigint.hxx> #include "pagefrm.hxx" -#include "rootfrm.hxx" #include "cntfrm.hxx" #include "flyfrm.hxx" #include "txtfrm.hxx" @@ -85,8 +84,8 @@ using namespace ::com::sun::star; |* |*************************************************************************/ -SwFlyAtCntFrm::SwFlyAtCntFrm( SwFlyFrmFmt *pFmt, SwFrm *pAnch ) : - SwFlyFreeFrm( pFmt, pAnch ) +SwFlyAtCntFrm::SwFlyAtCntFrm( SwFlyFrmFmt *pFmt, SwFrm* pSib, SwFrm *pAnch ) : + SwFlyFreeFrm( pFmt, pSib, pAnch ) { bAtCnt = sal_True; bAutoPosition = (FLY_AT_CHAR == pFmt->GetAnchor().GetAnchorId()); @@ -104,7 +103,7 @@ TYPEINIT1(SwFlyAtCntFrm,SwFlyFreeFrm); |* |*************************************************************************/ -void SwFlyAtCntFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwFlyAtCntFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { sal_uInt16 nWhich = pNew ? pNew->Which() : 0; const SwFmtAnchor *pAnch = 0; @@ -196,7 +195,11 @@ void SwFlyAtCntFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) if ( !pCntnt ) { SwCntntNode *pNode = aNewIdx.GetNode().GetCntntNode(); +<<<<<<< local + pCntnt = pNode->getLayoutFrm( getRootFrm(), &pOldAnchor->Frm().Pos(), 0, FALSE ); +======= pCntnt = pNode->GetFrm( &pOldAnchor->Frm().Pos(), 0, sal_False ); +>>>>>>> other ASSERT( pCntnt, "Neuen Anker nicht gefunden" ); } //Flys haengen niemals an einem Follow sondern immer am diff --git a/sw/source/core/layout/flyincnt.cxx b/sw/source/core/layout/flyincnt.cxx index 1ff29c582696..f0b3a5995a5c 100644 --- a/sw/source/core/layout/flyincnt.cxx +++ b/sw/source/core/layout/flyincnt.cxx @@ -52,8 +52,8 @@ void DeepCalc( const SwFrm *pFrm ); |* Letzte Aenderung MA 09. Apr. 99 |* |*************************************************************************/ -SwFlyInCntFrm::SwFlyInCntFrm( SwFlyFrmFmt *pFmt, SwFrm *pAnch ) : - SwFlyFrm( pFmt, pAnch ) +SwFlyInCntFrm::SwFlyInCntFrm( SwFlyFrmFmt *pFmt, SwFrm* pSib, SwFrm *pAnch ) : + SwFlyFrm( pFmt, pSib, pAnch ) { bInCnt = bInvalidLayout = bInvalidCntnt = sal_True; SwTwips nRel = pFmt->GetVertOrient().GetPos(); @@ -123,7 +123,7 @@ void SwFlyInCntFrm::SetRefPoint( const Point& rPoint, |* Letzte Aenderung MA 02. Sep. 93 |* |*************************************************************************/ -void SwFlyInCntFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwFlyInCntFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { sal_Bool bCallPrepare = sal_False; sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; diff --git a/sw/source/core/layout/flylay.cxx b/sw/source/core/layout/flylay.cxx index 4a240b9d256d..38f91d0e509f 100644 --- a/sw/source/core/layout/flylay.cxx +++ b/sw/source/core/layout/flylay.cxx @@ -74,8 +74,8 @@ using namespace ::com::sun::star; |* |*************************************************************************/ -SwFlyFreeFrm::SwFlyFreeFrm( SwFlyFrmFmt *pFmt, SwFrm *pAnch ) : - SwFlyFrm( pFmt, pAnch ), +SwFlyFreeFrm::SwFlyFreeFrm( SwFlyFrmFmt *pFmt, SwFrm* pSib, SwFrm *pAnch ) : + SwFlyFrm( pFmt, pSib, pAnch ), pPage( 0 ), // --> OD 2004-11-15 #i34753# mbNoMakePos( false ), @@ -548,8 +548,8 @@ bool SwFlyFreeFrm::IsFormatPossible() const |* |*************************************************************************/ -SwFlyLayFrm::SwFlyLayFrm( SwFlyFrmFmt *pFmt, SwFrm *pAnch ) : - SwFlyFreeFrm( pFmt, pAnch ) +SwFlyLayFrm::SwFlyLayFrm( SwFlyFrmFmt *pFmt, SwFrm* pSib, SwFrm *pAnch ) : + SwFlyFreeFrm( pFmt, pSib, pAnch ) { bLayout = sal_True; } @@ -566,7 +566,7 @@ TYPEINIT1(SwFlyLayFrm,SwFlyFreeFrm); |* |*************************************************************************/ -void SwFlyLayFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwFlyLayFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { sal_uInt16 nWhich = pNew ? pNew->Which() : 0; @@ -599,8 +599,13 @@ void SwFlyLayFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) if ( FLY_AT_PAGE == pAnch->GetAnchorId() ) { +<<<<<<< local + USHORT nPgNum = pAnch->GetPageNum(); + SwRootFrm *pRoot = getRootFrm(); +======= sal_uInt16 nPgNum = pAnch->GetPageNum(); SwRootFrm *pRoot = FindRootFrm(); +>>>>>>> other SwPageFrm *pTmpPage = (SwPageFrm*)pRoot->Lower(); for ( sal_uInt16 i = 1; (i <= nPgNum) && pTmpPage; ++i, pTmpPage = (SwPageFrm*)pTmpPage->GetNext() ) @@ -622,7 +627,11 @@ void SwFlyLayFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) { SwNodeIndex aIdx( pAnch->GetCntntAnchor()->nNode ); SwCntntFrm *pCntnt = GetFmt()->GetDoc()->GetNodes().GoNext( &aIdx )-> +<<<<<<< local + GetCntntNode()->getLayoutFrm( getRootFrm(), 0, 0, FALSE ); +======= GetCntntNode()->GetFrm( 0, 0, sal_False ); +>>>>>>> other if( pCntnt ) { SwFlyFrm *pTmp = pCntnt->FindFlyFrm(); @@ -653,7 +662,7 @@ void SwFlyLayFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) void SwPageFrm::AppendFlyToPage( SwFlyFrm *pNew ) { if ( !pNew->GetVirtDrawObj()->IsInserted() ) - FindRootFrm()->GetDrawPage()->InsertObject( + getRootFrm()->GetDrawPage()->InsertObject( (SdrObject*)pNew->GetVirtDrawObj(), pNew->GetVirtDrawObj()->GetReferencedObj().GetOrdNumDirect() ); @@ -764,8 +773,13 @@ void SwPageFrm::AppendFlyToPage( SwFlyFrm *pNew ) void SwPageFrm::RemoveFlyFromPage( SwFlyFrm *pToRemove ) { +<<<<<<< local + const UINT32 nOrdNum = pToRemove->GetVirtDrawObj()->GetOrdNum(); + getRootFrm()->GetDrawPage()->RemoveObject( nOrdNum ); +======= const sal_uInt32 nOrdNum = pToRemove->GetVirtDrawObj()->GetOrdNum(); FindRootFrm()->GetDrawPage()->RemoveObject( nOrdNum ); +>>>>>>> other pToRemove->GetVirtDrawObj()->ReferencedObj().SetOrdNum( nOrdNum ); if ( GetUpper() ) @@ -1036,7 +1050,7 @@ void SwPageFrm::PlaceFly( SwFlyFrm* pFly, SwFlyFrmFmt* pFmt ) AppendFly( pFly ); else { ASSERT( pFmt, ":-( kein Format fuer Fly uebergeben." ); - pFly = new SwFlyLayFrm( (SwFlyFrmFmt*)pFmt, this ); + pFly = new SwFlyLayFrm( (SwFlyFrmFmt*)pFmt, this, this ); AppendFly( pFly ); ::RegistFlys( this, pFly ); } diff --git a/sw/source/core/layout/flypos.cxx b/sw/source/core/layout/flypos.cxx index 8d3b517c2efc..655b5c4cba12 100644 --- a/sw/source/core/layout/flypos.cxx +++ b/sw/source/core/layout/flypos.cxx @@ -28,13 +28,9 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - - #include "doc.hxx" #include "node.hxx" #include <docary.hxx> - - #include <fmtanchr.hxx> #include "flypos.hxx" #include "frmfmt.hxx" @@ -43,8 +39,7 @@ #include "flyfrm.hxx" #include "dflyobj.hxx" #include "ndindex.hxx" - - +#include "switerator.hxx" SV_IMPL_OP_PTRARR_SORT( SwPosFlyFrms, SwPosFlyFrmPtr ) @@ -58,24 +53,41 @@ SwPosFlyFrm::SwPosFlyFrm( const SwNodeIndex& rIdx, const SwFrmFmt* pFmt, { pNdIdx = new SwNodeIndex( rIdx ); } - else if( pFmt->GetDoc()->GetRootFrm() ) + else if( pFmt->GetDoc()->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { - SwClientIter aIter( (SwFmt&)*pFmt ); if( RES_FLYFRMFMT == pFmt->Which() ) { // Schauen, ob es ein SdrObject dafuer gibt +<<<<<<< local + SwFlyFrm* pFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement(*pFmt); + if( pFly ) + { + nOrdNum = pFly->GetVirtDrawObj()->GetOrdNum(); + bFnd = TRUE; +======= if( aIter.First( TYPE( SwFlyFrm) ) ) nOrdNum = ((SwFlyFrm*)aIter())->GetVirtDrawObj()->GetOrdNum(), bFnd = sal_True; +>>>>>>> other + } } else if( RES_DRAWFRMFMT == pFmt->Which() ) { // Schauen, ob es ein SdrObject dafuer gibt +<<<<<<< local + SwDrawContact* pContact = SwIterator<SwDrawContact,SwFmt>::FirstElement(*pFmt); + if( pContact ) + { + nOrdNum = pContact->GetMaster()->GetOrdNum(); + bFnd = TRUE; +======= if( aIter.First( TYPE(SwDrawContact) ) ) nOrdNum = ((SwDrawContact*)aIter())->GetMaster()->GetOrdNum(), bFnd = sal_True; +>>>>>>> other } } + } if( !bFnd ) { diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx index 3d820e7a1e69..cf3847aa613c 100644 --- a/sw/source/core/layout/frmtool.cxx +++ b/sw/source/core/layout/frmtool.cxx @@ -38,10 +38,8 @@ #include <editeng/lrspitem.hxx> #include <editeng/boxitem.hxx> #include <sfx2/printer.hxx> -// OD 08.01.2004 #i11859# #include <editeng/lspcitem.hxx> - #include <fmtornt.hxx> #include <fmtanchr.hxx> #include <fmthdft.hxx> @@ -56,6 +54,7 @@ #include "doc.hxx" #include "fesh.hxx" #include "viewimp.hxx" +#include "viewopt.hxx" #include "pam.hxx" #include "dflyobj.hxx" #include "dcontact.hxx" @@ -78,18 +77,13 @@ #include "hints.hxx" #include <layhelp.hxx> #include <laycache.hxx> - #include <rootfrm.hxx> - #include "mdiexp.hxx" #include "statstr.hrc" -// OD 21.05.2003 #108789# #include <paratr.hxx> -// OD 2004-05-24 #i28701# #include <sortedobjs.hxx> -// --> OD 2005-03-04 #b6234250# #include <objectformatter.hxx> -// <-- +#include <switerator.hxx> // ftnfrm.cxx: void lcl_RemoveFtns( SwFtnBossFrm* pBoss, sal_Bool bPageOnly, sal_Bool bEndNotes ); @@ -106,14 +100,7 @@ sal_Bool StackHack::bLocked = sal_False; -/************************************************************************* -|* -|* SwFrmNotify::SwFrmNotify() -|* -|* Ersterstellung MA 27. Nov. 92 -|* Letzte Aenderung MA 09. Apr. 97 -|* -|*************************************************************************/ +/*************************************************************************/ SwFrmNotify::SwFrmNotify( SwFrm *pF ) : pFrm( pF ), @@ -121,9 +108,7 @@ SwFrmNotify::SwFrmNotify( SwFrm *pF ) : aPrt( pF->Prt() ), bInvaKeep( sal_False ), bValidSize( pF->GetValidSizeFlag() ), - // --> OD 2005-07-29 #i49383# - mbFrmDeleted( false ) - // <-- + mbFrmDeleted( false ) // #i49383# { if ( pF->IsTxtFrm() ) { @@ -141,23 +126,15 @@ SwFrmNotify::SwFrmNotify( SwFrm *pF ) : sal_False; } -/************************************************************************* -|* -|* SwFrmNotify::~SwFrmNotify() -|* -|* Ersterstellung MA 27. Nov. 92 -|* Letzte Aenderung MA 09. Apr. 97 -|* -|*************************************************************************/ +/*************************************************************************/ SwFrmNotify::~SwFrmNotify() { - // --> OD 2005-07-29 #i49383# + // #i49383# if ( mbFrmDeleted ) { return; } - // <-- SWRECTFN( pFrm ) const sal_Bool bAbsP = POS_DIFF( aFrm, pFrm->Frm() ); @@ -217,19 +194,18 @@ SwFrmNotify::~SwFrmNotify() pFrm->SetCompletePaint(); SwFrm* pNxt = pFrm->GetIndNext(); - // --> OD 2005-05-20 #121888# - skip empty section frames + // #121888# - skip empty section frames while ( pNxt && pNxt->IsSctFrm() && !static_cast<SwSectionFrm*>(pNxt)->GetSection() ) { pNxt = pNxt->GetIndNext(); } - // <-- if ( pNxt ) pNxt->InvalidatePos(); else { - // OD 04.11.2002 #104100# - correct condition for setting retouche + // #104100# - correct condition for setting retouche // flag for vertical layout. if( pFrm->IsRetoucheFrm() && (aFrm.*fnRect->fnTopDist)( (pFrm->Frm().*fnRect->fnGetTop)() ) > 0 ) @@ -260,7 +236,7 @@ SwFrmNotify::~SwFrmNotify() } else { - // OD 13.11.2002 #97597# - consider case that *only* margins between + // #97597# - consider case that *only* margins between // frame and printing area has changed. Then, frame has to be repainted, // in order to force paint of the margin areas. if ( !bAbsP && (bChgWidth || bChgHeight) ) @@ -275,7 +251,7 @@ SwFrmNotify::~SwFrmNotify() { if( pFrm->IsAccessibleFrm() ) { - SwRootFrm *pRootFrm = pFrm->FindRootFrm(); + SwRootFrm *pRootFrm = pFrm->getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() && pRootFrm->GetCurrShell() ) { @@ -410,7 +386,7 @@ SwFrmNotify::~SwFrmNotify() } else if( pFrm->IsTxtFrm() && bValidSize != pFrm->GetValidSizeFlag() ) { - SwRootFrm *pRootFrm = pFrm->FindRootFrm(); + SwRootFrm *pRootFrm = pFrm->getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() && pRootFrm->GetCurrShell() ) { @@ -456,15 +432,7 @@ SwFrmNotify::~SwFrmNotify() } } -/************************************************************************* -|* -|* SwLayNotify::SwLayNotify() -|* -|* Ersterstellung MA 17. Nov. 92 -|* Letzte Aenderung MA 03. Jun. 93 -|* -|*************************************************************************/ - +/*************************************************************************/ SwLayNotify::SwLayNotify( SwLayoutFrm *pLayFrm ) : SwFrmNotify( pLayFrm ), @@ -472,14 +440,7 @@ SwLayNotify::SwLayNotify( SwLayoutFrm *pLayFrm ) : { } -/************************************************************************* -|* -|* SwLayNotify::~SwLayNotify() -|* -|* Ersterstellung MA 17. Nov. 92 -|* Letzte Aenderung MA 13. Jun. 96 -|* -|*************************************************************************/ +/*************************************************************************/ // OD 2004-05-11 #i28701# - local method to invalidate the position of all // frames inclusive its floating screen objects, which are lowers of the given @@ -607,13 +568,16 @@ SwLayNotify::~SwLayNotify() if ( pLay->IsTabFrm() ) //Damit _nur_ der Shatten bei Groessenaenderungen gemalt wird. ((SwTabFrm*)pLay)->SetComplete(); - else if ( !pLay->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) || + else + { + const ViewShell *pSh = pLay->getRootFrm()->GetCurrShell(); + if( !( pSh && pSh->GetViewOptions()->getBrowseMode() ) || !(pLay->GetType() & (FRM_BODY | FRM_PAGE)) ) //Damit die untergeordneten sauber retouchiert werden. //Problembsp: Flys an den Henkeln packen und verkleinern. //Nicht fuer Body und Page, sonst flackerts beim HTML-Laden. pLay->SetCompletePaint(); - + } } //Lower benachrichtigen wenn sich die Position veraendert hat. const sal_Bool bPrtPos = POS_DIFF( aPrt, pLay->Prt() ); @@ -688,14 +652,7 @@ SwLayNotify::~SwLayNotify() ((SwFlyFrm*)pLay)->AnchorFrm()->InvalidateSize(); } -/************************************************************************* -|* -|* SwFlyNotify::SwFlyNotify() -|* -|* Ersterstellung MA 17. Nov. 92 -|* Letzte Aenderung MA 26. Aug. 93 -|* -|*************************************************************************/ +/*************************************************************************/ SwFlyNotify::SwFlyNotify( SwFlyFrm *pFlyFrm ) : SwLayNotify( pFlyFrm ), @@ -707,14 +664,7 @@ SwFlyNotify::SwFlyNotify( SwFlyFrm *pFlyFrm ) : { } -/************************************************************************* -|* -|* SwFlyNotify::~SwFlyNotify() -|* -|* Ersterstellung MA 17. Nov. 92 -|* Letzte Aenderung MA 09. Nov. 95 -|* -|*************************************************************************/ +/*************************************************************************/ SwFlyNotify::~SwFlyNotify() { @@ -728,7 +678,7 @@ SwFlyNotify::~SwFlyNotify() SwFlyFrm *pFly = GetFly(); if ( pFly->IsNotifyBack() ) { - ViewShell *pSh = pFly->GetShell(); + ViewShell *pSh = pFly->getRootFrm()->GetCurrShell(); SwViewImp *pImp = pSh ? pSh->Imp() : 0; if ( !pImp || !pImp->IsAction() || !pImp->GetLayAction().IsAgain() ) { @@ -823,14 +773,7 @@ SwFlyNotify::~SwFlyNotify() } } -/************************************************************************* -|* -|* SwCntntNotify::SwCntntNotify() -|* -|* Ersterstellung MA 24. Nov. 92 -|* Letzte Aenderung MA 16. May. 95 -|* -|*************************************************************************/ +/*************************************************************************/ SwCntntNotify::SwCntntNotify( SwCntntFrm *pCntntFrm ) : SwFrmNotify( pCntntFrm ), @@ -858,14 +801,7 @@ SwCntntNotify::SwCntntNotify( SwCntntFrm *pCntntFrm ) : } } -/************************************************************************* -|* -|* SwCntntNotify::~SwCntntNotify() -|* -|* Ersterstellung MA 24. Nov. 92 -|* Letzte Aenderung MA 09. Apr. 97 -|* -|*************************************************************************/ +/*************************************************************************/ SwCntntNotify::~SwCntntNotify() { @@ -945,7 +881,7 @@ SwCntntNotify::~SwCntntNotify() { //Aktive PlugIn's oder OLE-Objekte sollten etwas von der Veraenderung //mitbekommen, damit sie Ihr Window entsprechend verschieben. - ViewShell *pSh = pCnt->GetShell(); + ViewShell *pSh = pCnt->getRootFrm()->GetCurrShell(); if ( pSh ) { SwOLENode *pNd; @@ -1106,17 +1042,7 @@ SwCntntNotify::~SwCntntNotify() // <-- } -/************************************************************************* -|* -|* InsertCnt -|* -|* Beschreibung Hilfsfunktionen, die friend von irgendwem sind, damit -|* nicht immer gleich 'ne ganze Klasse befreundet werden -|* muss. -|* Ersterstellung MA 13. Apr. 93 -|* Letzte Aenderung MA 11. May. 95 -|* -|*************************************************************************/ +/*************************************************************************/ void AppendObjs( const SwSpzFrmFmts *pTbl, sal_uLong nIndex, SwFrm *pFrm, SwPageFrm *pPage ) @@ -1182,9 +1108,9 @@ void AppendObjs( const SwSpzFrmFmts *pTbl, sal_uLong nIndex, { SwFlyFrm *pFly; if( bFlyAtFly ) - pFly = new SwFlyLayFrm( (SwFlyFrmFmt*)pFmt, pFrm ); + pFly = new SwFlyLayFrm( (SwFlyFrmFmt*)pFmt, pFrm, pFrm ); else - pFly = new SwFlyAtCntFrm( (SwFlyFrmFmt*)pFmt, pFrm ); + pFly = new SwFlyAtCntFrm( (SwFlyFrmFmt*)pFmt, pFrm, pFrm ); pFly->Lock(); pFrm->AppendFly( pFly ); pFly->Unlock(); @@ -1196,18 +1122,34 @@ void AppendObjs( const SwSpzFrmFmts *pTbl, sal_uLong nIndex, } } +<<<<<<< local +bool lcl_ObjConnected( SwFrmFmt *pFmt, const SwFrm* pSib ) +======= sal_Bool MA_FASTCALL lcl_ObjConnected( SwFrmFmt *pFmt ) +>>>>>>> other { - SwClientIter aIter( *pFmt ); + SwIterator<SwFlyFrm,SwFmt> aIter( *pFmt ); if ( RES_FLYFRMFMT == pFmt->Which() ) - return 0 != aIter.First( TYPE(SwFlyFrm) ); + { + const SwRootFrm* pRoot = pSib ? pSib->getRootFrm() : 0; + const SwFlyFrm* pTmpFrm; + for( pTmpFrm = aIter.First(); pTmpFrm; pTmpFrm = aIter.Next() ) + { + if(! pRoot || pRoot == pTmpFrm->getRootFrm() ) + return true; + } + } else { - SwDrawContact *pContact; - if ( 0 != (pContact = (SwDrawContact*)aIter.First( TYPE(SwDrawContact)))) + SwDrawContact *pContact = SwIterator<SwDrawContact,SwFmt>::FirstElement(*pFmt); + if ( pContact ) return pContact->GetAnchorFrm() != 0; } +<<<<<<< local + return false; +======= return sal_False; +>>>>>>> other } /** helper method to determine, if a <SwFrmFmt>, which has an object connected, @@ -1219,9 +1161,6 @@ sal_Bool MA_FASTCALL lcl_ObjConnected( SwFrmFmt *pFmt ) */ bool lcl_InHeaderOrFooter( SwFrmFmt& _rFmt ) { - ASSERT( lcl_ObjConnected( &_rFmt ), - "::lcl_InHeaderOrFooter(..) - <SwFrmFmt> has no connected object" ); - bool bRetVal = false; const SwFmtAnchor& rAnch = _rFmt.GetAnchor(); @@ -1234,7 +1173,7 @@ bool lcl_InHeaderOrFooter( SwFrmFmt& _rFmt ) return bRetVal; } -void AppendAllObjs( const SwSpzFrmFmts *pTbl ) +void AppendAllObjs( const SwSpzFrmFmts *pTbl, const SwFrm* pSib ) { //Verbinden aller Objekte, die in der SpzTbl beschrieben sind mit dem //Layout. @@ -1262,7 +1201,11 @@ void AppendAllObjs( const SwSpzFrmFmts *pTbl ) //will ich hier nicht. bRemove = sal_True; } +<<<<<<< local + else if ( FALSE == (bRemove = ::lcl_ObjConnected( pFmt, pSib )) || +======= else if ( sal_False == (bRemove = ::lcl_ObjConnected( pFmt )) || +>>>>>>> other ::lcl_InHeaderOrFooter( *pFmt ) ) { // OD 23.06.2003 #108784# - correction: for objects in header @@ -1272,7 +1215,7 @@ void AppendAllObjs( const SwSpzFrmFmts *pTbl ) //keine abhaengigen Existieren, andernfalls, oder wenn das //MakeFrms keine abhaengigen erzeugt, entfernen. pFmt->MakeFrms(); - bRemove = ::lcl_ObjConnected( pFmt ); + bRemove = ::lcl_ObjConnected( pFmt, pSib ); } if ( bRemove ) { @@ -1308,12 +1251,23 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, SwFrm *pPrv ) { pDoc->BlockIdling(); +<<<<<<< local + SwRootFrm* pLayout = pLay->getRootFrm(); + const BOOL bOldCallbackActionEnabled = pLayout ? pLayout->IsCallbackActionEnabled() : FALSE; + if( bOldCallbackActionEnabled ) + pLayout->SetCallbackActionEnabled( FALSE ); +======= SwRootFrm* pLayout = pDoc->GetRootFrm(); const sal_Bool bOldCallbackActionEnabled = pLayout ? pLayout->IsCallbackActionEnabled() : sal_False; if(pLayout) pLayout->SetCallbackActionEnabled( sal_False ); +>>>>>>> other +<<<<<<< local + //Bei der Erzeugung des Layouts wird bPages mit TRUE uebergeben. Dann +======= //Bei der Erzeugung des Layouts wird bPages mit sal_True uebergeben. Dann +>>>>>>> other //werden schon mal alle x Absaetze neue Seiten angelegt. Bei umbruechen //und/oder Pagedescriptorwechseln werden gleich die entsprechenden Seiten //angelegt. @@ -1390,8 +1344,8 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, if ( pNd->IsCntntNode() ) { SwCntntNode* pNode = (SwCntntNode*)pNd; - pFrm = pNode->IsTxtNode() ? new SwTxtFrm( (SwTxtNode*)pNode ) : - pNode->MakeFrm(); + pFrm = pNode->IsTxtNode() ? new SwTxtFrm( (SwTxtNode*)pNode, pLay ) : + pNode->MakeFrm( pLay ); if( pPageMaker ) pPageMaker->CheckInsert( nIndex ); @@ -1403,7 +1357,7 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, // and relation CONTENT_FLOWS_TO for previous paragraph will change. if ( pFrm->IsTxtFrm() ) { - ViewShell* pViewShell( pFrm->GetShell() ); + ViewShell* pViewShell( pFrm->getRootFrm()->GetCurrShell() ); // no notification, if <ViewShell> is in construction if ( pViewShell && !pViewShell->IsInConstructor() && pViewShell->GetLayout() && @@ -1443,7 +1397,7 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, pDoc->UpdateTblFlds( &aMsgHnt ); pTblNode->GetTable().GCLines(); - pFrm = pTblNode->MakeFrm(); + pFrm = pTblNode->MakeFrm( pLay ); if( pPageMaker ) pPageMaker->CheckInsert( nIndex ); @@ -1455,7 +1409,7 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, // Relation CONTENT_FLOWS_FROM for next paragraph will change // and relation CONTENT_FLOWS_TO for previous paragraph will change. { - ViewShell* pViewShell( pFrm->GetShell() ); + ViewShell* pViewShell( pFrm->getRootFrm()->GetCurrShell() ); // no notification, if <ViewShell> is in construction if ( pViewShell && !pViewShell->IsInConstructor() && pViewShell->GetLayout() && @@ -1493,7 +1447,7 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, nIndex = pNode->EndOfSectionIndex(); else { - pFrm = pNode->MakeFrm(); + pFrm = pNode->MakeFrm( pLay ); pActualSection = new SwActualSection( pActualSection, (SwSectionFrm*)pFrm, pNode ); if ( pActualSection->GetUpper() ) @@ -1532,7 +1486,7 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, // Relation CONTENT_FLOWS_FROM for next paragraph will change // and relation CONTENT_FLOWS_TO for previous paragraph will change. { - ViewShell* pViewShell( pFrm->GetShell() ); + ViewShell* pViewShell( pFrm->getRootFrm()->GetCurrShell() ); // no notification, if <ViewShell> is in construction if ( pViewShell && !pViewShell->IsInConstructor() && pViewShell->GetLayout() && @@ -1604,7 +1558,7 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, } // new section frame - pFrm = pActualSection->GetSectionNode()->MakeFrm(); + pFrm = pActualSection->GetSectionNode()->MakeFrm( pLay ); pFrm->InsertBehind( pLay, pPrv ); static_cast<SwSectionFrm*>(pFrm)->Init(); @@ -1682,8 +1636,13 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, if ( bPages ) //Jetzt noch die Flys verbinden lassen. { if ( !bDontCreateObjects ) +<<<<<<< local + AppendAllObjs( pTbl, pLayout ); + bObjsDirect = TRUE; +======= AppendAllObjs( pTbl ); bObjsDirect = sal_True; +>>>>>>> other } if( pPageMaker ) @@ -1702,7 +1661,7 @@ void MA_FASTCALL _InsertCnt( SwLayoutFrm *pLay, SwDoc *pDoc, } pDoc->UnblockIdling(); - if(pLayout) + if( bOldCallbackActionEnabled ) pLayout->SetCallbackActionEnabled( bOldCallbackActionEnabled ); } @@ -1885,7 +1844,7 @@ void MakeFrms( SwDoc *pDoc, const SwNodeIndex &rSttIdx, { const SwSpzFrmFmts *pTbl = pDoc->GetSpzFrmFmts(); if( pTbl->Count() ) - AppendAllObjs( pTbl ); + AppendAllObjs( pTbl, pUpper ); } // Wenn nichts eingefuegt wurde, z.B. ein ausgeblendeter Bereich, @@ -1911,8 +1870,13 @@ void MakeFrms( SwDoc *pDoc, const SwNodeIndex &rSttIdx, // und damit ruhig zerstoert werden. if( !pSct->ContainsCntnt() ) { +<<<<<<< local + pSct->DelEmpty( TRUE ); + pUpper->getRootFrm()->RemoveFromList( pSct ); +======= pSct->DelEmpty( sal_True ); pDoc->GetRootFrm()->RemoveFromList( pSct ); +>>>>>>> other delete pSct; } } @@ -1923,14 +1887,7 @@ void MakeFrms( SwDoc *pDoc, const SwNodeIndex &rSttIdx, } -/************************************************************************* -|* -|* SwBorderAttrs::Ctor, DTor -|* -|* Ersterstellung MA 19. May. 93 -|* Letzte Aenderung MA 25. Jan. 97 -|* -|*************************************************************************/ +/*************************************************************************/ SwBorderAttrs::SwBorderAttrs( const SwModify *pMod, const SwFrm *pConstructor ) : SwCacheObj( pMod ), @@ -1983,8 +1940,6 @@ SwBorderAttrs::~SwBorderAttrs() |* der Sicherheitsabstand wird nur einkalkuliert, wenn Umrandung und/oder |* Schatten im Spiel sind; er soll vermeiden, dass aufgrund der |* groben physikalischen Gegebenheiten Raender usw. uebermalt werden. -|* Ersterstellung MA 19. May. 93 -|* Letzte Aenderung MA 08. Jul. 93 |* |*************************************************************************/ @@ -2066,8 +2021,6 @@ long SwBorderAttrs::CalcLeft( const SwFrm *pCaller ) const |* Es kann auch ohne Linien ein Abstand erwuenscht sein, |* dieser wird dann nicht vom Attribut sondern hier |* beruecksichtigt (bBorderDist, z.B. fuer Zellen). -|* Ersterstellung MA 21. May. 93 -|* Letzte Aenderung MA 07. Jun. 99 |* |*************************************************************************/ @@ -2107,14 +2060,7 @@ void SwBorderAttrs::_CalcRightLine() bRightLine = sal_False; } -/************************************************************************* -|* -|* SwBorderAttrs::_IsLine() -|* -|* Ersterstellung MA 29. Sep. 94 -|* Letzte Aenderung MA 29. Sep. 94 -|* -|*************************************************************************/ +/*************************************************************************/ void SwBorderAttrs::_IsLine() { @@ -2141,9 +2087,6 @@ void SwBorderAttrs::_IsLine() |* 3. Die Umrandungen links und rechts vor Vorgaenger bzw. Nachfolger |* sind identisch. |* -|* Ersterstellung MA 22. Mar. 95 -|* Letzte Aenderung MA 22. May. 95 -|* |*************************************************************************/ inline int CmpLines( const SvxBorderLine *pL1, const SvxBorderLine *pL2 ) { @@ -2309,14 +2252,7 @@ void SwBorderAttrs::_GetBottomLine( const SwFrm& _rFrm ) nGetBottomLine = nRet; } -/************************************************************************* -|* -|* SwBorderAttrAccess::CTor -|* -|* Ersterstellung MA 20. Mar. 95 -|* Letzte Aenderung MA 29. Nov. 95 -|* -|*************************************************************************/ +/*************************************************************************/ SwBorderAttrAccess::SwBorderAttrAccess( SwCache &rCach, const SwFrm *pFrm ) : SwCacheAccess( rCach, (pFrm->IsCntntFrm() ? @@ -2329,14 +2265,7 @@ SwBorderAttrAccess::SwBorderAttrAccess( SwCache &rCach, const SwFrm *pFrm ) : { } -/************************************************************************* -|* -|* SwBorderAttrAccess::NewObj, Get -|* -|* Ersterstellung MA 20. Mar. 95 -|* Letzte Aenderung MA 20. Mar. 95 -|* -|*************************************************************************/ +/*************************************************************************/ SwCacheObj *SwBorderAttrAccess::NewObj() { @@ -2349,14 +2278,7 @@ SwBorderAttrs *SwBorderAttrAccess::Get() return (SwBorderAttrs*)SwCacheAccess::Get(); } -/************************************************************************* -|* -|* SwOrderIter::Ctor -|* -|* Ersterstellung MA 06. Jan. 95 -|* Letzte Aenderung MA 22. Nov. 95 -|* -|*************************************************************************/ +/*************************************************************************/ SwOrderIter::SwOrderIter( const SwPageFrm *pPg, sal_Bool bFlys ) : pPage( pPg ), @@ -2365,14 +2287,7 @@ SwOrderIter::SwOrderIter( const SwPageFrm *pPg, sal_Bool bFlys ) : { } -/************************************************************************* -|* -|* SwOrderIter::Top() -|* -|* Ersterstellung MA 06. Jan. 95 -|* Letzte Aenderung MA 22. Nov. 95 -|* -|*************************************************************************/ +/*************************************************************************/ const SdrObject *SwOrderIter::Top() { @@ -2401,14 +2316,7 @@ const SdrObject *SwOrderIter::Top() return pCurrent; } -/************************************************************************* -|* -|* SwOrderIter::Bottom() -|* -|* Ersterstellung MA 06. Jan. 95 -|* Letzte Aenderung MA 22. Nov. 95 -|* -|*************************************************************************/ +/*************************************************************************/ const SdrObject *SwOrderIter::Bottom() { @@ -2437,14 +2345,7 @@ const SdrObject *SwOrderIter::Bottom() return pCurrent; } -/************************************************************************* -|* -|* SwOrderIter::Next() -|* -|* Ersterstellung MA 06. Jan. 95 -|* Letzte Aenderung MA 22. Nov. 95 -|* -|*************************************************************************/ +/*************************************************************************/ const SdrObject *SwOrderIter::Next() { @@ -2474,14 +2375,7 @@ const SdrObject *SwOrderIter::Next() return pCurrent; } -/************************************************************************* -|* -|* SwOrderIter::Prev() -|* -|* Ersterstellung MA 06. Jan. 95 -|* Letzte Aenderung MA 22. Nov. 95 -|* -|*************************************************************************/ +/*************************************************************************/ const SdrObject *SwOrderIter::Prev() { @@ -2511,14 +2405,7 @@ const SdrObject *SwOrderIter::Prev() return pCurrent; } -/************************************************************************* -|* -|* SaveCntnt(), RestoreCntnt() -|* -|* Ersterstellung MA 10. Jun. 93 -|* Letzte Aenderung MA 07. Mar. 95 -|* -|*************************************************************************/ +/*************************************************************************/ //Unterstruktur eines LayoutFrms fuer eine Aktion aufheben und wieder //restaurieren. @@ -2854,9 +2741,6 @@ void RestoreCntnt( SwFrm *pSav, SwLayoutFrm *pParent, SwFrm *pSibling, bool bGro |* SqRt() Berechnung der Quadratwurzel, damit die math.lib |* nicht auch noch dazugelinkt werden muss. |* -|* Ersterstellung OK ?? -|* Letzte Aenderung MA 09. Jan. 97 -|* |*************************************************************************/ sal_uLong MA_FASTCALL SqRt( BigInt nX ) @@ -2875,14 +2759,7 @@ sal_uLong MA_FASTCALL SqRt( BigInt nX ) return nErg >= BigInt(SAL_MAX_UINT32) ? ULONG_MAX : (sal_uLong)nErg; } -/************************************************************************* -|* -|* InsertNewPage() Einsetzen einer neuen Seite. -|* -|* Ersterstellung MA 01. Jul. 93 -|* Letzte Aenderung MA 31. Jul. 95 -|* -|*************************************************************************/ +/*************************************************************************/ SwPageFrm * MA_FASTCALL InsertNewPage( SwPageDesc &rDesc, SwFrm *pUpper, sal_Bool bOdd, sal_Bool bInsertEmpty, sal_Bool bFtn, @@ -2903,11 +2780,11 @@ SwPageFrm * MA_FASTCALL InsertNewPage( SwPageDesc &rDesc, SwFrm *pUpper, { SwPageDesc *pTmpDesc = pSibling && pSibling->GetPrev() ? ((SwPageFrm*)pSibling->GetPrev())->GetPageDesc() : &rDesc; - pRet = new SwPageFrm( pDoc->GetEmptyPageFmt(), pTmpDesc ); + pRet = new SwPageFrm( pDoc->GetEmptyPageFmt(), pUpper, pTmpDesc ); pRet->Paste( pUpper, pSibling ); pRet->PreparePage( bFtn ); } - pRet = new SwPageFrm( pFmt, &rDesc ); + pRet = new SwPageFrm( pFmt, pUpper, &rDesc ); pRet->Paste( pUpper, pSibling ); pRet->PreparePage( bFtn ); if ( pRet->GetNext() ) @@ -2922,9 +2799,6 @@ SwPageFrm * MA_FASTCALL InsertNewPage( SwPageDesc &rDesc, SwFrm *pUpper, |* eine Layoutstruktur und melden alle FlyFrms, die einen beliebigen Frm |* innerhalb der Struktur als Anker haben bei der Seite an. |* -|* Ersterstellung MA 08. Jul. 93 -|* Letzte Aenderung MA 07. Jul. 95 -|* |*************************************************************************/ void MA_FASTCALL lcl_Regist( SwPageFrm *pPage, const SwFrm *pAnch ) @@ -2995,8 +2869,6 @@ void RegistFlys( SwPageFrm *pPage, const SwLayoutFrm *pLay ) |* |* Beschreibung Benachrichtigt den Hintergrund je nach der |* Veraenderung zwischen altem und neuem Rechteckt. -|* Ersterstellung MA 18. Jun. 93 -|* Letzte Aenderung MA 06. Jun. 96 |* |*************************************************************************/ @@ -3019,7 +2891,7 @@ void Notify( SwFlyFrm *pFly, SwPageFrm *pOld, const SwRect &rOld, //Der Einfachheit halber wird hier bewusst jeweils ein Twip //unnoetig invalidiert. - ViewShell *pSh = pFly->GetShell(); + ViewShell *pSh = pFly->getRootFrm()->GetCurrShell(); if( pSh && rOld.HasArea() ) pSh->InvalidateWindows( rOld ); @@ -3077,11 +2949,7 @@ void Notify( SwFlyFrm *pFly, SwPageFrm *pOld, const SwRect &rOld, } } -/************************************************************************* -|* -|* NotifyBackground() -|* -|*************************************************************************/ +/*************************************************************************/ void lcl_CheckFlowBack( SwFrm* pFrm, const SwRect &rRect ) { @@ -3317,7 +3185,7 @@ void Notify_Background( const SdrObject* pObj, // --> OD 2008-01-30 #i82258# - make code robust ViewShell* pSh = 0; if ( bInva && pPage && - 0 != (pSh = pPage->GetShell()) ) + 0 != (pSh = pPage->getRootFrm()->GetCurrShell()) ) { pSh->InvalidateWindows( rRect ); } @@ -3364,11 +3232,7 @@ const SwFrm* GetVirtualUpper( const SwFrm* pFrm, const Point& rPos ) return pFrm; } -/************************************************************************* -|* -|* IsLowerOf() -|* -|*************************************************************************/ +/*************************************************************************/ sal_Bool Is_Lower_Of( const SwFrm *pCurrFrm, const SdrObject* pObj ) { @@ -3382,7 +3246,7 @@ sal_Bool Is_Lower_Of( const SwFrm *pCurrFrm, const SdrObject* pObj ) } else { - pFrm = ( (SwDrawContact*)GetUserCall(pObj) )->GetAnchorFrm(); + pFrm = ( (SwDrawContact*)GetUserCall(pObj) )->GetAnchorFrm(pObj); aPos = pObj->GetCurrentBoundRect().TopLeft(); } ASSERT( pFrm, "8-( Fly is lost in Space." ); @@ -3516,35 +3380,79 @@ const SwFrm* MA_FASTCALL FindPage( const SwRect &rRect, const SwFrm *pPage ) return pPage; } +<<<<<<< local + +#include <svl/smplhint.hxx> +class SwFrmHolder : private SfxListener +{ + SwFrm* pFrm; + bool bSet; + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); +public: + SwFrmHolder() : pFrm(0), bSet(false) {} + void SetFrm( SwFrm* pHold ); + SwFrm* GetFrm() { return pFrm; } + void Reset(); + bool IsSet() { return bSet; } +}; + +void SwFrmHolder::SetFrm( SwFrm* pHold ) +{ + bSet = true; + pFrm = pHold; + StartListening(*pHold); +} + +void SwFrmHolder::Reset() +{ + if (pFrm) + EndListening(*pFrm); + bSet = false; + pFrm = 0; +} + +void SwFrmHolder::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) +{ + if ( rHint.IsA(TYPE(SfxSimpleHint)) ) + { + if ( ( (SfxSimpleHint&) rHint ).GetId() == SFX_HINT_DYING && &rBC == pFrm ) + pFrm = 0; + } +} + +SwFrm* GetFrmOfModify( const SwRootFrm* pLayout, SwModify const& rMod, USHORT const nFrmType, + const Point* pPoint, const SwPosition *pPos, const BOOL bCalcFrm ) +======= SwFrm* GetFrmOfModify( SwModify const& rMod, sal_uInt16 const nFrmType, const Point* pPoint, const SwPosition *pPos, const sal_Bool bCalcFrm ) +>>>>>>> other { SwFrm *pMinFrm = 0, *pTmpFrm; + SwFrmHolder aHolder; SwRect aCalcRect; bool bClientIterChanged = false; - SwClientIter aIter( rMod ); + SwIterator<SwFrm,SwModify> aIter( rMod ); do { pMinFrm = 0; + aHolder.Reset(); sal_uInt64 nMinDist = 0; bClientIterChanged = false; - for( pTmpFrm = (SwFrm*)aIter.First( TYPE( SwFrm )); pTmpFrm; - pTmpFrm = (SwFrm*)aIter.Next() ) + for( pTmpFrm = aIter.First(); pTmpFrm; pTmpFrm = aIter.Next() ) { if( pTmpFrm->GetType() & nFrmType && + ( !pLayout || pLayout == pTmpFrm->getRootFrm() ) && (!pTmpFrm->IsFlowFrm() || !SwFlowFrm::CastFlowFrm( pTmpFrm )->IsFollow() )) { if( pPoint ) { - // --> FME 2006-02-03 #127369# - // Set pointer to be watched. If a client is removed from - // rMod (e.g., by deleting a frame), the bWatchDeleted flag - // is set at the SwClientIter. - const bool bWatchClientSet = pMinFrm != 0; - aIter.SetWatchClient( pMinFrm ); - // <-- + // watch for Frm being deleted + if ( pMinFrm ) + aHolder.SetFrm( pMinFrm ); + else + aHolder.Reset(); if( bCalcFrm ) { @@ -3562,14 +3470,13 @@ SwFrm* GetFrmOfModify( SwModify const& rMod, sal_uInt16 const nFrmType, pTmpFrm->Calc(); } - // --> FME 2006-02-03 #127369# - // The SwClientIter list has changed. Restart. - // aIter.IsChanged basically checks if pTmpFrm has been - // deleted. bWatchClientSet && aIter.GetWatchClient() - // checks if pMinFrm has been deleted. - // <-- - if( aIter.IsChanged() || ( bWatchClientSet && !aIter.GetWatchClient() ) ) + // #127369# + // aIter.IsChanged checks if the current pTmpFrm has been deleted while + // it is the current iterator + // FrmHolder watches for deletion of the current pMinFrm + if( aIter.IsChanged() || ( aHolder.IsSet() && !aHolder.GetFrm() ) ) { + // restart iteration bClientIterChanged = true; break; } @@ -3723,15 +3630,13 @@ bool SwDeletionChecker::HasBeenDeleted() if ( !mpFrm || !mpRegIn ) return false; - SwClientIter aIter( const_cast<SwModify&>(*mpRegIn) ); - const SwClient* pLast = aIter.GoStart(); - + SwIterator<SwFrm,SwModify> aIter(*mpRegIn); + SwFrm* pLast = aIter.First(); while ( pLast ) { - if ( pLast->ISA( SwFrm ) && pLast == mpFrm ) + if ( pLast == mpFrm ) return false; - - pLast = aIter++; + pLast = aIter.Next(); } return true; diff --git a/sw/source/core/layout/ftnfrm.cxx b/sw/source/core/layout/ftnfrm.cxx index aacb9dcadd66..68ac053fa793 100644 --- a/sw/source/core/layout/ftnfrm.cxx +++ b/sw/source/core/layout/ftnfrm.cxx @@ -48,9 +48,10 @@ #include <ndindex.hxx> #include <sectfrm.hxx> #include <pam.hxx> -// --> OD 2005-05-17 #i49383# #include <objectformatter.hxx> -// <-- +#include "viewopt.hxx" +#include "viewsh.hxx" +#include <switerator.hxx> /************************************************************************* |* @@ -58,9 +59,6 @@ |* Dokument, dort stehen die Fussnoten gluecklicherweise nach ihrem |* Index sortiert. |* -|* Ersterstellung MA 29. Jun. 93 -|* Letzte Aenderung MA 13. Dec. 93 -|* |*************************************************************************/ #define ENDNOTE 0x80000000 @@ -119,9 +117,6 @@ sal_Bool SwFtnFrm::operator<( const SwTxtFtn* pTxtFtn ) const |* oder eine Seite (ohne Spalten) sein. Wenn die Seite dabei gewechselt wird |* enthaelt pPage die neue Seite und die Funktion liefert sal_True. |* -|* Ersterstellung AMA 06. Nov. 98 -|* Letzte Aenderung AMA 06. Nov. 98 -|* |*************************************************************************/ sal_Bool lcl_NextFtnBoss( SwFtnBossFrm* &rpBoss, SwPageFrm* &rpPage, @@ -171,9 +166,6 @@ sal_Bool lcl_NextFtnBoss( SwFtnBossFrm* &rpBoss, SwPageFrm* &rpPage, |* liefert die Spaltennummer, wenn pBoss eine Spalte ist, |* sonst eine Null (bei Seiten). |* -|* Ersterstellung AMA 06. Nov. 98 -|* Letzte Aenderung AMA 06. Nov. 98 -|* |*************************************************************************/ sal_uInt16 lcl_ColumnNum( const SwFrm* pBoss ) @@ -208,14 +200,11 @@ sal_uInt16 lcl_ColumnNum( const SwFrm* pBoss ) |* |* SwFtnContFrm::SwFtnContFrm() |* -|* Ersterstellung MA 24. Feb. 93 -|* Letzte Aenderung MA 02. Mar. 93 -|* |*************************************************************************/ -SwFtnContFrm::SwFtnContFrm( SwFrmFmt *pFmt ): - SwLayoutFrm( pFmt ) +SwFtnContFrm::SwFtnContFrm( SwFrmFmt *pFmt, SwFrm* pSib ): + SwLayoutFrm( pFmt, pSib ) { nType = FRMC_FTNCONT; } @@ -257,8 +246,6 @@ long lcl_Undersize( const SwFrm* pFrm ) |* |* Beschreibung: "Formatiert" den Frame; |* Die Fixsize wird hier nicht eingestellt. -|* Ersterstellung MA 01. Mar. 93 -|* Letzte Aenderung MA 17. Nov. 98 |* |*************************************************************************/ @@ -283,8 +270,20 @@ void SwFtnContFrm::Format( const SwBorderAttrs * ) if ( !bValidSize ) { +<<<<<<< local + bool bGrow = pPage->IsFtnPage(); + if( bGrow ) + { + const ViewShell *pSh = getRootFrm() ? getRootFrm()->GetCurrShell() : 0; + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) + bGrow = false; + } + if( bGrow ) + Grow( LONG_MAX, FALSE ); +======= if ( pPage->IsFtnPage() && !GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) Grow( LONG_MAX, sal_False ); +>>>>>>> other else { //Die Groesse in der VarSize wird durch den Inhalt plus den @@ -340,9 +339,6 @@ void SwFtnContFrm::Format( const SwBorderAttrs * ) |* |* SwFtnContFrm::GrowFrm(), ShrinkFrm() |* -|* Ersterstellung MA 24. Feb. 93 -|* Letzte Aenderung AMA 05. Nov. 98 -|* |*************************************************************************/ SwTwips SwFtnContFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool ) @@ -379,7 +375,8 @@ SwTwips SwFtnContFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool ) return 0; } } - const bool bBrowseMode = GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); + const ViewShell *pSh = getRootFrm() ? getRootFrm()->GetCurrShell() : 0; + const BOOL bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); SwPageFrm *pPage = pBoss->FindPageFrm(); if ( bBrowseMode || !pPage->IsFtnPage() ) { @@ -483,9 +480,19 @@ SwTwips SwFtnContFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool ) SwTwips SwFtnContFrm::ShrinkFrm( SwTwips nDiff, sal_Bool bTst, sal_Bool bInfo ) { SwPageFrm *pPage = FindPageFrm(); - if ( pPage && - ( !pPage->IsFtnPage() || - GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) ) + bool bShrink = false; + if ( pPage ) + { + if( !pPage->IsFtnPage() ) + bShrink = true; + else + { + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) + bShrink = true; + } + } + if( bShrink ) { SwTwips nRet = SwLayoutFrm::ShrinkFrm( nDiff, bTst, bInfo ); if( IsInSct() && !bTst ) @@ -505,14 +512,11 @@ SwTwips SwFtnContFrm::ShrinkFrm( SwTwips nDiff, sal_Bool bTst, sal_Bool bInfo ) |* |* SwFtnFrm::SwFtnFrm() |* -|* Ersterstellung MA 24. Feb. 93 -|* Letzte Aenderung MA 11. Oct. 93 -|* |*************************************************************************/ -SwFtnFrm::SwFtnFrm( SwFrmFmt *pFmt, SwCntntFrm *pCnt, SwTxtFtn *pAt ): - SwLayoutFrm( pFmt ), +SwFtnFrm::SwFtnFrm( SwFrmFmt *pFmt, SwFrm* pSib, SwCntntFrm *pCnt, SwTxtFtn *pAt ): + SwLayoutFrm( pFmt, pSib ), pFollow( 0 ), pMaster( 0 ), pRef( pCnt ), @@ -529,9 +533,6 @@ SwFtnFrm::SwFtnFrm( SwFrmFmt *pFmt, SwCntntFrm *pCnt, SwTxtFtn *pAt ): |* |* SwFtnFrm::InvalidateNxtFtnCnts() |* -|* Ersterstellung MA 29. Jun. 93 -|* Letzte Aenderung MA 29. Jun. 93 -|* |*************************************************************************/ @@ -599,9 +600,6 @@ SwTwips SwFtnFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) |* |* SwFtnFrm::Cut() |* -|* Ersterstellung MA 23. Feb. 94 -|* Letzte Aenderung MA 24. Jul. 95 -|* |*************************************************************************/ @@ -636,8 +634,8 @@ void SwFtnFrm::Cut() if ( pPage ) { SwLayoutFrm *pBody = pPage->FindBodyCont(); - if ( !pBody->ContainsCntnt() ) - pPage->FindRootFrm()->SetSuperfluous(); + if( pBody && !pBody->ContainsCntnt() ) + pPage->getRootFrm()->SetSuperfluous(); } SwSectionFrm* pSect = pUp->FindSctFrm(); pUp->Cut(); @@ -660,9 +658,6 @@ void SwFtnFrm::Cut() |* |* SwFtnFrm::Paste() |* -|* Ersterstellung MA 23. Feb. 94 -|* Letzte Aenderung MA 23. Feb. 94 -|* |*************************************************************************/ @@ -731,9 +726,13 @@ void SwFtnFrm::Paste( SwFrm* pParent, SwFrm* pSibling ) |* |* Beschreibung Liefert das naechste LayoutBlatt in den das |* Frame gemoved werden kann. +<<<<<<< local +|* Neue Seiten werden nur dann erzeugt, wenn der Parameter TRUE ist. +======= |* Neue Seiten werden nur dann erzeugt, wenn der Parameter sal_True ist. |* Ersterstellung MA 16. Nov. 92 |* Letzte Aenderung AMA 09. Nov. 98 +>>>>>>> other |* |*************************************************************************/ @@ -827,8 +826,6 @@ SwLayoutFrm *SwFrm::GetNextFtnLeaf( MakePageType eMakePage ) |* |* Beschreibung Liefert das vorhergehende LayoutBlatt in das der |* Frame gemoved werden kann. -|* Ersterstellung MA 16. Nov. 92 -|* Letzte Aenderung AMA 06. Nov. 98 |* |*************************************************************************/ @@ -960,9 +957,6 @@ SwLayoutFrm *SwFrm::GetPrevFtnLeaf( MakePageType eMakeFtn ) |* |* SwFrm::IsFtnAllowed() |* -|* Ersterstellung MA 22. Mar. 94 -|* Letzte Aenderung MA 01. Dec. 94 -|* |*************************************************************************/ @@ -985,9 +979,6 @@ sal_Bool SwFrm::IsFtnAllowed() const |* |* SwRootFrm::UpdateFtnNums() |* -|* Ersterstellung MA 02. Mar. 93 -|* Letzte Aenderung MA 09. Dec. 97 -|* |*************************************************************************/ @@ -1010,9 +1001,6 @@ void SwRootFrm::UpdateFtnNums() |* RemoveFtns() Entfernen aller Fussnoten (nicht etwa die Referenzen) |* und Entfernen aller Fussnotenseiten. |* -|* Ersterstellung MA 05. Dec. 97 -|* Letzte Aenderung AMA 06. Nov. 98 -|* |*************************************************************************/ void lcl_RemoveFtns( SwFtnBossFrm* pBoss, sal_Bool bPageOnly, sal_Bool bEndNotes ) @@ -1106,9 +1094,6 @@ void SwRootFrm::RemoveFtns( SwPageFrm *pPage, sal_Bool bPageOnly, sal_Bool bEndN |* |* SetFtnPageDescs() Seitenvorlagen der Fussnotenseiten aendern |* -|* Ersterstellung MA 11. Dec. 97 -|* Letzte Aenderung MA 11. Dec. 97 -|* |*************************************************************************/ void SwRootFrm::CheckFtnPageDescs( sal_Bool bEndNote ) @@ -1127,9 +1112,6 @@ void SwRootFrm::CheckFtnPageDescs( sal_Bool bEndNote ) |* |* SwFtnBossFrm::MakeFtnCont() |* -|* Ersterstellung MA 25. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -1146,7 +1128,7 @@ SwFtnContFrm *SwFtnBossFrm::MakeFtnCont() } #endif - SwFtnContFrm *pNew = new SwFtnContFrm( GetFmt()->GetDoc()->GetDfltFrmFmt()); + SwFtnContFrm *pNew = new SwFtnContFrm( GetFmt()->GetDoc()->GetDfltFrmFmt(), this ); SwLayoutFrm *pLay = FindBodyCont(); pNew->Paste( this, pLay->GetNext() ); return pNew; @@ -1156,9 +1138,6 @@ SwFtnContFrm *SwFtnBossFrm::MakeFtnCont() |* |* SwFtnBossFrm::FindFtnCont() |* -|* Ersterstellung MA 25. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -1188,9 +1167,6 @@ SwFtnContFrm *SwFtnBossFrm::FindFtnCont() |* |* SwFtnBossFrm::FindNearestFtnCont() Sucht den naechst greifbaren Fussnotencontainer. |* -|* Ersterstellung MA 02. Aug. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ SwFtnContFrm *SwFtnBossFrm::FindNearestFtnCont( sal_Bool bDontLeave ) @@ -1223,8 +1199,6 @@ SwFtnContFrm *SwFtnBossFrm::FindNearestFtnCont( sal_Bool bDontLeave ) |* SwFtnBossFrm::FindFirstFtn() |* |* Beschreibung Erste Fussnote des Fussnotenbosses suchen. -|* Ersterstellung MA 26. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 99 |* |*************************************************************************/ @@ -1312,8 +1286,6 @@ SwFtnFrm *SwFtnBossFrm::FindFirstFtn() |* SwFtnBossFrm::FindFirstFtn() |* |* Beschreibunt Erste Fussnote zum Cnt suchen. -|* Ersterstellung MA 04. Mar. 93 -|* Letzte Aenderung AMA 28. Oct. 98 |* |*************************************************************************/ @@ -1355,9 +1327,6 @@ const SwFtnFrm *SwFtnBossFrm::FindFirstFtn( SwCntntFrm *pCnt ) const |* |* SwFtnBossFrm::ResetFtn() |* -|* Ersterstellung MA 11. May. 95 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -1371,14 +1340,20 @@ void SwFtnBossFrm::ResetFtn( const SwFtnFrm *pCheck ) SwCntntNode *pNd = aIdx.GetNode().GetCntntNode(); if ( !pNd ) pNd = pCheck->GetFmt()->GetDoc()-> +<<<<<<< local + GetNodes().GoNextSection( &aIdx, TRUE, FALSE ); + SwIterator<SwFrm,SwCntntNode> aIter( *pNd ); + SwFrm* pFrm = aIter.First(); + while( pFrm ) +======= GetNodes().GoNextSection( &aIdx, sal_True, sal_False ); SwClientIter aIter( *pNd ); SwClient* pLast = aIter.GoStart(); while( pLast ) +>>>>>>> other { - if ( pLast->ISA(SwFrm) ) - { - SwFrm *pFrm = (SwFrm*)pLast; + if( pFrm->getRootFrm() == pCheck->getRootFrm() ) + { SwFrm *pTmp = pFrm->GetUpper(); while ( pTmp && !pTmp->IsFtnFrm() ) pTmp = pTmp->GetUpper(); @@ -1397,7 +1372,8 @@ void SwFtnBossFrm::ResetFtn( const SwFtnFrm *pCheck ) } } } - pLast = ++aIter; + + pFrm = aIter.Next(); } } @@ -1405,9 +1381,6 @@ void SwFtnBossFrm::ResetFtn( const SwFtnFrm *pCheck ) |* |* SwFtnBossFrm::InsertFtn() |* -|* Ersterstellung MA 26. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -1683,9 +1656,6 @@ void SwFtnBossFrm::InsertFtn( SwFtnFrm* pNew ) |* |* SwFtnBossFrm::AppendFtn() |* -|* Ersterstellung MA 25. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -1830,7 +1800,7 @@ void SwFtnBossFrm::AppendFtn( SwCntntFrm *pRef, SwTxtFtn *pAttr ) } } - SwFtnFrm *pNew = new SwFtnFrm( pDoc->GetDfltFrmFmt(), pRef, pAttr ); + SwFtnFrm *pNew = new SwFtnFrm( pDoc->GetDfltFrmFmt(), this, pRef, pAttr ); { SwNodeIndex aIdx( *pAttr->GetStartNode(), 1 ); ::_InsertCnt( pNew, pDoc, aIdx.GetIndex() ); @@ -1918,9 +1888,6 @@ void SwFtnBossFrm::AppendFtn( SwCntntFrm *pRef, SwTxtFtn *pAttr ) |* |* SwFtnBossFrm::FindFtn() |* -|* Ersterstellung MA 25. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -1935,14 +1902,12 @@ SwFtnFrm *SwFtnBossFrm::FindFtn( const SwCntntFrm *pRef, const SwTxtFtn *pAttr ) GetNodes().GoNextSection( &aIdx, sal_True, sal_False ); if ( !pNd ) return 0; - SwClientIter aIter( *pNd ); - SwClient *pClient; - if ( 0 != (pClient = aIter.GoStart()) ) + SwIterator<SwFrm,SwCntntNode> aIter( *pNd ); + SwFrm* pFrm = aIter.First(); + if( pFrm ) do { - if ( pClient->IsA( TYPE(SwFrm) ) ) - { - SwFrm *pFrm = ((SwFrm*)pClient)->GetUpper(); + pFrm = pFrm->GetUpper(); // #i28500#, #i27243# Due to the endnode collector, there are // SwFtnFrms, which are not in the layout. Therefore the // bInfFtn flags are not set correctly, and a cell of FindFtnFrm @@ -1960,8 +1925,8 @@ SwFtnFrm *SwFtnBossFrm::FindFtn( const SwCntntFrm *pRef, const SwTxtFtn *pAttr ) pFtn = pFtn->GetMaster(); return pFtn; } - } - } while ( 0 != (pClient = aIter++) ); + + } while ( 0 != (pFrm = aIter.Next()) ); return 0; } @@ -1969,9 +1934,6 @@ SwFtnFrm *SwFtnBossFrm::FindFtn( const SwCntntFrm *pRef, const SwTxtFtn *pAttr ) |* |* SwFtnBossFrm::RemoveFtn() |* -|* Ersterstellung MA 25. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -2003,9 +1965,6 @@ void SwFtnBossFrm::RemoveFtn( const SwCntntFrm *pRef, const SwTxtFtn *pAttr, |* |* SwFtnBossFrm::ChangeFtnRef() |* -|* Ersterstellung MA 25. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -2024,9 +1983,6 @@ void SwFtnBossFrm::ChangeFtnRef( const SwCntntFrm *pOld, const SwTxtFtn *pAttr, |* |* SwFtnBossFrm::CollectFtns() |* -|* Ersterstellung MA 24. Jul. 95 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -2092,9 +2048,6 @@ void SwFtnBossFrm::CollectFtns( const SwCntntFrm* _pRef, |* |* SwFtnBossFrm::_CollectFtns() |* -|* Ersterstellung MA 24. Jul. 95 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ inline void FtnInArr( SvPtrarr& rFtnArr, SwFtnFrm* pFtn ) { @@ -2254,9 +2207,6 @@ void SwFtnBossFrm::_CollectFtns( const SwCntntFrm* _pRef, |* |* SwFtnBossFrm::_MoveFtns() |* -|* Ersterstellung MA 26. Feb. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -2472,9 +2422,6 @@ void SwFtnBossFrm::_MoveFtns( SvPtrarr &rFtnArr, sal_Bool bCalc ) |* |* SwFtnBossFrm::MoveFtns() |* -|* Ersterstellung BP 05. Aug. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -2520,9 +2467,6 @@ void SwFtnBossFrm::MoveFtns( const SwCntntFrm *pSrc, SwCntntFrm *pDest, |* |* SwFtnBossFrm::RearrangeFtns() |* -|* Ersterstellung MA 20. Jan. 94 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ @@ -2764,9 +2708,6 @@ void SwFtnBossFrm::RearrangeFtns( const SwTwips nDeadLine, const sal_Bool bLock, |* |* SwPageFrm::UpdateFtnNum() |* -|* Ersterstellung MA 02. Mar. 93 -|* Letzte Aenderung AMA 29. Oct. 98 -|* |*************************************************************************/ void SwPageFrm::UpdateFtnNum() @@ -2829,9 +2770,6 @@ void SwPageFrm::UpdateFtnNum() |* |* SwFtnBossFrm::SetFtnDeadLine() |* -|* Ersterstellung MA 02. Aug. 93 -|* Letzte Aenderung MA 16. Nov. 98 -|* |*************************************************************************/ void SwFtnBossFrm::SetFtnDeadLine( const SwTwips nDeadLine ) @@ -2850,8 +2788,14 @@ void SwFtnBossFrm::SetFtnDeadLine( const SwTwips nDeadLine ) else nMaxFtnHeight = -(pBody->Frm().*fnRect->fnBottomDist)( nDeadLine ); +<<<<<<< local + const ViewShell *pSh = getRootFrm() ? getRootFrm()->GetCurrShell() : 0; + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) + nMaxFtnHeight += pBody->Grow( LONG_MAX, TRUE ); +======= if ( GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) nMaxFtnHeight += pBody->Grow( LONG_MAX, sal_True ); +>>>>>>> other if ( IsInSct() ) nMaxFtnHeight += FindSctFrm()->Grow( LONG_MAX, sal_True ); @@ -2865,9 +2809,6 @@ void SwFtnBossFrm::SetFtnDeadLine( const SwTwips nDeadLine ) |* |* SwFtnBossFrm::GetVarSpace() |* -|* Ersterstellung MA 03. Apr. 95 -|* Letzte Aenderung MA 16. Nov. 98 -|* |*************************************************************************/ SwTwips SwFtnBossFrm::GetVarSpace() const { @@ -2932,9 +2873,12 @@ SwTwips SwFtnBossFrm::GetVarSpace() const } else nRet = 0; - if ( IsPageFrm() && - GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if ( IsPageFrm() ) + { + const ViewShell *pSh = getRootFrm() ? getRootFrm()->GetCurrShell() : 0; + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) nRet += BROWSE_HEIGHT - Frm().Height(); + } return nRet; } @@ -2950,9 +2894,6 @@ SwTwips SwFtnBossFrm::GetVarSpace() const |* gibt und die Fussnoten nicht vom Bereich eingesammelt werden, ist ein Adjust.., |* ansonsten ein Grow/Shrink notwendig. |* -|* Ersterstellung AMA 09. Dec 98 -|* Letzte Aenderung AMA 09. Dec 98 -|* |*************************************************************************/ sal_uInt8 SwFtnBossFrm::_NeighbourhoodAdjustment( const SwFrm* ) const @@ -2988,9 +2929,6 @@ sal_uInt8 SwFtnBossFrm::_NeighbourhoodAdjustment( const SwFrm* ) const |* |* SwPageFrm::SetColMaxFtnHeight() |* -|* Ersterstellung AMA 29. Oct 98 -|* Letzte Aenderung AMA 29. Oct 98 -|* |*************************************************************************/ void SwPageFrm::SetColMaxFtnHeight() { @@ -3010,9 +2948,6 @@ void SwPageFrm::SetColMaxFtnHeight() |* |* SwLayoutFrm::MoveLowerFtns |* -|* Ersterstellung MA 01. Sep. 94 -|* Letzte Aenderung MA 05. Sep. 95 -|* |*************************************************************************/ @@ -3108,9 +3043,6 @@ sal_Bool SwLayoutFrm::MoveLowerFtns( SwCntntFrm *pStart, SwFtnBossFrm *pOldBoss, |* |* SwLayoutFrm::MoveFtnCntFwd() |* -|* Ersterstellung MA 24. Nov. 94 -|* Letzte Aenderung MA 15. Jun. 95 -|* |*************************************************************************/ @@ -3181,7 +3113,7 @@ sal_Bool SwCntntFrm::MoveFtnCntFwd( sal_Bool bMakePage, SwFtnBossFrm *pOldBoss ) //Fussnote erzeugen. SwFtnFrm *pOld = FindFtnFrm(); pTmpFtn = new SwFtnFrm( pOld->GetFmt()->GetDoc()->GetDfltFrmFmt(), - pOld->GetRef(), pOld->GetAttr() ); + pOld, pOld->GetRef(), pOld->GetAttr() ); //Verkettung der Fussnoten. if ( pOld->GetFollow() ) { @@ -3250,9 +3182,6 @@ sal_Bool SwCntntFrm::MoveFtnCntFwd( sal_Bool bMakePage, SwFtnBossFrm *pOldBoss ) |* |* class SwSaveFtnHeight |* -|* Ersterstellung MA 19. Jan. 94 -|* Letzte Aenderung MA 19. Jan. 94 -|* |*************************************************************************/ @@ -3315,7 +3244,11 @@ SwCntntFrm* SwFtnFrm::GetRefFromAttr() ASSERT( pAttr, "invalid Attribute" ); SwTxtNode& rTNd = (SwTxtNode&)pAttr->GetTxtNode(); SwPosition aPos( rTNd, SwIndex( &rTNd, *pAttr->GetStart() )); +<<<<<<< local + SwCntntFrm* pCFrm = rTNd.getLayoutFrm( getRootFrm(), 0, &aPos, FALSE ); +======= SwCntntFrm* pCFrm = rTNd.GetFrm( 0, &aPos, sal_False ); +>>>>>>> other return pCFrm; } diff --git a/sw/source/core/layout/hffrm.cxx b/sw/source/core/layout/hffrm.cxx index 57790fbb3eb3..3b52ea360ead 100644 --- a/sw/source/core/layout/hffrm.cxx +++ b/sw/source/core/layout/hffrm.cxx @@ -35,7 +35,9 @@ #include <fmtcntnt.hxx> #include <fmthdft.hxx> #include <fmtfsize.hxx> +#include "viewopt.hxx" #include "hffrm.hxx" +#include "rootfrm.hxx" #include "txtfrm.hxx" #include "sectfrm.hxx" #include "flyfrm.hxx" @@ -117,8 +119,13 @@ static void lcl_LayoutFrmEnsureMinHeight(SwLayoutFrm & rFrm, } } +<<<<<<< local +SwHeadFootFrm::SwHeadFootFrm( SwFrmFmt * pFmt, SwFrm* pSib, USHORT nTypeIn) + : SwLayoutFrm( pFmt, pSib ) +======= SwHeadFootFrm::SwHeadFootFrm( SwFrmFmt * pFmt, sal_uInt16 nTypeIn) : SwLayoutFrm(pFmt) +>>>>>>> other { nType = nTypeIn; SetDerivedVert( sal_False ); @@ -708,9 +715,14 @@ void SwPageFrm::PrepareHeader() if ( !pLay ) return; - const SwFmtHeader &rH = ((SwFrmFmt*)pRegisteredIn)->GetHeader(); + const SwFmtHeader &rH = ((SwFrmFmt*)GetRegisteredIn())->GetHeader(); +<<<<<<< local + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bOn = !(pSh && pSh->GetViewOptions()->getBrowseMode()); +======= const sal_Bool bOn = !((SwFrmFmt*)pRegisteredIn)->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other if ( bOn && rH.IsActive() ) { //Header einsetzen, vorher entfernen falls vorhanden. @@ -727,7 +739,7 @@ void SwPageFrm::PrepareHeader() delete pDel; } ASSERT( pLay, "Wohin mit dem Header?" ); - SwHeaderFrm *pH = new SwHeaderFrm( (SwFrmFmt*)rH.GetHeaderFmt() ); + SwHeaderFrm *pH = new SwHeaderFrm( (SwFrmFmt*)rH.GetHeaderFmt(), this ); pH->Paste( this, pLay ); if ( GetUpper() ) ::RegistFlys( this, pH ); @@ -756,11 +768,16 @@ void SwPageFrm::PrepareFooter() if ( !pLay ) return; - const SwFmtFooter &rF = ((SwFrmFmt*)pRegisteredIn)->GetFooter(); + const SwFmtFooter &rF = ((SwFrmFmt*)GetRegisteredIn())->GetFooter(); while ( pLay->GetNext() ) pLay = (SwLayoutFrm*)pLay->GetNext(); +<<<<<<< local + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bOn = !(pSh && pSh->GetViewOptions()->getBrowseMode()); +======= const sal_Bool bOn = !((SwFrmFmt*)pRegisteredIn)->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other if ( bOn && rF.IsActive() ) { //Footer einsetzen, vorher entfernen falls vorhanden. @@ -774,7 +791,7 @@ void SwPageFrm::PrepareFooter() pLay->Cut(); delete pLay; } - SwFooterFrm *pF = new SwFooterFrm( (SwFrmFmt*)rF.GetFooterFmt() ); + SwFooterFrm *pF = new SwFooterFrm( (SwFrmFmt*)rF.GetFooterFmt(), this ); pF->Paste( this ); if ( GetUpper() ) ::RegistFlys( this, pF ); @@ -782,10 +799,10 @@ void SwPageFrm::PrepareFooter() else if ( pLay && pLay->IsFooterFrm() ) { //Footer entfernen falls vorhanden. ::DelFlys( pLay, this ); - ViewShell *pSh; - if ( pLay->GetPrev() && 0 != (pSh = GetShell()) && - pSh->VisArea().HasArea() ) - pSh->InvalidateWindows( pSh->VisArea() ); + ViewShell *pShell; + if ( pLay->GetPrev() && 0 != (pShell = getRootFrm()->GetCurrShell()) && + pShell->VisArea().HasArea() ) + pShell->InvalidateWindows( pShell->VisArea() ); pLay->Cut(); delete pLay; } diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx index 762c1caa3d84..c5606aa40878 100644 --- a/sw/source/core/layout/layact.cxx +++ b/sw/source/core/layout/layact.cxx @@ -437,8 +437,14 @@ sal_Bool SwLayAction::RemoveEmptyBrowserPages() { //Beim umschalten vom normalen in den Browsermodus bleiben u.U. einige //unangenehm lange stehen. Diese beseiten wir mal schnell. +<<<<<<< local + BOOL bRet = FALSE; + const ViewShell *pSh = pRoot->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) +======= sal_Bool bRet = sal_False; if ( pRoot->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) +>>>>>>> other { SwPageFrm *pPage = (SwPageFrm*)pRoot->Lower(); do @@ -1190,8 +1196,14 @@ static const SwAnchoredObject* lcl_FindFirstInvaObj( const SwPageFrm* _pPage, sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage ) { +<<<<<<< local + BOOL bRet = FALSE; + const ViewShell *pSh = pRoot->GetCurrShell(); + const BOOL bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode(); +======= sal_Bool bRet = sal_False; const sal_Bool bBrowse = pRoot->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other //Wenn die Seite nicht Gueltig ist wird sie schnell formatiert, sonst //gibts nix als Aerger. @@ -1440,19 +1452,21 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect ) sal_Bool bNoPaint = sal_False; if ( pLay->IsPageBodyFrm() && pLay->Frm().Pos() == aOldRect.Pos() && - pLay->Lower() && - pLay->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + pLay->Lower() ) { - //HotFix: Vobis Homepage, nicht so genau hinsehen, sonst - //rpaints - + const ViewShell *pSh = pLay->getRootFrm()->GetCurrShell(); //Einschraenkungen wegen Kopf-/Fusszeilen +<<<<<<< local + if( pSh && pSh->GetViewOptions()->getBrowseMode() && + !( pLay->IsCompletePaint() && pLay->FindPageFrm()->FindFtnCont() ) ) + bNoPaint = TRUE; +======= if ( !( pLay->IsCompletePaint() && pLay->FindPageFrm()->FindFtnCont() ) ) { bNoPaint = sal_True; +>>>>>>> other } - } if ( !bNoPaint && IsPaint() && bAddRect && (pLay->IsCompletePaint() || bChanged) ) { @@ -1492,8 +1506,14 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect ) aPaint.Bottom( aPaint.Bottom() + nBorderWidth + nShadowWidth); } - if ( pLay->IsPageFrm() && - pLay->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + BOOL bPageInBrowseMode = pLay->IsPageFrm(); + if( bPageInBrowseMode ) + { + const ViewShell *pSh = pLay->getRootFrm()->GetCurrShell(); + if( !pSh || !pSh->GetViewOptions()->getBrowseMode() ) + bPageInBrowseMode = FALSE; + } + if( bPageInBrowseMode ) { // NOTE: no vertical layout in online layout //Ist die Aenderung ueberhaupt sichtbar? @@ -1840,7 +1860,12 @@ sal_Bool SwLayAction::FormatLayoutTab( SwTabFrm *pTab, sal_Bool bAddRect ) sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage ) { const SwCntntFrm *pCntnt = pPage->ContainsCntnt(); +<<<<<<< local + const ViewShell *pSh = pRoot->GetCurrShell(); + const BOOL bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode(); +======= const sal_Bool bBrowse = pRoot->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other while ( pCntnt && pPage->IsAnLower( pCntnt ) ) { diff --git a/sw/source/core/layout/laycache.cxx b/sw/source/core/layout/laycache.cxx index bab2154bc7a9..dbc59bc25fa5 100644 --- a/sw/source/core/layout/laycache.cxx +++ b/sw/source/core/layout/laycache.cxx @@ -55,6 +55,8 @@ #include <frmtool.hxx> #include <dflyobj.hxx> #include <dcontact.hxx> +#include "viewopt.hxx" +#include "viewsh.hxx" #include <flyfrm.hxx> // OD 2004-05-24 #i28701# #include <sortedobjs.hxx> @@ -186,7 +188,7 @@ sal_Bool SwLayCacheImpl::Read( SvStream& rStream ) void SwLayoutCache::Write( SvStream &rStream, const SwDoc& rDoc ) { - if( rDoc.GetRootFrm() ) // the layout itself .. + if( rDoc.GetCurrentLayout() ) // the layout itself .. //swmod 080218 { SwLayCacheIoImpl aIo( rStream, sal_True ); // We want to save the relative index, so we need the index @@ -194,7 +196,7 @@ void SwLayoutCache::Write( SvStream &rStream, const SwDoc& rDoc ) sal_uLong nStartOfContent = rDoc.GetNodes().GetEndOfContent(). StartOfSectionNode()->GetIndex(); // The first page.. - SwPageFrm* pPage = (SwPageFrm*)rDoc.GetRootFrm()->Lower(); + SwPageFrm* pPage = (SwPageFrm*)rDoc.GetCurrentLayout()->Lower(); //swmod 080218 aIo.OpenRec( SW_LAYCACHE_IO_REC_PAGES ); aIo.OpenFlagRec( 0, 0 ); @@ -347,13 +349,16 @@ void SwLayoutCache::Write( SvStream &rStream, const SwDoc& rDoc ) #ifdef DBG_UTIL sal_Bool SwLayoutCache::CompareLayout( const SwDoc& rDoc ) const { + if( !pImpl ) + return sal_True; + const SwRootFrm *pRootFrm = rDoc.GetCurrentLayout(); sal_Bool bRet = sal_True; - if( pImpl && rDoc.GetRootFrm() ) + if( pRootFrm ) { sal_uInt16 nIndex = 0; sal_uLong nStartOfContent = rDoc.GetNodes().GetEndOfContent(). StartOfSectionNode()->GetIndex(); - SwPageFrm* pPage = (SwPageFrm*)rDoc.GetRootFrm()->Lower(); + SwPageFrm* pPage = (SwPageFrm*)pRootFrm->Lower(); if( pPage ) pPage = (SwPageFrm*)pPage->GetNext(); while( pPage ) @@ -597,7 +602,10 @@ sal_uLong SwLayHelper::CalcPageCount() } if ( nNdCount < 1000 ) nPgCount = 0;// no progress bar for small documents - if ( pDoc->get(IDocumentSettingAccess::BROWSE_MODE) ) + ViewShell *pSh = 0; + if( rpLay && rpLay->getRootFrm() ) + pSh = rpLay->getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) nMaxParaPerPage *= 6; } } @@ -892,7 +900,7 @@ sal_Bool SwLayHelper::CheckInsert( sal_uLong nNodeIndex ) { ASSERT( pTab->GetTable()->GetTabLines()[ nRowIdx ], "Table ohne Zeilen?" ); pHeadline = - new SwRowFrm( *pTab->GetTable()->GetTabLines()[ nRowIdx ] ); + new SwRowFrm( *pTab->GetTable()->GetTabLines()[ nRowIdx ], pTab ); pHeadline->SetRepeatedHeadline( true ); pHeadline->InsertBefore( pFoll, 0 ); pHeadline->RegistFlys(); @@ -924,7 +932,7 @@ sal_Bool SwLayHelper::CheckInsert( sal_uLong nNodeIndex ) else { SwTxtFrm *pNew = new SwTxtFrm( ((SwTxtFrm*)rpFrm)-> - GetTxtNode() ); + GetTxtNode(), rpFrm ); pNew->_SetIsFollow( sal_True ); pNew->ManipOfst( nOfst ); pNew->SetFollow( ((SwTxtFrm*)rpFrm)->GetFollow() ); diff --git a/sw/source/core/layout/movedfwdfrmsbyobjpos.cxx b/sw/source/core/layout/movedfwdfrmsbyobjpos.cxx index 2b980612a98c..7ad0464a75c8 100644 --- a/sw/source/core/layout/movedfwdfrmsbyobjpos.cxx +++ b/sw/source/core/layout/movedfwdfrmsbyobjpos.cxx @@ -29,11 +29,10 @@ #include "precompiled_sw.hxx" #include <movedfwdfrmsbyobjpos.hxx> #include <txtfrm.hxx> -// --> OD 2004-10-05 #i26945# #include <rowfrm.hxx> #include <pagefrm.hxx> #include <ndtxt.hxx> -// <-- +#include <switerator.hxx> SwMovedFwdFrmsByObjPos::SwMovedFwdFrmsByObjPos() { @@ -86,10 +85,8 @@ bool SwMovedFwdFrmsByObjPos::DoesRowContainMovedFwdFrm( const SwRowFrm& _rRowFrm const NodeMapEntry& rEntry = *(aIter); if ( rEntry.second >= nPageNumOfRow ) { - SwClientIter aFrmIter( *const_cast<SwTxtNode*>( rEntry.first ) ); - for( SwTxtFrm* pTxtFrm = (SwTxtFrm*)aFrmIter.First( TYPE(SwTxtFrm) ); - pTxtFrm; - pTxtFrm = (SwTxtFrm*)aFrmIter.Next() ) + SwIterator<SwTxtFrm,SwTxtNode> aFrmIter( *rEntry.first ); + for( SwTxtFrm* pTxtFrm = aFrmIter.First(); pTxtFrm; pTxtFrm = (SwTxtFrm*)aFrmIter.Next() ) { // --> OD 2004-12-03 #115759# - assure that found text frame // is the first one. diff --git a/sw/source/core/layout/newfrm.cxx b/sw/source/core/layout/newfrm.cxx index 512998248fe1..45d524b5a822 100644 --- a/sw/source/core/layout/newfrm.cxx +++ b/sw/source/core/layout/newfrm.cxx @@ -424,7 +424,7 @@ void InitCurrShells( SwRootFrm *pRoot ) SwRootFrm::SwRootFrm( SwFrmFmt *pFmt, ViewShell * pSh ) : SwLayoutFrm( pFmt->GetDoc()->MakeFrmFmt( - XubString( "Root", RTL_TEXTENCODING_MS_1252 ), pFmt ) ), + XubString( "Root", RTL_TEXTENCODING_MS_1252 ), pFmt ), 0 ), // --> PAGES01 maPagesArea(), mnViewWidth( -1 ), @@ -444,8 +444,14 @@ SwRootFrm::SwRootFrm( SwFrmFmt *pFmt, ViewShell * pSh ) : nAccessibleShells( 0 ) { nType = FRMC_ROOT; +<<<<<<< local + bIdleFormat = bTurboAllowed = bAssertFlyPages = bIsNewLayout = TRUE; + bCheckSuperfluous = bBrowseWidthValid = FALSE; + setRootFrm( this ); +======= bIdleFormat = bTurboAllowed = bAssertFlyPages = bIsNewLayout = sal_True; bCheckSuperfluous = bBrowseWidthValid = sal_False; +>>>>>>> other InitCurrShells( this ); @@ -454,14 +460,22 @@ SwRootFrm::SwRootFrm( SwFrmFmt *pFmt, ViewShell * pSh ) : IDocumentFieldsAccess *pFieldsAccess = pFmt->getIDocumentFieldsAccess(); const IDocumentSettingAccess *pSettingAccess = pFmt->getIDocumentSettingAccess(); pTimerAccess->StopIdling(); +<<<<<<< local + pLayoutAccess->SetCurrentViewShell( this->GetCurrShell() ); //Fuer das Erzeugen der Flys durch MakeFrms() //swmod 071108//swmod 071225 + bCallbackActionEnabled = FALSE; //vor Verlassen auf TRUE setzen! +======= pLayoutAccess->SetRootFrm( this ); //Fuer das Erzeugen der Flys durch MakeFrms() bCallbackActionEnabled = sal_False; //vor Verlassen auf sal_True setzen! +>>>>>>> other SdrModel *pMd = pFmt->getIDocumentDrawModelAccess()->GetDrawModel(); - if ( pMd ) { - pDrawPage = pMd->GetPage( 0 ); + // Disable "multiple layout" + pDrawPage = pMd->GetPage(0); //pMd->AllocPage( FALSE ); + //pMd->InsertPage( pDrawPage ); + // end of disabling + pDrawPage->SetSize( Frm().SSize() ); } @@ -551,8 +565,9 @@ SwRootFrm::~SwRootFrm() pTurbo = 0; if(pBlink) pBlink->FrmDelete( this ); - ((SwFrmFmt*)pRegisteredIn)->GetDoc()->DelFrmFmt( (SwFrmFmt*)pRegisteredIn ); + static_cast<SwFrmFmt*>(GetRegisteredInNonConst())->GetDoc()->DelFrmFmt( static_cast<SwFrmFmt*>(GetRegisteredInNonConst()) ); delete pDestroy; + pDestroy = 0; //Referenzen entfernen. for ( sal_uInt16 i = 0; i < pCurrShells->Count(); ++i ) @@ -585,5 +600,38 @@ void SwRootFrm::RemoveMasterObjs( SdrPage *pPg ) } +void SwRootFrm::AllCheckPageDescs() const +{ + CheckPageDescs( (SwPageFrm*)this->Lower() ); +} +//swmod 080226 +void SwRootFrm::AllInvalidateAutoCompleteWords() const +{ + SwPageFrm *pPage = (SwPageFrm*)this->Lower(); + while ( pPage ) + { + pPage->InvalidateAutoCompleteWords(); + pPage = (SwPageFrm*)pPage->GetNext(); + } +}//swmod 080305 +void SwRootFrm::AllAddPaintRect() const +{ + GetCurrShell()->AddPaintRect( this->Frm() ); +}//swmod 080305 +void SwRootFrm::AllRemoveFtns() +{ + RemoveFtns(); +} +void SwRootFrm::AllInvalidateSmartTagsOrSpelling(BOOL bSmartTags) const +{ + SwPageFrm *pPage = (SwPageFrm*)this->Lower(); + while ( pPage ) + { + if ( bSmartTags ) + pPage->InvalidateSmartTags(); + pPage->InvalidateSpelling(); + pPage = (SwPageFrm*)pPage->GetNext(); + } //swmod 080218 +} diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx index d17940a1fec3..9d4ecc991a7f 100644 --- a/sw/source/core/layout/pagechg.cxx +++ b/sw/source/core/layout/pagechg.cxx @@ -46,6 +46,7 @@ #include <docsh.hxx> #include "viewimp.hxx" +#include "viewopt.hxx" #include "pagefrm.hxx" #include "rootfrm.hxx" #include "cntfrm.hxx" @@ -73,9 +74,8 @@ #include "poolfmt.hxx" #include <editeng/frmdiritem.hxx> #include <swfntcch.hxx> // SwFontAccess -// OD 2004-05-24 #i28701# #include <sortedobjs.hxx> - +#include <switerator.hxx> #include <vcl/svapp.hxx> using namespace ::com::sun::star; @@ -89,8 +89,8 @@ using namespace ::com::sun::star; |* Letzte Aenderung MA 01. Aug. 93 |* |*************************************************************************/ -SwBodyFrm::SwBodyFrm( SwFrmFmt *pFmt ): - SwLayoutFrm( pFmt ) +SwBodyFrm::SwBodyFrm( SwFrmFmt *pFmt, SwFrm* pSib ): + SwLayoutFrm( pFmt, pSib ) { nType = FRMC_BODY; } @@ -196,8 +196,8 @@ void SwBodyFrm::Format( const SwBorderAttrs * ) |* Letzte Aenderung MA 08. Dec. 97 |* |*************************************************************************/ -SwPageFrm::SwPageFrm( SwFrmFmt *pFmt, SwPageDesc *pPgDsc ) : - SwFtnBossFrm( pFmt ), +SwPageFrm::SwPageFrm( SwFrmFmt *pFmt, SwFrm* pSib, SwPageDesc *pPgDsc ) : + SwFtnBossFrm( pFmt, pSib ), pSortedObjs( 0 ), pDesc( pPgDsc ), nPhyPageNum( 0 ), @@ -221,12 +221,12 @@ SwPageFrm::SwPageFrm( SwFrmFmt *pFmt, SwPageDesc *pPgDsc ) : bInvalidLayout = bInvalidCntnt = bInvalidSpelling = bInvalidSmartTags = bInvalidAutoCmplWrds = bInvalidWordCount = sal_True; bInvalidFlyLayout = bInvalidFlyCntnt = bInvalidFlyInCnt = bFtnPage = bEndNotePage = sal_False; - const bool bBrowseMode = pFmt->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); + ViewShell *pSh = getRootFrm()->GetCurrShell(); + const bool bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); if ( bBrowseMode ) { Frm().Height( 0 ); - ViewShell *pSh = GetShell(); - long nWidth = pSh ? pSh->VisArea().Width():0; + long nWidth = pSh->VisArea().Width(); if ( !nWidth ) nWidth = 5000L; //aendert sich sowieso Frm().Width ( nWidth ); @@ -241,7 +241,7 @@ SwPageFrm::SwPageFrm( SwFrmFmt *pFmt, SwPageDesc *pPgDsc ) : { bEmptyPage = sal_False; Calc(); //Damit die PrtArea stimmt. - SwBodyFrm *pBodyFrm = new SwBodyFrm( pDoc->GetDfltFrmFmt() ); + SwBodyFrm *pBodyFrm = new SwBodyFrm( pDoc->GetDfltFrmFmt(), this ); pBodyFrm->ChgSize( Prt().SSize() ); pBodyFrm->Paste( this ); pBodyFrm->Calc(); //Damit die Spalten korrekt @@ -291,7 +291,7 @@ SwPageFrm::~SwPageFrm() SwDoc *pDoc = GetFmt()->GetDoc(); if( pDoc && !pDoc->IsInDtor() ) { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( pSh ) { SwViewImp *pImp = pSh->Imp(); @@ -340,16 +340,16 @@ void SwPageFrm::CheckDirection( sal_Bool bVert ) ((SvxFrameDirectionItem&)GetFmt()->GetFmtAttr( RES_FRAMEDIR )).GetValue(); if( bVert ) { - if( FRMDIR_HORI_LEFT_TOP == nDir || FRMDIR_HORI_RIGHT_TOP == nDir || - GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if( FRMDIR_HORI_LEFT_TOP == nDir || FRMDIR_HORI_RIGHT_TOP == nDir ) bVertical = 0; else - bVertical = 1; -/* - if( pDesc && pDesc->GetName().GetChar(0)=='x') - bReverse = 1; + { + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) + bVertical = 0; else - */ + bVertical = 1; + } bReverse = 0; bInvalidVert = 0; } @@ -455,17 +455,15 @@ void MA_FASTCALL lcl_MakeObjs( const SwSpzFrmFmts &rTbl, SwPageFrm *pPage ) } else { - SwClientIter aIter( *pFmt ); - SwClient *pTmp = aIter.First( TYPE(SwFrm) ); - SwFlyFrm *pFly; - if ( pTmp ) + SwIterator<SwFlyFrm,SwFmt> aIter( *pFmt ); + SwFlyFrm *pFly = aIter.First(); + if ( pFly) { - pFly = (SwFlyFrm*)pTmp; if( pFly->GetAnchorFrm() ) pFly->AnchorFrm()->RemoveFly( pFly ); } else - pFly = new SwFlyLayFrm( (SwFlyFrmFmt*)pFmt, pPg ); + pFly = new SwFlyLayFrm( (SwFlyFrmFmt*)pFmt, pPg, pPg ); pPg->AppendFly( pFly ); ::RegistFlys( pPg, pFly ); } @@ -530,9 +528,9 @@ void SwPageFrm::PreparePage( sal_Bool bFtn ) |* Letzte Aenderung MA 03. Mar. 96 |* |*************************************************************************/ -void SwPageFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) +void SwPageFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew ) { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( pSh ) pSh->SetFirstVisPageInvalid(); sal_uInt8 nInvFlags = 0; @@ -577,8 +575,13 @@ void SwPageFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) } } +<<<<<<< local +void SwPageFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem *pNew, + BYTE &rInvFlags, +======= void SwPageFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, sal_uInt8 &rInvFlags, +>>>>>>> other SwAttrSetChg *pOldSet, SwAttrSetChg *pNewSet ) { sal_Bool bClear = sal_True; @@ -622,7 +625,8 @@ void SwPageFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, case RES_FRM_SIZE: { const SwRect aOldPageFrmRect( Frm() ); - if ( GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + ViewShell *pSh = getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) { bValidSize = sal_False; // OD 28.10.2002 #97265# - Don't call <SwPageFrm::MakeAll()> @@ -650,8 +654,7 @@ void SwPageFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, static_cast<SwRootFrm*>(GetUpper())->CheckViewLayout( 0, 0 ); } //Window aufraeumen. - ViewShell *pSh; - if ( 0 != (pSh = GetShell()) && pSh->GetWin() && aOldPageFrmRect.HasArea() ) + if( pSh && pSh->GetWin() && aOldPageFrmRect.HasArea() ) { // OD 12.02.2003 #i9719#, #105645# - consider border and shadow of // page frame for determine 'old' rectangle - it's used for invalidating. @@ -790,7 +793,8 @@ SwPageDesc *SwPageFrm::FindPageDesc() SwPageDesc *pRet = 0; //5. - if ( GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) { SwCntntFrm *pFrm = GetUpper()->ContainsCntnt(); while ( !pFrm->IsInDocBody() ) @@ -847,10 +851,13 @@ void AdjustSizeChgNotify( SwRootFrm *pRoot ) ViewShell *pSh = pRoot->GetCurrShell(); if ( pSh ) { - pSh->Imp()->NotifySizeChg( pRoot->Frm().SSize() );//Einmal fuer das Drawing. do { - pSh->SizeChgNotify(); //Einmal fuer jede Sicht. + if( pRoot == pSh->GetLayout() ) + { + pSh->SizeChgNotify(); + pSh->Imp()->NotifySizeChg( pRoot->Frm().SSize() ); + } pSh = (ViewShell*)pSh->GetNext(); } while ( pSh != pRoot->GetCurrShell() ); } @@ -876,7 +883,7 @@ void SwPageFrm::Cut() // PAGES01 //AdjustRootSize( CHG_CUTPAGE, 0 ); - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( !IsEmptyPage() ) { if ( GetNext() ) @@ -982,9 +989,11 @@ void SwPageFrm::Paste( SwFrm* pParent, SwFrm* pSibling ) InvalidatePos(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); + if ( pSh ) + pSh->SetFirstVisPageInvalid(); // PAGES01 - if ( GetUpper() ) - static_cast<SwRootFrm*>(GetUpper())->CheckViewLayout( 0, 0 ); + getRootFrm()->CheckViewLayout( 0, 0 ); } /************************************************************************* @@ -1066,7 +1075,7 @@ void SwFrm::CheckPageDescs( SwPageFrm *pStart, sal_Bool bNotifyFields ) { ASSERT( pStart, "Keine Startpage." ); - ViewShell *pSh = pStart->GetShell(); + ViewShell *pSh = pStart->getRootFrm()->GetCurrShell(); SwViewImp *pImp = pSh ? pSh->Imp() : 0; if ( pImp && pImp->IsAction() && !pImp->GetLayAction().IsCheckPages() ) @@ -1157,7 +1166,7 @@ void SwFrm::CheckPageDescs( SwPageFrm *pStart, sal_Bool bNotifyFields ) { if ( pPage->GetPrev() ) pDesc = ((SwPageFrm*)pPage->GetPrev())->GetPageDesc(); - SwPageFrm *pTmp = new SwPageFrm( pDoc->GetEmptyPageFmt(),pDesc); + SwPageFrm *pTmp = new SwPageFrm( pDoc->GetEmptyPageFmt(),pRoot,pDesc); pTmp->Paste( pRoot, pPage ); pTmp->PreparePage( sal_False ); pPage = pTmp; @@ -1316,7 +1325,7 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, sal_Bool bFtn ) if( bWishedOdd != bNextOdd ) { pFmt = pDoc->GetEmptyPageFmt(); SwPageDesc *pTmpDesc = pPrevPage->GetPageDesc(); - SwPageFrm *pPage = new SwPageFrm( pFmt, pTmpDesc ); + SwPageFrm *pPage = new SwPageFrm( pFmt, pRoot, pTmpDesc ); pPage->Paste( pRoot, pSibling ); pPage->PreparePage( bFtn ); //Wenn der Sibling keinen Bodytext enthaelt kann ich ihn vernichten @@ -1336,7 +1345,7 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, sal_Bool bFtn ) } pFmt = bWishedOdd ? pDesc->GetRightFmt() : pDesc->GetLeftFmt(); ASSERT( pFmt, "Descriptor without format." ); - SwPageFrm *pPage = new SwPageFrm( pFmt, pDesc ); + SwPageFrm *pPage = new SwPageFrm( pFmt, pRoot, pDesc ); pPage->Paste( pRoot, pSibling ); pPage->PreparePage( bFtn ); //Wenn der Sibling keinen Bodytext enthaelt kann ich ihn vernichten @@ -1358,8 +1367,13 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, sal_Bool bFtn ) { if ( bCheckPages ) { +<<<<<<< local + CheckPageDescs( pSibling, FALSE ); + ViewShell *pSh = getRootFrm()->GetCurrShell(); +======= CheckPageDescs( pSibling, sal_False ); ViewShell *pSh = GetShell(); +>>>>>>> other SwViewImp *pImp = pSh ? pSh->Imp() : 0; if ( pImp && pImp->IsAction() && !pImp->GetLayAction().IsCheckPages() ) { @@ -1376,7 +1390,7 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, sal_Bool bFtn ) //Fuer das Aktualisieren der Seitennummern-Felder gibt nDocPos //die Seitenposition an, _ab_ der invalidiert werden soll. - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( !pSh || !pSh->Imp()->IsUpdateExpFlds() ) { SwDocPosUpdate aMsgHnt( pPrevPage->Frm().Top() ); @@ -1387,17 +1401,15 @@ SwPageFrm *SwFrm::InsertPage( SwPageFrm *pPrevPage, sal_Bool bFtn ) sw::sidebarwindows::SidebarPosition SwPageFrm::SidebarPosition() const { - if ( !GetShell() || - GetShell()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + ViewShell *pSh = getRootFrm()->GetCurrShell(); + if( !pSh || pSh->GetViewOptions()->getBrowseMode() ) { - // --> OD 2010-06-03 #i111964# - provide default sidebar position return sw::sidebarwindows::SIDEBAR_RIGHT; - // <-- } else { - const bool bLTR = GetUpper() ? static_cast<const SwRootFrm*>(GetUpper())->IsLeftToRightViewLayout() : true; - const bool bBookMode = GetShell()->GetViewOptions()->IsViewLayoutBookMode(); + const bool bLTR = getRootFrm()->IsLeftToRightViewLayout(); + const bool bBookMode = pSh->GetViewOptions()->IsViewLayoutBookMode(); const bool bRightSidebar = bLTR ? (!bBookMode || OnRightPage()) : (bBookMode && !OnRightPage()); return bRightSidebar @@ -1538,7 +1550,7 @@ void SwRootFrm::RemoveSuperfluous() } } while ( pPage ); - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( nDocPos != LONG_MAX && (!pSh || !pSh->Imp()->IsUpdateExpFlds()) ) { @@ -1599,7 +1611,7 @@ void SwRootFrm::AssertFlyPages() { //Leerseite einfuegen, die Flys werden aber erst von //der naechsten Seite aufgenommen! - pPage = new SwPageFrm( pDoc->GetEmptyPageFmt(), pDesc ); + pPage = new SwPageFrm( pDoc->GetEmptyPageFmt(), this, pDesc ); pPage->Paste( this, pSibling ); pPage->PreparePage( sal_False ); bOdd = bOdd ? sal_False : sal_True; @@ -1607,7 +1619,7 @@ void SwRootFrm::AssertFlyPages() } pPage = new SwPageFrm( (bOdd ? pDesc->GetRightFmt() : - pDesc->GetLeftFmt()), pDesc ); + pDesc->GetLeftFmt()), this, pDesc ); pPage->Paste( this, pSibling ); pPage->PreparePage( sal_False ); bOdd = bOdd ? sal_False : sal_True; @@ -1672,13 +1684,13 @@ void SwRootFrm::AssertPageFlys( SwPageFrm *pPage ) //Umhaengen kann er sich selbst, indem wir ihm //einfach ein Modify mit seinem AnkerAttr schicken. #ifndef DBG_UTIL - rFmt.SwModify::Modify( 0, (SwFmtAnchor*)&rAnch ); + rFmt.NotifyClients( 0, (SwFmtAnchor*)&rAnch ); #else const sal_uInt32 nCnt = pPage->GetSortedObjs()->Count(); - rFmt.SwModify::Modify( 0, (SwFmtAnchor*)&rAnch ); + rFmt.NotifyClients( 0, (SwFmtAnchor*)&rAnch ); ASSERT( !pPage->GetSortedObjs() || nCnt != pPage->GetSortedObjs()->Count(), - "Kann das Obj nicht umhaengen." ); + "Object couldn't be reattached!" ); #endif --i; } @@ -1758,8 +1770,8 @@ void SwRootFrm::ImplInvalidateBrowseWidth() |*************************************************************************/ void SwRootFrm::ImplCalcBrowseWidth() { - ASSERT( GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE), - "CalcBrowseWidth and not in BrowseView" ); + ASSERT( GetCurrShell() && GetCurrShell()->GetViewOptions()->getBrowseMode(), + "CalcBrowseWidth and not in BrowseView" ) //Die (minimale) Breite wird von Rahmen, Tabellen und Zeichenobjekten //bestimmt. Die Breite wird nicht anhand ihrer aktuellen Groessen bestimmt, @@ -1775,8 +1787,13 @@ void SwRootFrm::ImplCalcBrowseWidth() if ( !pFrm ) return; +<<<<<<< local + bBrowseWidthValid = TRUE; + ViewShell *pSh = getRootFrm()->GetCurrShell(); +======= bBrowseWidthValid = sal_True; ViewShell *pSh = GetShell(); +>>>>>>> other nBrowseWidth = pSh ? MINLAY + 2 * pSh->GetOut()-> PixelToLogic( pSh->GetBrowseBorder() ).Width() @@ -2026,7 +2043,8 @@ void lcl_MoveAllLowerObjs( SwFrm* pFrm, const Point& rOffset ) if ( pFlyFrm->Lower()->IsNoTxtFrm() ) { SwCntntFrm* pCntntFrm = static_cast<SwCntntFrm*>(pFlyFrm->Lower()); - ViewShell *pSh = pFlyFrm->Lower()->GetShell(); + SwRootFrm* pRoot = pFlyFrm->Lower()->getRootFrm(); + ViewShell *pSh = pRoot ? pRoot->GetCurrShell() : 0; if ( pSh ) { SwOLENode* pNode = pCntntFrm->GetNode()->GetOLENode(); @@ -2081,7 +2099,7 @@ void lcl_MoveAllLowers( SwFrm* pFrm, const Point& rOffset ) // Don't forget accessibility: if( pFrm->IsAccessibleFrm() ) { - SwRootFrm *pRootFrm = pFrm->FindRootFrm(); + SwRootFrm *pRootFrm = pFrm->getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() && pRootFrm->GetCurrShell() ) { @@ -2180,7 +2198,7 @@ void SwRootFrm::CheckViewLayout( const SwViewOption* pViewOpt, const SwRect* pVi bool bPageChanged = false; const bool bRTL = !IsLeftToRightViewLayout(); - const SwTwips nSidebarWidth = SwPageFrm::GetSidebarBorderWidth( GetShell() ); + const SwTwips nSidebarWidth = SwPageFrm::GetSidebarBorderWidth( GetCurrShell() ); while ( pPageFrm ) { @@ -2420,7 +2438,7 @@ void SwRootFrm::CheckViewLayout( const SwViewOption* pViewOpt, const SwRect* pVi ::AdjustSizeChgNotify( this ); Calc(); - ViewShell* pSh = GetShell(); + ViewShell* pSh = GetCurrShell(); if ( pSh && pSh->GetDoc()->GetDocShell() ) { diff --git a/sw/source/core/layout/pagedesc.cxx b/sw/source/core/layout/pagedesc.cxx index 71eaebf14893..01b238178cf4 100644 --- a/sw/source/core/layout/pagedesc.cxx +++ b/sw/source/core/layout/pagedesc.cxx @@ -50,6 +50,7 @@ #include <frmtool.hxx> #include <doc.hxx> // fuer GetAttrPool #include <poolfmt.hxx> +#include <switerator.hxx> /************************************************************************* |* @@ -257,20 +258,18 @@ void SwPageDesc::RegisterChange() nRegHeight = 0; { - SwClientIter aIter( GetMaster() ); - for( SwClient* pLast = aIter.First(TYPE(SwFrm)); pLast; - pLast = aIter.Next() ) + SwIterator<SwFrm,SwFmt> aIter( GetMaster() ); + for( SwFrm* pLast = aIter.First(); pLast; pLast = aIter.Next() ) { - if( ((SwFrm*)pLast)->IsPageFrm() ) + if( pLast->IsPageFrm() ) ((SwPageFrm*)pLast)->PrepareRegisterChg(); } } { - SwClientIter aIter( GetLeft() ); - for( SwClient* pLast = aIter.First(TYPE(SwFrm)); pLast; - pLast = aIter.Next() ) + SwIterator<SwFrm,SwFmt> aIter( GetLeft() ); + for( SwFrm* pLast = aIter.First(); pLast; pLast = aIter.Next() ) { - if( ((SwFrm*)pLast)->IsPageFrm() ) + if( pLast->IsPageFrm() ) ((SwPageFrm*)pLast)->PrepareRegisterChg(); } } @@ -288,10 +287,15 @@ void SwPageDesc::RegisterChange() *************************************************************************/ -void SwPageDesc::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwPageDesc::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { +<<<<<<< local + const USHORT nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; + NotifyClients( pOld, pNew ); +======= const sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; SwModify::Modify( pOld, pNew ); +>>>>>>> other if ( (RES_ATTRSET_CHG == nWhich) || (RES_FMT_CHG == nWhich) || isCHRATR(nWhich) || (RES_PARATR_LINESPACING == nWhich) ) @@ -318,7 +322,11 @@ static const SwFrm* lcl_GetFrmOfNode( const SwNode& rNd ) pMod = 0; Point aNullPt; +<<<<<<< local + return pMod ? ::GetFrmOfModify( 0, *pMod, nFrmType, &aNullPt, 0, FALSE ) +======= return pMod ? ::GetFrmOfModify( *pMod, nFrmType, &aNullPt, 0, sal_False ) +>>>>>>> other : 0; } @@ -343,14 +351,12 @@ const SwFrmFmt* SwPageDesc::GetPageFmtOfNode( const SwNode& rNd, const SwPageDesc* pPd = bCheckForThisPgDc ? this : ((SwPageFrm*)pChkFrm)->GetPageDesc(); pRet = &pPd->GetMaster(); - ASSERT( ((SwPageFrm*)pChkFrm)->GetPageDesc() == pPd, - "Falcher Node fuers erkennen des Seitenformats" ); + ASSERT( ((SwPageFrm*)pChkFrm)->GetPageDesc() == pPd, "Wrong node for detection of page format!" ); // an welchem Format haengt diese Seite? - if( pRet != pChkFrm->GetRegisteredIn() ) + if( !pChkFrm->KnowsFormat(*pRet) ) { pRet = &pPd->GetLeft(); - ASSERT( pRet == pChkFrm->GetRegisteredIn(), - "Falcher Node fuers erkennen des Seitenformats" ); + ASSERT( pChkFrm->KnowsFormat(*pRet), "Wrong node for detection of page format!" ); } } else diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index fa767ec36958..35207452f7c5 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -29,7 +29,7 @@ #include "precompiled_sw.hxx" #include <com/sun/star/text/HoriOrientation.hpp> - +#include <hintids.hxx> #include <vcl/sound.hxx> #include <tools/poly.hxx> #define _SVSTDARR_LONGS @@ -41,14 +41,12 @@ #include <editeng/prntitem.hxx> #include <editeng/boxitem.hxx> #include <editeng/shaditem.hxx> -// --> collapsing borders FME 2005-05-27 #i29550# #include <svx/framelink.hxx> -// <-- #include <vcl/graph.hxx> #include <svx/svdpagv.hxx> - #include <hintids.hxx> #include <tgrditem.hxx> +#include <switerator.hxx> #include <fmtsrnd.hxx> #include <fmtclds.hxx> #include <tools/shl.hxx> @@ -83,28 +81,20 @@ #include <lineinfo.hxx> #include <dbg_lay.hxx> #include <accessibilityoptions.hxx> -// OD 20.12.2002 #94627# #include <docsh.hxx> -// OD 28.02.2003 #b4779636#, #107692# #include <swtable.hxx> -// OD 02.07.2003 #108784# #include <svx/svdogrp.hxx> -// OD 2004-05-24 #i28701# #include <sortedobjs.hxx> - -// --> FME 2004-06-08 #i12836# enhanced pdf export #include <EnhancedPDFExportHelper.hxx> -// <-- - #include <ndole.hxx> #include <svtools/chartprettypainter.hxx> - #include <PostItMgr.hxx> #include <tools/color.hxx> +#include <vcl/svapp.hxx> + #define COL_NOTES_SIDEPANE RGB_COLORDATA(230,230,230) #define COL_NOTES_SIDEPANE_BORDER RGB_COLORDATA(200,200,200) #define COL_NOTES_SIDEPANE_SCROLLAREA RGB_COLORDATA(230,230,220) -#include <vcl/svapp.hxx> using namespace ::com::sun::star; @@ -3096,14 +3086,24 @@ void SwRootFrm::HackPrepareLongTblPaint( int nMode ) case HACK_TABLEMODE_INIT : ASSERT( !pLines, "HackPrepare: already prepared" ); pLines = new SwLineRects; ASSERT( !pGlobalShell, "old GlobalShell lost" ); +<<<<<<< local + pGlobalShell = GetCurrShell(); + bTableHack = TRUE; +======= pGlobalShell = GetShell(); bTableHack = sal_True; +>>>>>>> other break; case HACK_TABLEMODE_LOCKLINES : pLines->LockLines( sal_True ); break; case HACK_TABLEMODE_PAINTLINES : pLines->PaintLines( GetShell()->GetOut() ); break; +<<<<<<< local + case HACK_TABLEMODE_UNLOCKLINES: pLines->LockLines( FALSE ); break; + case HACK_TABLEMODE_EXIT : pLines->PaintLines( GetCurrShell()->GetOut() ); +======= case HACK_TABLEMODE_UNLOCKLINES: pLines->LockLines( sal_False ); break; case HACK_TABLEMODE_EXIT : pLines->PaintLines( GetShell()->GetOut() ); +>>>>>>> other DELETEZ( pLines ); pGlobalShell = 0; bTableHack = sal_False; @@ -3175,7 +3175,7 @@ SwShortCut::SwShortCut( const SwFrm& rFrm, const SwRect& rRect ) void SwLayoutFrm::Paint(SwRect const& rRect, SwPrintData const*const) const { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); // --> FME 2004-06-24 #i16816# tagged pdf support Frm_Info aFrmInfo( *this ); @@ -3618,8 +3618,8 @@ void SwFlyFrm::Paint(SwRect const& rRect, SwPrintData const*const) const // for painting the graphic/OLE. Thus, the clip region is // also applied for the PDF export. // if ( !pOut->GetConnectMetaFile() || pOut->GetOutDevType() == OUTDEV_PRINTER ) - ViewShell *pSh = GetShell(); - if ( !pOut->GetConnectMetaFile() || !pSh->GetWin() ) + ViewShell *pSh = getRootFrm()->GetCurrShell(); + if ( !pOut->GetConnectMetaFile() || !pSh || !pSh->GetWin() ) // <-- { pOut->SetClipRegion( aPoly ); @@ -4279,7 +4279,7 @@ void lcl_PaintLeftRightLine( const sal_Bool _bLeft, // OD 29.04.2003 #107169# - paint SwAligned-rectangle { SwRect aPaintRect( aRect ); - ::SwAlignRect( aPaintRect, _rFrm.GetShell() ); + ::SwAlignRect( aPaintRect, _rFrm.getRootFrm()->GetCurrShell() ); // if <SwAlignRect> reveals rectangle with no width, adjust rectangle // to the prior left postion with width of one twip. if ( (aPaintRect.*_rRectFn->fnGetWidth)() == 0 ) @@ -4319,7 +4319,7 @@ void lcl_PaintLeftRightLine( const sal_Bool _bLeft, // OD 29.04.2003 #107169# - paint SwAligned-rectangle { SwRect aPaintRect( aRect ); - ::SwAlignRect( aPaintRect, _rFrm.GetShell() ); + ::SwAlignRect( aPaintRect, _rFrm.getRootFrm()->GetCurrShell() ); // if <SwAlignRect> reveals rectangle with no width, adjust // rectangle to the prior left postion with width of one twip. if ( (aPaintRect.*_rRectFn->fnGetWidth)() == 0 ) @@ -4383,7 +4383,7 @@ void lcl_PaintTopBottomLine( const sal_Bool _bTop, // OD 29.04.2003 #107169# - paint SwAligned-rectangle { SwRect aPaintRect( aRect ); - ::SwAlignRect( aPaintRect, _rFrm.GetShell() ); + ::SwAlignRect( aPaintRect, _rFrm.getRootFrm()->GetCurrShell() ); // if <SwAlignRect> reveals rectangle with no width, adjust rectangle // to the prior top postion with width of one twip. if ( (aPaintRect.*_rRectFn->fnGetHeight)() == 0 ) @@ -4422,7 +4422,7 @@ void lcl_PaintTopBottomLine( const sal_Bool _bTop, // OD 29.04.2003 #107169# - paint SwAligned-rectangle { SwRect aPaintRect( aRect ); - ::SwAlignRect( aPaintRect, _rFrm.GetShell() ); + ::SwAlignRect( aPaintRect, _rFrm.getRootFrm()->GetCurrShell() ); // if <SwAlignRect> reveals rectangle with no width, adjust // rectangle to the prior top postion with width of one twip. if ( (aPaintRect.*_rRectFn->fnGetHeight)() == 0 ) @@ -5240,7 +5240,7 @@ void SwPageFrm::PaintMarginArea( const SwRect& _rOutputRect, ViewShell* _pViewShell ) const { if ( _pViewShell->GetWin() && - !_pViewShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + !_pViewShell->GetViewOptions()->getBrowseMode() ) { SwRect aPgPrtRect( Prt() ); aPgPrtRect.Pos() += Frm().Pos(); @@ -5728,7 +5728,11 @@ void SwFrm::PaintBackground( const SwRect &rRect, const SwPageFrm *pPage, { if ( bBack || bPageFrm || !bLowerMode ) { +<<<<<<< local + const BOOL bBrowse = pSh->GetViewOptions()->getBrowseMode(); +======= const sal_Bool bBrowse = pSh->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other SwRect aRect; if ( (bPageFrm && bBrowse) || @@ -6381,7 +6385,7 @@ void SwFrm::Retouche( const SwPageFrm * pPage, const SwRect &rRect ) const return; ASSERT( GetUpper(), "Retoucheversuch ohne Upper." ); - ASSERT( GetShell() && pGlobalShell->GetWin(), "Retouche auf dem Drucker?" ); + ASSERT( getRootFrm()->GetCurrShell() && pGlobalShell->GetWin(), "Retouche auf dem Drucker?" ); SwRect aRetouche( GetUpper()->PaintArea() ); aRetouche.Top( Frm().Top() + Frm().Height() ); @@ -6393,7 +6397,7 @@ void SwFrm::Retouche( const SwPageFrm * pPage, const SwRect &rRect ) const //zum ausstanzen. SwRegionRects aRegion( aRetouche ); aRegion -= rRect; - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); // --> FME 2004-06-24 #i16816# tagged pdf support SwTaggedPDFHelper aTaggedPDFHelper( 0, 0, 0, *pSh->GetOut() ); @@ -6490,7 +6494,7 @@ sal_Bool SwFrm::GetBackgroundBrush( const SvxBrushItem* & rpBrush, sal_Bool bLowerMode ) const { const SwFrm *pFrm = this; - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); const SwViewOption *pOpt = pSh->GetViewOptions(); rpBrush = 0; rpCol = NULL; @@ -6546,7 +6550,7 @@ sal_Bool SwFrm::GetBackgroundBrush( const SvxBrushItem* & rpBrush, { rpBrush = &rBack; if ( pFrm->IsPageFrm() && - pSh->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + pSh->GetViewOptions()->getBrowseMode() ) rOrigRect = pFrm->Frm(); else { @@ -6608,10 +6612,10 @@ Graphic SwFlyFrmFmt::MakeGraphic( ImageMap* pMap ) { Graphic aRet; //irgendeinen Fly suchen! - SwClientIter aIter( *this ); - SwClient *pFirst = aIter.First( TYPE(SwFrm) ); + SwIterator<SwFrm,SwFmt> aIter( *this ); + SwFrm *pFirst = aIter.First(); ViewShell *pSh; - if ( pFirst && 0 != ( pSh = ((SwFrm*)pFirst)->GetShell()) ) + if ( pFirst && 0 != ( pSh = pFirst->getRootFrm()->GetCurrShell()) ) { ViewShell *pOldGlobal = pGlobalShell; pGlobalShell = pSh; diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx index da6ed20bf45d..c8a19fd5694b 100644 --- a/sw/source/core/layout/sectfrm.cxx +++ b/sw/source/core/layout/sectfrm.cxx @@ -28,7 +28,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - +#include <svl/smplhint.hxx> #include <svl/itemiter.hxx> #include <hints.hxx> #include <txtftn.hxx> @@ -54,6 +54,7 @@ #include "layouter.hxx" // SwLayouter #include "dbg_lay.hxx" #include "viewsh.hxx" +#include "viewopt.hxx" #include "viewimp.hxx" #include <editeng/ulspitem.hxx> #include <editeng/lrspitem.hxx> @@ -74,8 +75,8 @@ SV_IMPL_PTRARR_SORT( SwDestroyList, SwSectionFrmPtr ) |* Letzte Aenderung AMA 26. Nov. 97 |* |*************************************************************************/ -SwSectionFrm::SwSectionFrm( SwSection &rSect ) : - SwLayoutFrm( rSect.GetFmt() ), +SwSectionFrm::SwSectionFrm( SwSection &rSect, SwFrm* pSib ) : + SwLayoutFrm( rSect.GetFmt(), pSib ), SwFlowFrm( (SwFrm&)*this ), pSection( &rSect ) { @@ -85,8 +86,13 @@ SwSectionFrm::SwSectionFrm( SwSection &rSect ) : CalcEndAtEndFlag(); } +<<<<<<< local +SwSectionFrm::SwSectionFrm( SwSectionFrm &rSect, BOOL bMaster ) : + SwLayoutFrm( rSect.GetFmt(), rSect.getRootFrm() ), +======= SwSectionFrm::SwSectionFrm( SwSectionFrm &rSect, sal_Bool bMaster ) : SwLayoutFrm( rSect.GetFmt() ), +>>>>>>> other SwFlowFrm( (SwFrm&)*this ), pSection( rSect.GetSection() ) { @@ -152,9 +158,9 @@ SwSectionFrm::~SwSectionFrm() { if( GetFmt() && !GetFmt()->GetDoc()->IsInDtor() ) { - SwRootFrm *pRootFrm = GetFmt()->GetDoc()->GetRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm ) - pRootFrm->RemoveFromList( this ); + pRootFrm->RemoveFromList( this ); //swmod 071108//swmod 071225 if( IsFollow() ) { SwSectionFrm *pMaster = FindMaster(); @@ -202,7 +208,7 @@ void SwSectionFrm::DelEmpty( sal_Bool bRemove ) // Relation CONTENT_FLOWS_FROM for current next paragraph will change // and relation CONTENT_FLOWS_TO for current previous paragraph will change. { - ViewShell* pViewShell( GetShell() ); + ViewShell* pViewShell( getRootFrm()->GetCurrShell() ); if ( pViewShell && pViewShell->GetLayout() && pViewShell->GetLayout()->IsAnyShellAccessible() ) { @@ -237,11 +243,11 @@ void SwSectionFrm::DelEmpty( sal_Bool bRemove ) { // Wenn wir bereits halbtot waren vor diesem DelEmpty, so // stehen wir vermutlich auch in der Liste und muessen uns // dort austragen - if( !pSection ) - GetFmt()->GetDoc()->GetRootFrm()->RemoveFromList( this ); + if( !pSection && getRootFrm() ) + getRootFrm()->RemoveFromList( this ); } - else - GetFmt()->GetDoc()->GetRootFrm()->InsertEmptySct( this ); + else if( getRootFrm() ) + getRootFrm()->InsertEmptySct( this ); //swmod 071108//swmod 071225 pSection = NULL; // damit ist allerdings eine Reanimierung quasi ausgeschlossen } } @@ -398,7 +404,7 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling ) } } pParent = pSect; - pSect = new SwSectionFrm( *((SwSectionFrm*)pParent)->GetSection() ); + pSect = new SwSectionFrm( *((SwSectionFrm*)pParent)->GetSection(), pParent ); // Wenn pParent in zwei Teile zerlegt wird, so muss sein Follow am // neuen, zweiten Teil angebracht werden. pSect->SetFollow( ((SwSectionFrm*)pParent)->GetFollow() ); @@ -558,7 +564,7 @@ sal_Bool SwSectionFrm::SplitSect( SwFrm* pFrm, sal_Bool bApres ) ASSERT( pSav, "SplitSect: What's on?" ); if( pSav ) // Robust { // Einen neuen SctFrm anlegen, nicht als Follow/Master - SwSectionFrm* pNew = new SwSectionFrm( *pSect->GetSection() ); + SwSectionFrm* pNew = new SwSectionFrm( *pSect->GetSection(), pSect ); pNew->InsertBehind( pSect->GetUpper(), pSect ); pNew->Init(); SWRECTFN( this ) @@ -752,7 +758,7 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave ) // vom gleichen Parent abgeleitet ist. // Dann gibt es (noch) keinen Teil unseres Parents, der den Inhalt // aufnehmen kann,also bauen wir ihn uns. - pPrvSct = new SwSectionFrm( *pParent->GetSection() ); + pPrvSct = new SwSectionFrm( *pParent->GetSection(), pUp ); pPrvSct->InsertBehind( pUp, pPrv ); pPrvSct->Init(); SWRECTFN( pUp ) @@ -786,7 +792,7 @@ void SwSectionFrm::MakeAll() return; if( !pSection ) // Durch DelEmpty { - ASSERT( GetFmt()->GetDoc()->GetRootFrm()->IsInDelList( this ), "SectionFrm without Section" ); + ASSERT( getRootFrm()->IsInDelList( this ), "SectionFrm without Section" ); if( !bValidPos ) { if( GetUpper() ) @@ -810,7 +816,8 @@ void SwSectionFrm::MakeAll() // OD 2004-03-15 #116561# - In online layout join the follows, if section // can grow. - if ( GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() && ( Grow( LONG_MAX, true ) > 0 ) ) { while( GetFollow() ) @@ -1332,9 +1339,14 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr ) { if( !pSection ) // Durch DelEmpty { +<<<<<<< local + ASSERT( getRootFrm()->IsInDelList( this ), "SectionFrm without Section" ); + bValidSize = bValidPos = bValidPrtArea = TRUE; +======= ASSERT( GetFmt()->GetDoc()->GetRootFrm()->IsInDelList( this ), "SectionFrm without Section" ); bValidSize = bValidPos = bValidPrtArea = sal_True; +>>>>>>> other return; } SWRECTFN( this ) @@ -1409,9 +1421,16 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr ) // OD 15.10.2002 #103517# - allow grow in online layout // Thus, set <..IsBrowseMode()> as parameter <bGrow> on calling // method <_CheckClipping(..)>. +<<<<<<< local + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + _CheckClipping( pSh && pSh->GetViewOptions()->getBrowseMode(), bMaximize ); + bMaximize = ToMaximize( FALSE ); + bValidSize = TRUE; +======= _CheckClipping( GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE), bMaximize ); bMaximize = ToMaximize( sal_False ); bValidSize = sal_True; +>>>>>>> other } //Breite der Spalten pruefen und ggf. einstellen. @@ -2041,9 +2060,14 @@ SwTwips SwSectionFrm::_Grow( SwTwips nDist, sal_Bool bTst ) sal_Bool bInCalcCntnt = GetUpper() && IsInFly() && FindFlyFrm()->IsLocked(); // OD 2004-03-15 #116561# - allow grow in online layout - if ( !Lower() || !Lower()->IsColumnFrm() || !Lower()->GetNext() || - GetSection()->GetFmt()->GetBalancedColumns().GetValue() || - GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + BOOL bGrow = !Lower() || !Lower()->IsColumnFrm() || !Lower()->GetNext() || + GetSection()->GetFmt()->GetBalancedColumns().GetValue(); + if( !bGrow ) + { + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + bGrow = pSh && pSh->GetViewOptions()->getBrowseMode(); + } + if( bGrow ) { SwTwips nGrow; if( IsInFtn() ) @@ -2435,7 +2459,7 @@ void SwSectionFrm::CalcEndAtEndFlag() |* |*************************************************************************/ -void SwSectionFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) +void SwSectionFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew ) { sal_uInt8 nInvFlags = 0; @@ -2470,8 +2494,22 @@ void SwSectionFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) } } +<<<<<<< local +void SwSectionFrm::SwClientNotify( const SwModify& rMod, const SfxHint& rHint ) +{ + const SfxSimpleHint* pSimpleHint = dynamic_cast<const SfxSimpleHint*>(&rHint); + if ( pSimpleHint && pSimpleHint->GetId() == SFX_HINT_DYING && &rMod == GetRegisteredIn() ) + { + SwSectionFrm::MoveCntntAndDelete( this, TRUE ); + } +} + +void SwSectionFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem *pNew, + BYTE &rInvFlags, +======= void SwSectionFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, sal_uInt8 &rInvFlags, +>>>>>>> other SwAttrSetChg *pOldSet, SwAttrSetChg *pNewSet ) { sal_Bool bClear = sal_True; @@ -2561,7 +2599,7 @@ void SwSectionFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, case RES_PROTECT: { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if( pSh && pSh->GetLayout()->IsAnyShellAccessible() ) pSh->Imp()->InvalidateAccessibleEditableState( sal_True, this ); } @@ -2755,7 +2793,7 @@ void SwRootFrm::_DeleteEmptySct() if( pUp && !pUp->Lower() ) { if( pUp->IsPageBodyFrm() ) - pUp->FindRootFrm()->SetSuperfluous(); + pUp->getRootFrm()->SetSuperfluous(); else if( pUp->IsFtnFrm() && !pUp->IsColLocked() && pUp->GetUpper() ) { diff --git a/sw/source/core/layout/softpagebreak.cxx b/sw/source/core/layout/softpagebreak.cxx index 898581d3d870..5289fb860b56 100644 --- a/sw/source/core/layout/softpagebreak.cxx +++ b/sw/source/core/layout/softpagebreak.cxx @@ -35,12 +35,12 @@ #include "frmfmt.hxx" #include "rowfrm.hxx" #include "tabfrm.hxx" +#include "switerator.hxx" void SwTxtNode::fillSoftPageBreakList( SwSoftPageBreakList& rBreak ) const { - SwClientIter aIter( const_cast<SwTxtNode&>(*this) ); - for( const SwTxtFrm *pFrm = (const SwTxtFrm*)aIter.First( TYPE(SwTxtFrm) ); - pFrm; pFrm = (const SwTxtFrm*)aIter.Next() ) + SwIterator<SwTxtFrm,SwTxtNode> aIter( *this ); + for( const SwTxtFrm *pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { // No soft page break in header or footer if( pFrm->FindFooterOrHeader() || pFrm->IsInFly() ) @@ -110,13 +110,12 @@ bool SwTableLine::hasSoftPageBreak() const // No soft page break for sub tables if( GetUpper() || !GetFrmFmt() ) return false; - SwClientIter aIter( *GetFrmFmt() ); - for( SwClient* pLast = aIter.First( TYPE( SwFrm ) ); pLast; - pLast = aIter.Next() ) + SwIterator<SwRowFrm,SwFmt> aIter( *GetFrmFmt() ); + for( SwRowFrm* pLast = aIter.First(); pLast; pLast = aIter.Next() ) { - if( ((SwRowFrm*)pLast)->GetTabLine() == this ) + if( pLast->GetTabLine() == this ) { - const SwTabFrm* pTab = static_cast<SwRowFrm*>(pLast)->FindTabFrm(); + const SwTabFrm* pTab = pLast->FindTabFrm(); // No soft page break for // tables with prevs, i.e. if the frame is not the first in its layout frame // tables in footer or header diff --git a/sw/source/core/layout/ssfrm.cxx b/sw/source/core/layout/ssfrm.cxx index fd0a0ce1f838..f015e84fbdc5 100644 --- a/sw/source/core/layout/ssfrm.cxx +++ b/sw/source/core/layout/ssfrm.cxx @@ -28,7 +28,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - +#include <ftnfrm.hxx> #include <pagefrm.hxx> #include <rootfrm.hxx> #include <cntfrm.hxx> @@ -53,10 +53,9 @@ #include <fmtclds.hxx> #include <viewsh.hxx> #include <viewimp.hxx> - -// OD 2004-05-24 #i28701# #include <sortedobjs.hxx> #include <hints.hxx> +#include <switerator.hxx> // No inline cause we need the function pointers long SwFrm::GetTopMargin() const @@ -216,7 +215,7 @@ void SwFrm::SetRightLeftMargins( long nRight, long nLeft) const sal_uInt16 nMinVertCellHeight = 1135; -/*-----------------11.9.2001 11:11------------------ +/*----------------------------------- * SwFrm::CheckDirChange(..) * checks the layout direction and * invalidates the lower frames rekursivly, if necessary. @@ -315,7 +314,7 @@ void SwFrm::CheckDirChange() } } -/*-----------------13.9.2002 11:11------------------ +/*----------------------------------- * SwFrm::GetFrmAnchorPos(..) * returns the position for anchors based on frame direction * --------------------------------------------------*/ @@ -360,19 +359,15 @@ Point SwFrm::GetFrmAnchorPos( sal_Bool bIgnoreFlysAnchoredAtThisFrame ) const |* |* SwFrm::~SwFrm() |* -|* Ersterstellung MA 02. Mar. 94 -|* Letzte Aenderung MA 25. Jun. 95 -|* |*************************************************************************/ - SwFrm::~SwFrm() { // accessible objects for fly and cell frames have been already disposed // by the destructors of the derived classes. if( IsAccessibleFrm() && !(IsFlyFrm() || IsCellFrm()) && GetDep() ) { - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() ) { ViewShell *pVSh = pRootFrm->GetCurrShell(); @@ -430,8 +425,6 @@ SwFrmFmt * SwLayoutFrm::GetFmt() /************************************************************************* |* |* SwLayoutFrm::SetFrmFmt() -|* Ersterstellung MA 22. Apr. 93 -|* Letzte Aenderung MA 02. Nov. 94 |* |*************************************************************************/ @@ -443,15 +436,15 @@ void SwLayoutFrm::SetFrmFmt( SwFrmFmt *pNew ) SwFmtChg aOldFmt( GetFmt() ); pNew->Add( this ); SwFmtChg aNewFmt( pNew ); - Modify( &aOldFmt, &aNewFmt ); + ModifyNotification( &aOldFmt, &aNewFmt ); } } /************************************************************************* |* SwCntntFrm::SwCntntFrm() |*************************************************************************/ -SwCntntFrm::SwCntntFrm( SwCntntNode * const pCntnt ) : - SwFrm( pCntnt ), +SwCntntFrm::SwCntntFrm( SwCntntNode * const pCntnt, SwFrm* pSib ) : + SwFrm( pCntnt, pSib ), SwFlowFrm( (SwFrm&)*this ) { } @@ -462,11 +455,11 @@ SwCntntFrm::SwCntntFrm( SwCntntNode * const pCntnt ) : SwCntntFrm::~SwCntntFrm() { SwCntntNode* pCNd; - if( 0 != ( pCNd = PTR_CAST( SwCntntNode, pRegisteredIn )) && + if( 0 != ( pCNd = PTR_CAST( SwCntntNode, GetRegisteredIn() )) && !pCNd->GetDoc()->IsInDtor() ) { //Bei der Root abmelden wenn ich dort noch im Turbo stehe. - SwRootFrm *pRoot = FindRootFrm(); + SwRootFrm *pRoot = getRootFrm(); if( pRoot && pRoot->GetTurbo() == this ) { pRoot->DisallowTurbo(); @@ -492,20 +485,77 @@ SwCntntFrm::~SwCntntFrm() pTxtFtn = rFtnIdxs[ nPos ]; if( pTxtFtn->GetTxtNode().GetIndex() > nIndex ) break; - pTxtFtn->DelFrms(); + pTxtFtn->DelFrms( this ); ++nPos; } } } } +void SwCntntFrm::RegisterToNode( SwCntntNode& rNode ) +{ + rNode.Add( this ); +} + +void SwCntntFrm::DelFrms( const SwCntntNode& rNode ) +{ + SwIterator<SwCntntFrm,SwCntntNode> aIter( rNode ); + for( SwCntntFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) + { + // --> OD 2005-12-01 #i27138# + // notify accessibility paragraphs objects about changed + // CONTENT_FLOWS_FROM/_TO relation. + // Relation CONTENT_FLOWS_FROM for current next paragraph will change + // and relation CONTENT_FLOWS_TO for current previous paragraph will change. + if ( pFrm->IsTxtFrm() ) + { + ViewShell* pViewShell( pFrm->getRootFrm()->GetCurrShell() ); + if ( pViewShell && pViewShell->GetLayout() && + pViewShell->GetLayout()->IsAnyShellAccessible() ) + { + pViewShell->InvalidateAccessibleParaFlowRelation( + dynamic_cast<SwTxtFrm*>(pFrm->FindNextCnt( true )), + dynamic_cast<SwTxtFrm*>(pFrm->FindPrevCnt( true )) ); + } + } + // <-- + if( pFrm->HasFollow() ) + pFrm->GetFollow()->_SetIsFollow( pFrm->IsFollow() ); + if( pFrm->IsFollow() ) + { + SwCntntFrm* pMaster = (SwTxtFrm*)pFrm->FindMaster(); + pMaster->SetFollow( pFrm->GetFollow() ); + pFrm->_SetIsFollow( FALSE ); + } + pFrm->SetFollow( 0 );//Damit er nicht auf dumme Gedanken kommt. + //Andernfalls kann es sein, dass ein Follow + //vor seinem Master zerstoert wird, der Master + //greift dann ueber den ungueltigen + //Follow-Pointer auf fremdes Memory zu. + //Die Kette darf hier zerknauscht werden, weil + //sowieso alle zerstoert werden. + if( pFrm->GetUpper() && pFrm->IsInFtn() && !pFrm->GetIndNext() && + !pFrm->GetIndPrev() ) + { + SwFtnFrm *pFtn = pFrm->FindFtnFrm(); + ASSERT( pFtn, "You promised a FtnFrm?" ); + SwCntntFrm* pCFrm; + if( !pFtn->GetFollow() && !pFtn->GetMaster() && + 0 != ( pCFrm = pFtn->GetRefFromAttr()) && pCFrm->IsFollow() ) + { + ASSERT( pCFrm->IsTxtFrm(), "NoTxtFrm has Footnote?" ); + ((SwTxtFrm*)pCFrm->FindMaster())->Prepare( PREP_FTN_GONE ); + } + } + pFrm->Cut(); + delete pFrm; + } +} + /************************************************************************* |* |* SwLayoutFrm::~SwLayoutFrm |* -|* Ersterstellung AK 28-Feb-1991 -|* Letzte Aenderung MA 11. Jan. 95 -|* |*************************************************************************/ @@ -597,9 +647,6 @@ SwLayoutFrm::~SwLayoutFrm() |* |* SwFrm::PaintArea() |* -|* Created AMA 08/22/2000 -|* Last change AMA 08/23/2000 -|* |* The paintarea is the area, in which the content of a frame is allowed |* to be displayed. This region could be larger than the printarea (Prt()) |* of the upper, it includes e.g. often the margin of the page. @@ -700,9 +747,6 @@ const SwRect SwFrm::PaintArea() const |* |* SwFrm::UnionFrm() |* -|* Created AMA 08/22/2000 -|* Last change AMA 08/23/2000 -|* |* The unionframe is the framearea (Frm()) of a frame expanded by the |* printarea, if there's a negative margin at the left or right side. |* diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index f0d67a191ded..7ce2a0330308 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -40,10 +40,11 @@ #include "frmtool.hxx" #include "frmfmt.hxx" #include "dcontact.hxx" +#include <anchoreddrawobject.hxx> +#include <fmtanchr.hxx> #include "viewopt.hxx" #include "hints.hxx" #include "dbg_lay.hxx" - #include <ftnidx.hxx> #include <svl/itemiter.hxx> #include <docary.hxx> @@ -51,9 +52,7 @@ #include <editeng/ulspitem.hxx> #include <editeng/lrspitem.hxx> #include <editeng/brshitem.hxx> -// --> collapsing borders FME 2005-05-27 #i29550# #include <editeng/boxitem.hxx> -// <-- #include <vcl/outdev.hxx> #include <fmtlsplt.hxx> #include <fmtrowsplt.hxx> @@ -63,7 +62,6 @@ #include <fmtfsize.hxx> #include <swtblfmt.hxx> #include <ndtxt.hxx> - #include "tabfrm.hxx" #include "rowfrm.hxx" #include "cellfrm.hxx" @@ -71,15 +69,11 @@ #include "txtfrm.hxx" //HasFtn() #include "htmltbl.hxx" #include "sectfrm.hxx" //SwSectionFrm -// OD 30.09.2003 #i18732# #include <fmtfollowtextflow.hxx> -// --> OD 2004-06-28 #i28701# #include <sortedobjs.hxx> #include <objectformatter.hxx> -// <-- -// --> OD 2004-10-05 #i26945# #include <layouter.hxx> -// <-- +#include <switerator.hxx> extern void AppendObjs( const SwSpzFrmFmts *pTbl, sal_uLong nIndex, SwFrm *pFrm, SwPageFrm *pPage ); @@ -95,8 +89,8 @@ using namespace ::com::sun::star; |* Letzte Aenderung MA 30. May. 96 |* |*************************************************************************/ -SwTabFrm::SwTabFrm( SwTable &rTab ): - SwLayoutFrm( rTab.GetFrmFmt() ), +SwTabFrm::SwTabFrm( SwTable &rTab, SwFrm* pSib ): + SwLayoutFrm( rTab.GetFrmFmt(), pSib ), SwFlowFrm( (SwFrm&)*this ), pTable( &rTab ) { @@ -115,7 +109,7 @@ SwTabFrm::SwTabFrm( SwTable &rTab ): SwFrm *pTmpPrev = 0; for ( sal_uInt16 i = 0; i < rLines.Count(); ++i ) { - SwRowFrm *pNew = new SwRowFrm( *rLines[i] ); + SwRowFrm *pNew = new SwRowFrm( *rLines[i], this ); if( pNew->Lower() ) { pNew->InsertBehind( this, pTmpPrev ); @@ -128,7 +122,7 @@ SwTabFrm::SwTabFrm( SwTable &rTab ): } SwTabFrm::SwTabFrm( SwTabFrm &rTab ) : - SwLayoutFrm( rTab.GetFmt() ), + SwLayoutFrm( rTab.GetFmt(), &rTab ), SwFlowFrm( (SwFrm&)*this ), pTable( rTab.GetTable() ) { @@ -217,8 +211,6 @@ void SwTabFrm::RegistFlys() |* Some prototypes |*************************************************************************/ void MA_FASTCALL SwInvalidateAll( SwFrm *pFrm, long nBottom ); -bool MA_FASTCALL lcl_CalcLowers( SwLayoutFrm *pLay, const SwLayoutFrm* pDontLeave, - long nBottom, bool bSkipRowSpanCells ); void MA_FASTCALL lcl_RecalcRow( SwRowFrm& rRow, long nBottom ); sal_Bool lcl_ArrangeLowers( SwLayoutFrm *pLay, long lYStart, sal_Bool bInva ); // --> OD 2004-10-15 #i26945# - add parameter <_bOnlyRowsAndCells> to control @@ -273,8 +265,13 @@ SwRowFrm* lcl_InsertNewFollowFlowLine( SwTabFrm& rTab, const SwFrm& rTmpRow, boo ASSERT( rTmpRow.IsRowFrm(), "No row frame to copy for FollowFlowLine" ) const SwRowFrm& rRow = (SwRowFrm&)rTmpRow; +<<<<<<< local + rTab.SetFollowFlowLine( TRUE ); + SwRowFrm *pFollowFlowLine = new SwRowFrm(*rRow.GetTabLine(), &rTab, false ); +======= rTab.SetFollowFlowLine( sal_True ); SwRowFrm *pFollowFlowLine = new SwRowFrm(*rRow.GetTabLine(), false ); +>>>>>>> other pFollowFlowLine->SetRowSpanLine( bRowSpanLine ); SwFrm* pFirstRow = rTab.GetFollow()->GetFirstNonHeadlineRow(); pFollowFlowLine->InsertBefore( rTab.GetFollow(), pFirstRow ); @@ -605,7 +602,7 @@ void lcl_PreprocessRowsInCells( SwTabFrm& rTab, SwRowFrm& rLastLine, !bTableLayoutToComplex && nMinHeight < nTmpCut ) ) { // The line has to be split: - SwRowFrm* pNewRow = new SwRowFrm( *pTmpLastLineRow->GetTabLine(), false ); + SwRowFrm* pNewRow = new SwRowFrm( *pTmpLastLineRow->GetTabLine(), &rTab, false ); pNewRow->SetFollowFlowRow( true ); pNewRow->SetFollowRow( pTmpLastLineRow->GetFollowRow() ); pTmpLastLineRow->SetFollowRow( pNewRow ); @@ -1277,7 +1274,7 @@ bool SwTabFrm::Split( const SwTwips nCutPos, bool bTryToSplit, bool bTableRowKee // Insert new headlines: bDontCreateObjects = sal_True; //frmtool SwRowFrm* pHeadline = new SwRowFrm( - *GetTable()->GetTabLines()[ nRowCount ] ); + *GetTable()->GetTabLines()[ nRowCount ], this ); pHeadline->SetRepeatedHeadline( true ); bDontCreateObjects = sal_False; pHeadline->InsertBefore( pFoll, 0 ); @@ -1541,7 +1538,7 @@ void lcl_InvalidateAllLowersPrt( SwLayoutFrm* pLayFrm ) } // <-- collapsing -bool MA_FASTCALL lcl_CalcLowers( SwLayoutFrm* pLay, const SwLayoutFrm* pDontLeave, +bool SwCntntFrm::CalcLowers( SwLayoutFrm* pLay, const SwLayoutFrm* pDontLeave, long nBottom, bool bSkipRowSpanCells ) { if ( !pLay ) @@ -1594,7 +1591,7 @@ bool MA_FASTCALL lcl_CalcLowers( SwLayoutFrm* pLay, const SwLayoutFrm* pDontLeav ASSERT( !pCnt->IsTxtFrm() || pCnt->IsValid() || static_cast<SwTxtFrm*>(pCnt)->IsJoinLocked(), - "<lcl_CalcLowers(..)> - text frame invalid and not locked." ); + "<SwCntntFrm::CalcLowers(..)> - text frame invalid and not locked." ); if ( pCnt->IsTxtFrm() && pCnt->IsValid() ) { // --> OD 2004-11-02 #i23129#, #i36347# - pass correct page frame to @@ -1619,7 +1616,7 @@ bool MA_FASTCALL lcl_CalcLowers( SwLayoutFrm* pLay, const SwLayoutFrm* pDontLeav } #if OSL_DEBUG_LEVEL > 1 - ASSERT( false, "LoopControl in lcl_CalcLowers" ) + ASSERT( false, "LoopControl in SwCntntFrm::CalcLowers" ) #endif } } @@ -1726,7 +1723,7 @@ void MA_FASTCALL lcl_RecalcRow( SwRowFrm& rRow, long nBottom ) { // --> OD 2004-11-23 #115759# - force another format of the // lowers, if at least one of it was invalid. - bCheck = lcl_CalcLowers( &rRow, rRow.GetUpper(), nBottom, true ); + bCheck = SwCntntFrm::CalcLowers( &rRow, rRow.GetUpper(), nBottom, true ); // <-- // NEW TABLES @@ -1746,7 +1743,7 @@ void MA_FASTCALL lcl_RecalcRow( SwRowFrm& rRow, long nBottom ) SwCellFrm& rToRecalc = 0 == i ? const_cast<SwCellFrm&>(pCellFrm->FindStartEndOfRowSpanCell( true, true )) : *pCellFrm; - bCheck |= lcl_CalcLowers( &rToRecalc, &rToRecalc, nBottom, false ); + bCheck |= SwCntntFrm::CalcLowers( &rToRecalc, &rToRecalc, nBottom, false ); } pCellFrm = static_cast<SwCellFrm*>(pCellFrm->GetNext()); @@ -2211,7 +2208,8 @@ void SwTabFrm::MakeAll() /// OD 23.10.2002 #103517# - In online layout try to grow upper of table /// frame, if table frame doesn't fit in its upper. - const bool bBrowseMode = GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const bool bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); if ( nDistanceToUpperPrtBottom < 0 && bBrowseMode ) { if ( GetUpper()->Grow( -nDistanceToUpperPrtBottom ) ) @@ -3132,11 +3130,11 @@ void SwTabFrm::Format( const SwBorderAttrs *pAttrs ) else (this->*fnRect->fnSetXMargins)( nLeftSpacing, nRightSpacing ); - ViewShell *pSh; + ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( bCheckBrowseWidth && - GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + pSh && pSh->GetViewOptions()->getBrowseMode() && GetUpper()->IsPageBodyFrm() && // nur PageBodyFrms, nicht etwa ColBodyFrms - 0 != (pSh = GetShell()) && pSh->VisArea().Width() ) + pSh->VisArea().Width() ) { //Nicht ueber die Kante des sichbaren Bereiches hinausragen. //Die Seite kann breiter sein, weil es Objekte mit "ueberbreite" @@ -3221,7 +3219,7 @@ SwTwips SwTabFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) { (Frm().*fnRect->fnAddBottom)( nDist ); - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() && pRootFrm->GetCurrShell() ) { @@ -3268,7 +3266,7 @@ SwTwips SwTabFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) |* Letzte Aenderung MA 06. Dec. 96 |* |*************************************************************************/ -void SwTabFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) +void SwTabFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew ) { sal_uInt8 nInvFlags = 0; sal_Bool bAttrSetChg = pNew && RES_ATTRSET_CHG == pNew->Which(); @@ -3333,8 +3331,13 @@ void SwTabFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) } } +<<<<<<< local +void SwTabFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem *pNew, + BYTE &rInvFlags, +======= void SwTabFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, sal_uInt8 &rInvFlags, +>>>>>>> other SwAttrSetChg *pOldSet, SwAttrSetChg *pNewSet ) { sal_Bool bClear = sal_True; @@ -3356,8 +3359,13 @@ void SwTabFrm::_UpdateAttr( SfxPoolItem *pOld, SfxPoolItem *pNew, const sal_uInt16 nNewRepeat = GetTable()->GetRowsToRepeat(); for ( sal_uInt16 nIdx = 0; nIdx < nNewRepeat; ++nIdx ) { +<<<<<<< local + bDontCreateObjects = TRUE; //frmtool + SwRowFrm* pHeadline = new SwRowFrm( *GetTable()->GetTabLines()[ nIdx ], this ); +======= bDontCreateObjects = sal_True; //frmtool SwRowFrm* pHeadline = new SwRowFrm( *GetTable()->GetTabLines()[ nIdx ] ); +>>>>>>> other pHeadline->SetRepeatedHeadline( true ); bDontCreateObjects = sal_False; pHeadline->Paste( this, pLowerRow ); @@ -3629,8 +3637,14 @@ sal_Bool SwTabFrm::ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool, sal_Bool &r nSpace = nTmpSpace; // <-- +<<<<<<< local + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + if( pSh && pSh->GetViewOptions()->getBrowseMode() ) + nSpace += pNewUpper->Grow( LONG_MAX, TRUE ); +======= if ( GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) nSpace += pNewUpper->Grow( LONG_MAX, sal_True ); +>>>>>>> other } } else if( !bLockBackMove ) @@ -3857,8 +3871,8 @@ void SwTabFrm::Prepare( const PrepareHint eHint, const void *, sal_Bool ) |* Letzte Aenderung MA 30. May. 96 |* |*************************************************************************/ -SwRowFrm::SwRowFrm( const SwTableLine &rLine, bool bInsertContent ): - SwLayoutFrm( rLine.GetFrmFmt() ), +SwRowFrm::SwRowFrm( const SwTableLine &rLine, SwFrm* pSib, bool bInsertContent ): + SwLayoutFrm( rLine.GetFrmFmt(), pSib ), pTabLine( &rLine ), pFollowRow( 0 ), // --> collapsing borders FME 2005-05-27 #i29550# @@ -3879,7 +3893,7 @@ SwRowFrm::SwRowFrm( const SwTableLine &rLine, bool bInsertContent ): SwFrm *pTmpPrev = 0; for ( sal_uInt16 i = 0; i < rBoxes.Count(); ++i ) { - SwCellFrm *pNew = new SwCellFrm( *rBoxes[i], bInsertContent ); + SwCellFrm *pNew = new SwCellFrm( *rBoxes[i], this, bInsertContent ); pNew->InsertBehind( this, pTmpPrev ); pTmpPrev = pNew; } @@ -3917,7 +3931,7 @@ void SwRowFrm::RegistFlys( SwPageFrm *pPage ) |* Letzte Aenderung MA 12. Nov. 97 |* |*************************************************************************/ -void SwRowFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) +void SwRowFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew ) { sal_Bool bAttrSetChg = pNew && RES_ATTRSET_CHG == pNew->Which(); const SfxPoolItem *pItem = 0; @@ -4397,13 +4411,9 @@ void SwRowFrm::Format( const SwBorderAttrs *pAttrs ) // If we found a 'previous' row, we look for the appropriate row frame: if ( pPrevTabLine ) { - SwClientIter aIter( *pPrevTabLine->GetFrmFmt() ); - SwClient* pLast; - for ( pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) + SwIterator<SwRowFrm,SwFmt> aIter( *pPrevTabLine->GetFrmFmt() ); + for ( SwRowFrm* pRow = aIter.First(); pRow; pRow = aIter.Next() ) { - ASSERT( ((SwFrm*)pLast)->IsRowFrm(), - "Non-row frame registered in table line" ) - SwRowFrm* pRow = (SwRowFrm*)pLast; // --> OD 2004-11-23 #115759# - do *not* take repeated // headlines, because during split of table it can be // invalid and thus can't provide correct border values. @@ -4515,7 +4525,7 @@ void SwRowFrm::AdjustCells( const SwTwips nHeight, const sal_Bool bHeight ) SwFrm *pFrm = Lower(); if ( bHeight ) { - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); SWRECTFN( this ) SwRect aOldFrm; @@ -4625,7 +4635,7 @@ void SwRowFrm::Cut() // --> OD 2010-02-17 #i103961# // notification for accessibility { - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() ) { ViewShell* pVSh = pRootFrm->GetCurrShell(); @@ -4875,8 +4885,8 @@ bool SwRowFrm::ShouldRowKeepWithNext() const |* Letzte Aenderung MA 30. May. 96 |* |*************************************************************************/ -SwCellFrm::SwCellFrm( const SwTableBox &rBox, bool bInsertContent ) : - SwLayoutFrm( rBox.GetFrmFmt() ), +SwCellFrm::SwCellFrm( const SwTableBox &rBox, SwFrm* pSib, bool bInsertContent ) : + SwLayoutFrm( rBox.GetFrmFmt(), pSib ), pTabBox( &rBox ) { nType = FRMC_CELL; @@ -4898,7 +4908,7 @@ SwCellFrm::SwCellFrm( const SwTableBox &rBox, bool bInsertContent ) : SwFrm *pTmpPrev = 0; for ( sal_uInt16 i = 0; i < rLines.Count(); ++i ) { - SwRowFrm *pNew = new SwRowFrm( *rLines[i], bInsertContent ); + SwRowFrm *pNew = new SwRowFrm( *rLines[i], this, bInsertContent ); pNew->InsertBehind( this, pTmpPrev ); pTmpPrev = pNew; } @@ -4912,7 +4922,7 @@ SwCellFrm::~SwCellFrm() { // At this stage the lower frames aren't destroyed already, // therfor we have to do a recursive dispose. - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() && pRootFrm->GetCurrShell() ) { @@ -5437,7 +5447,7 @@ void SwCellFrm::Format( const SwBorderAttrs *pAttrs ) |* |*************************************************************************/ -void SwCellFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) +void SwCellFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew ) { sal_Bool bAttrSetChg = pNew && RES_ATTRSET_CHG == pNew->Which(); const SfxPoolItem *pItem = 0; @@ -5469,7 +5479,7 @@ void SwCellFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) SFX_ITEM_SET == ((SwAttrSetChg*)pNew)->GetChgSet()->GetItemState( RES_PROTECT, sal_False ) ) || RES_PROTECT == pNew->Which() ) { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if( pSh && pSh->GetLayout()->IsAnyShellAccessible() ) pSh->Imp()->InvalidateAccessibleEditableState( sal_True, this ); } @@ -5529,7 +5539,7 @@ void SwCellFrm::Cut() { // notification for accessibility { - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() ) { ViewShell* pVSh = pRootFrm->GetCurrShell(); diff --git a/sw/source/core/layout/trvlfrm.cxx b/sw/source/core/layout/trvlfrm.cxx index c295e6d4542c..9a2b8acc4d96 100644 --- a/sw/source/core/layout/trvlfrm.cxx +++ b/sw/source/core/layout/trvlfrm.cxx @@ -892,8 +892,13 @@ sal_Bool SwCntntFrm::UnitDown( SwPaM* pPam, const SwTwips, sal_Bool bInReadOnly sal_uInt16 SwRootFrm::GetCurrPage( const SwPaM *pActualCrsr ) const { ASSERT( pActualCrsr, "Welche Seite soll's denn sein?" ); +<<<<<<< local + const SwFrm *pActFrm = GetFmt()->GetDoc()->GetNodes()[pActualCrsr->GetPoint()->nNode]-> + GetCntntNode()->getLayoutFrm( this, 0, +======= SwFrm const*const pActFrm = pActualCrsr->GetPoint()->nNode.GetNode(). GetCntntNode()->GetFrm( 0, +>>>>>>> other pActualCrsr->GetPoint(), sal_False ); return pActFrm->FindPageFrm()->GetPhyPageNum(); @@ -1878,8 +1883,13 @@ bool SwRootFrm::MakeTblCrsrs( SwTableCursor& rTblCrsr ) const SwCntntNode* pTmpStartNode = rTblCrsr.GetCntntNode(); const SwCntntNode* pTmpEndNode = rTblCrsr.GetCntntNode(sal_False); +<<<<<<< local + const SwFrm* pTmpStartFrm = pTmpStartNode ? pTmpStartNode->getLayoutFrm( this, &aPtPt, 0, FALSE ) : 0; + const SwFrm* pTmpEndFrm = pTmpEndNode ? pTmpEndNode->getLayoutFrm( this, &aMkPt, 0, FALSE ) : 0; +======= const SwFrm* pTmpStartFrm = pTmpStartNode ? pTmpStartNode->GetFrm( &aPtPt, 0, sal_False ) : 0; const SwFrm* pTmpEndFrm = pTmpEndNode ? pTmpEndNode->GetFrm( &aMkPt, 0, sal_False ) : 0; +>>>>>>> other const SwLayoutFrm* pStart = pTmpStartFrm ? pTmpStartFrm->GetUpper() : 0; const SwLayoutFrm* pEnd = pTmpEndFrm ? pTmpEndFrm->GetUpper() : 0; @@ -2015,7 +2025,7 @@ void SwRootFrm::CalcFrmRects( SwShellCrsr &rCrsr, sal_Bool bIsTblMode ) *pEndPos = rCrsr.GetPoint() == pStartPos ? rCrsr.GetMark() : rCrsr.GetPoint(); - ViewShell *pSh = GetShell(); + ViewShell *pSh = GetCurrShell(); // --> FME 2004-06-08 #i12836# enhanced pdf SwRegionRects aRegion( pSh && !pSh->GetViewOptions()->IsPDFExport() ? @@ -2023,10 +2033,10 @@ void SwRootFrm::CalcFrmRects( SwShellCrsr &rCrsr, sal_Bool bIsTblMode ) Frm() ); // <-- if( !pStartPos->nNode.GetNode().IsCntntNode() || - !pStartPos->nNode.GetNode().GetCntntNode()->GetFrm() || + !pStartPos->nNode.GetNode().GetCntntNode()->getLayoutFrm(this) || ( pStartPos->nNode != pEndPos->nNode && ( !pEndPos->nNode.GetNode().IsCntntNode() || - !pEndPos->nNode.GetNode().GetCntntNode()->GetFrm() ) ) ) + !pEndPos->nNode.GetNode().GetCntntNode()->getLayoutFrm(this) ) ) ) { /* For SelectAll we will need something like this later on... const SwFrm* pPageFrm = GetLower(); @@ -2046,11 +2056,21 @@ void SwRootFrm::CalcFrmRects( SwShellCrsr &rCrsr, sal_Bool bIsTblMode ) //Erstmal die CntntFrms zum Start und End besorgen, die brauch ich auf //jedenfall. +<<<<<<< local + const SwCntntFrm *pStartFrm = rNds[ pStartPos->nNode ]-> + GetCntntNode()->getLayoutFrm( this, &rCrsr.GetSttPos(), pStartPos ); +======= SwCntntFrm const* pStartFrm = pStartPos->nNode.GetNode(). GetCntntNode()->GetFrm( &rCrsr.GetSttPos(), pStartPos ); +>>>>>>> other +<<<<<<< local + const SwCntntFrm *pEndFrm = rNds[ pEndPos->nNode ]-> + GetCntntNode()->getLayoutFrm( this, &rCrsr.GetEndPos(), pEndPos ); +======= SwCntntFrm const* pEndFrm = pEndPos->nNode.GetNode(). GetCntntNode()->GetFrm( &rCrsr.GetEndPos(), pEndPos ); +>>>>>>> other ASSERT( (pStartFrm && pEndFrm), "Keine CntntFrms gefunden." ); diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx index 9909b6147d83..50e9c4332932 100644 --- a/sw/source/core/layout/wsfrm.cxx +++ b/sw/source/core/layout/wsfrm.cxx @@ -43,8 +43,11 @@ #include <rootfrm.hxx> #include <cntfrm.hxx> #include <dcontact.hxx> +#include <anchoreddrawobject.hxx> +#include <fmtanchr.hxx> #include <viewsh.hxx> #include <viewimp.hxx> +#include "viewopt.hxx" #include <doc.hxx> #include <fesh.hxx> #include <docsh.hxx> @@ -87,11 +90,12 @@ using namespace ::com::sun::star; |* |*************************************************************************/ -SwFrm::SwFrm( SwModify *pMod ) : +SwFrm::SwFrm( SwModify *pMod, SwFrm* pSib ) : SwClient( pMod ), // --> OD 2006-05-10 #i65250# mnFrmId( SwFrm::mnLastFrmId++ ), // <-- + mpRoot( pSib ? pSib->getRootFrm() : 0 ), pUpper( 0 ), pNext( 0 ), pPrev( 0 ), @@ -114,17 +118,22 @@ SwFrm::SwFrm( SwModify *pMod ) : bCompletePaint = bInfInvalid = sal_True; } +bool SwFrm::KnowsFormat( const SwFmt& rFmt ) const +{ + return GetRegisteredIn() == &rFmt; +} -ViewShell * SwFrm::GetShell() const +void SwFrm::RegisterToFormat( SwFmt& rFmt ) { - const SwRootFrm *pRoot; - if ( 0 != (pRoot = FindRootFrm()) ) - return pRoot->GetCurrShell(); - return 0; + rFmt.Add( this ); } +<<<<<<< local +void SwFrm::CheckDir( UINT16 nDir, BOOL bVert, BOOL bOnlyBiDi, BOOL bBrowse ) +======= void SwFrm::CheckDir( sal_uInt16 nDir, sal_Bool bVert, sal_Bool bOnlyBiDi, sal_Bool bBrowse ) +>>>>>>> other { if( FRMDIR_ENVIRONMENT == nDir || ( bVert && bOnlyBiDi ) ) { @@ -173,9 +182,12 @@ void SwSectionFrm::CheckDirection( sal_Bool bVert ) { const SwFrmFmt* pFmt = GetFmt(); if( pFmt ) + { + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); CheckDir(((SvxFrameDirectionItem&)pFmt->GetFmtAttr(RES_FRAMEDIR)).GetValue(), - bVert, sal_True, - pFmt->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ); + bVert, sal_True, bBrowseMode ); + } else SwFrm::CheckDirection( bVert ); } @@ -184,9 +196,12 @@ void SwFlyFrm::CheckDirection( sal_Bool bVert ) { const SwFrmFmt* pFmt = GetFmt(); if( pFmt ) + { + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); CheckDir(((SvxFrameDirectionItem&)pFmt->GetFmtAttr(RES_FRAMEDIR)).GetValue(), - bVert, sal_False, - pFmt->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ); + bVert, sal_False, bBrowseMode ); + } else SwFrm::CheckDirection( bVert ); } @@ -195,9 +210,12 @@ void SwTabFrm::CheckDirection( sal_Bool bVert ) { const SwFrmFmt* pFmt = GetFmt(); if( pFmt ) + { + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); CheckDir(((SvxFrameDirectionItem&)pFmt->GetFmtAttr(RES_FRAMEDIR)).GetValue(), - bVert, sal_True, - pFmt->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ); + bVert, sal_True, bBrowseMode ); + } else SwFrm::CheckDirection( bVert ); } @@ -213,8 +231,9 @@ void SwCellFrm::CheckDirection( sal_Bool bVert ) if( pFmt && SFX_ITEM_SET == pFmt->GetItemState( RES_FRAMEDIR, sal_True, &pItem ) ) { const SvxFrameDirectionItem* pFrmDirItem = static_cast<const SvxFrameDirectionItem*>(pItem); - CheckDir( pFrmDirItem->GetValue(), bVert, sal_False, - pFmt->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ); + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); + CheckDir( pFrmDirItem->GetValue(), bVert, sal_False, bBrowseMode ); } else SwFrm::CheckDirection( bVert ); @@ -222,20 +241,14 @@ void SwCellFrm::CheckDirection( sal_Bool bVert ) void SwTxtFrm::CheckDirection( sal_Bool bVert ) { + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); CheckDir( GetTxtNode()->GetSwAttrSet().GetFrmDir().GetValue(), bVert, - sal_True, - GetTxtNode()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ); + sal_True, bBrowseMode ); } -/************************************************************************* -|* -|* SwFrm::Modify() -|* -|* Ersterstellung AK 01-Mar-1991 -|* Letzte Aenderung MA 20. Jun. 96 -|* -|*************************************************************************/ -void SwFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) +/*************************************************************************/ +void SwFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew ) { sal_uInt8 nInvFlags = 0; @@ -284,8 +297,13 @@ void SwFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) } } +<<<<<<< local +void SwFrm::_UpdateAttrFrm( const SfxPoolItem *pOld, const SfxPoolItem *pNew, + BYTE &rInvFlags ) +======= void SwFrm::_UpdateAttrFrm( SfxPoolItem *pOld, SfxPoolItem *pNew, sal_uInt8 &rInvFlags ) +>>>>>>> other { sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; switch( nWhich ) @@ -983,7 +1001,7 @@ void SwCntntFrm::Cut() //er die Retouche uebernehmen. //Ausserdem kann eine Leerseite entstanden sein. else - { SwRootFrm *pRoot = FindRootFrm(); + { SwRootFrm *pRoot = getRootFrm(); if ( pRoot ) { pRoot->SetSuperfluous(); @@ -1392,7 +1410,12 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst ) if ( !nDiff || !GetUpper()->IsFtnBossFrm() ) // nur innerhalb von Seiten/Spalten return 0L; +<<<<<<< local + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode(); +======= sal_Bool bBrowse = GetUpper()->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other //Der (Page)Body veraendert sich nur im BrowseMode, aber nicht wenn er //Spalten enthaelt. @@ -1406,16 +1429,16 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst ) long nBrowseAdd = 0; if ( bBrowse && GetUpper()->IsPageFrm() ) // nur (Page)BodyFrms { - ViewShell *pSh = GetShell(); + ViewShell *pViewShell = getRootFrm()->GetCurrShell(); SwLayoutFrm *pUp = GetUpper(); long nChg; const long nUpPrtBottom = pUp->Frm().Height() - pUp->Prt().Height() - pUp->Prt().Top(); SwRect aInva( pUp->Frm() ); - if ( pSh ) + if ( pViewShell ) { - aInva.Pos().X() = pSh->VisArea().Left(); - aInva.Width( pSh->VisArea().Width() ); + aInva.Pos().X() = pViewShell->VisArea().Left(); + aInva.Width( pViewShell->VisArea().Width() ); } if ( nDiff > 0 ) { @@ -1425,7 +1448,7 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst ) if ( !IsBodyFrm() ) { SetCompletePaint(); - if ( !pSh || pSh->VisArea().Height() >= pUp->Frm().Height() ) + if ( !pViewShell || pViewShell->VisArea().Height() >= pUp->Frm().Height() ) { //Ersteinmal den Body verkleinern. Der waechst dann schon //wieder. @@ -1455,12 +1478,12 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst ) //mindestens so gross wie die VisArea. nChg = nDiff; long nInvaAdd = 0; - if ( pSh && !pUp->GetPrev() && - pUp->Frm().Height() + nDiff < pSh->VisArea().Height() ) + if ( pViewShell && !pUp->GetPrev() && + pUp->Frm().Height() + nDiff < pViewShell->VisArea().Height() ) { //Das heisst aber wiederum trotzdem, das wir geeignet invalidieren //muessen. - nChg = pSh->VisArea().Height() - pUp->Frm().Height(); + nChg = pViewShell->VisArea().Height() - pUp->Frm().Height(); nInvaAdd = -(nDiff - nChg); } @@ -1483,16 +1506,16 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst ) if ( !bTst ) { //Unabhaengig von nChg - if ( pSh && aInva.HasArea() && pUp->GetUpper() ) - pSh->InvalidateWindows( aInva ); + if ( pViewShell && aInva.HasArea() && pUp->GetUpper() ) + pViewShell->InvalidateWindows( aInva ); } if ( !bTst && nChg ) { const SwRect aOldRect( pUp->Frm() ); pUp->Frm().SSize().Height() += nChg; pUp->Prt().SSize().Height() += nChg; - if ( pSh ) - pSh->Imp()->SetFirstVisPageInvalid(); + if ( pViewShell ) + pViewShell->Imp()->SetFirstVisPageInvalid(); if ( GetNext() ) GetNext()->_InvalidatePos(); @@ -1500,7 +1523,7 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst ) //Ggf. noch ein Repaint ausloesen. const SvxGraphicPosition ePos = pUp->GetFmt()->GetBackground().GetGraphicPos(); if ( ePos != GPOS_NONE && ePos != GPOS_TILED ) - pSh->InvalidateWindows( pUp->Frm() ); + pViewShell->InvalidateWindows( pUp->Frm() ); if ( pUp->GetUpper() ) { @@ -1889,8 +1912,14 @@ SwTwips SwCntntFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) nDist > (LONG_MAX - nFrmHeight ) ) nDist = LONG_MAX - nFrmHeight; +<<<<<<< local + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode(); + const USHORT nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body +======= const sal_Bool bBrowse = GetUpper()->GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body +>>>>>>> other if( !(GetUpper()->GetType() & nTmpType) && GetUpper()->HasFixSize() ) { if ( !bTst ) @@ -2115,7 +2144,7 @@ SwTwips SwCntntFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) |* Letzte Aenderung MA 13. Oct. 95 |* |*************************************************************************/ -void SwCntntFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) +void SwCntntFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew ) { sal_uInt8 nInvFlags = 0; @@ -2188,8 +2217,13 @@ void SwCntntFrm::Modify( SfxPoolItem * pOld, SfxPoolItem * pNew ) } } +<<<<<<< local +void SwCntntFrm::_UpdateAttr( const SfxPoolItem* pOld, const SfxPoolItem* pNew, + BYTE &rInvFlags, +======= void SwCntntFrm::_UpdateAttr( SfxPoolItem* pOld, SfxPoolItem* pNew, sal_uInt8 &rInvFlags, +>>>>>>> other SwAttrSetChg *pOldSet, SwAttrSetChg *pNewSet ) { sal_Bool bClear = sal_True; @@ -2347,8 +2381,8 @@ void SwCntntFrm::_UpdateAttr( SfxPoolItem* pOld, SfxPoolItem* pNew, |* Letzte Aenderung MA 12. May. 95 |* |*************************************************************************/ -SwLayoutFrm::SwLayoutFrm( SwFrmFmt* pFmt ): - SwFrm( pFmt ), +SwLayoutFrm::SwLayoutFrm( SwFrmFmt* pFmt, SwFrm* pSib ): + SwFrm( pFmt, pSib ), pLower( 0 ) { const SwFmtFrmSize &rFmtSize = pFmt->GetFrmSize(); @@ -2411,8 +2445,14 @@ SwTwips SwLayoutFrm::InnerHeight() const |*************************************************************************/ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) { +<<<<<<< local + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode(); + const USHORT nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body +======= const sal_Bool bBrowse = GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body +>>>>>>> other if( !(GetType() & nTmpType) && HasFixSize() ) return 0; @@ -2557,7 +2597,7 @@ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) if( bMoveAccFrm && IsAccessibleFrm() ) { - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() && pRootFrm->GetCurrShell() ) { @@ -2577,8 +2617,14 @@ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) |*************************************************************************/ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) { +<<<<<<< local + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode(); + const USHORT nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body +======= const sal_Bool bBrowse = GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body +>>>>>>> other if( !(GetType() & nTmpType) && HasFixSize() ) return 0; @@ -2675,7 +2721,7 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo ) if( bMoveAccFrm && IsAccessibleFrm() ) { - SwRootFrm *pRootFrm = FindRootFrm(); + SwRootFrm *pRootFrm = getRootFrm(); if( pRootFrm && pRootFrm->IsAnyShellAccessible() && pRootFrm->GetCurrShell() ) { @@ -3330,10 +3376,9 @@ long SwLayoutFrm::CalcRel( const SwFmtFrmSize &rSz, sal_Bool ) const { const SwFrm *pRel = GetUpper(); long nRel = LONG_MAX; - const ViewShell *pSh = GetShell(); - if ( pRel->IsPageBodyFrm() && - GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && - pSh && pSh->VisArea().Width()) + const ViewShell *pSh = getRootFrm()->GetCurrShell(); + const BOOL bBrowseMode = pSh && pSh->GetViewOptions()->getBrowseMode(); + if( pRel->IsPageBodyFrm() && pSh && bBrowseMode && pSh->VisArea().Width() ) { nRel = pSh->GetBrowseWidth(); long nDiff = nRel - pRel->Prt().Width(); @@ -3430,11 +3475,23 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs, //3. Weiter mit 1. bis zur Stabilitaet. const SwFmtCol &rCol = rAttrs.GetAttrSet().GetCol(); +<<<<<<< local + const USHORT nNumCols = rCol.GetNumCols(); +======= const sal_uInt16 nNumCols = rCol.GetNumCols(); +>>>>>>> other + +<<<<<<< local + BOOL bEnd = FALSE; + BOOL bBackLock = FALSE; + ViewShell *pSh = getRootFrm()->GetCurrShell(); + SwViewImp *pImp = pSh ? pSh->Imp() : 0; +======= sal_Bool bEnd = sal_False; sal_Bool bBackLock = sal_False; SwViewImp *pImp = GetShell() ? GetShell()->Imp() : 0; +>>>>>>> other { // Zugrunde liegender Algorithmus // Es wird versucht, eine optimale Hoehe fuer die Spalten zu finden. @@ -3949,7 +4006,7 @@ void SwRootFrm::InvalidateAllCntnt( sal_uInt8 nInv ) if( nInv & INV_PRTAREA ) { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if( pSh ) pSh->InvalidateWindows( Frm() ); } diff --git a/sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx b/sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx index aa8fdfe888b8..82fd8ebcab04 100644 --- a/sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx +++ b/sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx @@ -36,6 +36,9 @@ // --> OD 2004-10-15 #i26945# #include <tabfrm.hxx> // <-- +#include "rootfrm.hxx" +#include "viewopt.hxx" +#include "viewsh.hxx" #include <frmfmt.hxx> #include <IDocumentSettingAccess.hxx> #include <fmtsrnd.hxx> @@ -159,10 +162,13 @@ void SwToCntntAnchoredObjectPosition::CalcPosition() // declare and set <bBrowse> to true, if document is in browser mode and // object is anchored at the body, but not at frame belonging to a table. - const bool bBrowse = GetAnchorFrm().IsInDocBody() && - !GetAnchorFrm().IsInTab() - ? rFrmFmt.getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) - : false; + bool bBrowse = GetAnchorFrm().IsInDocBody() && !GetAnchorFrm().IsInTab(); + if( bBrowse ) + { + const ViewShell *pSh = GetAnchorFrm().getRootFrm()->GetCurrShell(); + if( !pSh || !pSh->GetViewOptions()->getBrowseMode() ) + bBrowse = false; + } // determine left/right and its upper/lower spacing. const SvxLRSpaceItem &rLR = rFrmFmt.GetLRSpace(); diff --git a/sw/source/core/objectpositioning/tolayoutanchoredobjectposition.cxx b/sw/source/core/objectpositioning/tolayoutanchoredobjectposition.cxx index 729a1eabaded..243e9b3804bb 100644 --- a/sw/source/core/objectpositioning/tolayoutanchoredobjectposition.cxx +++ b/sw/source/core/objectpositioning/tolayoutanchoredobjectposition.cxx @@ -31,15 +31,16 @@ #include <anchoredobject.hxx> #include <frame.hxx> #include <pagefrm.hxx> -#ifndef _SVX_SVDOBJ_HXX #include <svx/svdobj.hxx> -#endif #include <frmfmt.hxx> #include <fmtanchr.hxx> #include <fmtornt.hxx> #include <fmtsrnd.hxx> #include <IDocumentSettingAccess.hxx> #include <frmatr.hxx> +#include "viewsh.hxx" +#include "viewopt.hxx" +#include "rootfrm.hxx" #include <editeng/lrspitem.hxx> #include <editeng/ulspitem.hxx> @@ -131,8 +132,9 @@ void SwToLayoutAnchoredObjectPosition::CalcPosition() // if in online-layout the bottom of to-page anchored object is beyond // the page bottom, the page frame has to grow by growing its body frame. + const ViewShell *pSh = GetAnchorFrm().getRootFrm()->GetCurrShell(); if ( !bFlyAtFly && GetAnchorFrm().IsPageFrm() && - rFrmFmt.getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + pSh && pSh->GetViewOptions()->getBrowseMode() ) { const long nAnchorBottom = GetAnchorFrm().Frm().Bottom(); const long nBottom = GetAnchorFrm().Frm().Top() + diff --git a/sw/source/core/ole/ndole.cxx b/sw/source/core/ole/ndole.cxx index 69cb74a86d21..60f9453b25ca 100644 --- a/sw/source/core/ole/ndole.cxx +++ b/sw/source/core/ole/ndole.cxx @@ -793,7 +793,7 @@ const uno::Reference < embed::XEmbeddedObject > SwOLEObj::GetOleRef() { //Das Teil konnte nicht geladen werden (wahrsch. Kaputt). Rectangle aArea; - SwFrm *pFrm = pOLENd->GetFrm(); + SwFrm *pFrm = pOLENd->getLayoutFrm(0); if ( pFrm ) { Size aSz( pFrm->Frm().SSize() ); diff --git a/sw/source/core/para/paratr.cxx b/sw/source/core/para/paratr.cxx index bff9983e4ede..94322f2b05ea 100644 --- a/sw/source/core/para/paratr.cxx +++ b/sw/source/core/para/paratr.cxx @@ -83,7 +83,7 @@ SwFmtDrop::SwFmtDrop() SwFmtDrop::SwFmtDrop( const SwFmtDrop &rCpy ) : SfxPoolItem( RES_PARATR_DROP ), - SwClient( rCpy.pRegisteredIn ), + SwClient( rCpy.GetRegisteredInNonConst() ), pDefinedIn( 0 ), nDistance( rCpy.GetDistance() ), nReadFmt( rCpy.nReadFmt ), @@ -104,8 +104,8 @@ SwFmtDrop::~SwFmtDrop() void SwFmtDrop::SetCharFmt( SwCharFmt *pNew ) { //Ummelden - if ( pRegisteredIn ) - pRegisteredIn->Remove( this ); + if ( GetRegisteredIn() ) + GetRegisteredInNonConst()->Remove( this ); if(pNew) pNew->Add( this ); nReadFmt = USHRT_MAX; @@ -113,26 +113,19 @@ void SwFmtDrop::SetCharFmt( SwCharFmt *pNew ) -void SwFmtDrop::Modify( SfxPoolItem *, SfxPoolItem * ) +void SwFmtDrop::Modify( const SfxPoolItem*, const SfxPoolItem * ) { if( pDefinedIn ) { if( !pDefinedIn->ISA( SwFmt )) - pDefinedIn->Modify( this, this ); + pDefinedIn->ModifyNotification( this, this ); else if( pDefinedIn->GetDepends() && !pDefinedIn->IsModifyLocked() ) { // selbst den Abhaengigen vom Format bescheid sagen. Das // Format selbst wuerde es nicht weitergeben, weil es ueber // die Abpruefung nicht hinauskommt. - SwClientIter aIter( *pDefinedIn ); - SwClient * pLast = aIter.GoStart(); - if( pLast ) // konnte zum Anfang gesprungen werden ?? - do { - pLast->Modify( this, this ); - if( !pDefinedIn->GetDepends() ) // Baum schon Weg ?? - break; - } while( 0 != ( pLast = aIter++ )); + pDefinedIn->ModifyBroadcast( this, this ); } } } diff --git a/sw/source/core/table/swnewtable.cxx b/sw/source/core/table/swnewtable.cxx index 1ec108ca1deb..e351aede87d4 100644 --- a/sw/source/core/table/swnewtable.cxx +++ b/sw/source/core/table/swnewtable.cxx @@ -47,6 +47,7 @@ #include <editeng/boxitem.hxx> #include <editeng/protitem.hxx> #include <swtblfmt.hxx> +#include <switerator.hxx> #ifndef DBG_UTIL #define CHECK_TABLE(t) @@ -592,11 +593,9 @@ SwBoxSelection* SwTable::CollectBoxSelection( const SwPaM& rPam ) const void lcl_InvalidateCellFrm( const SwTableBox& rBox ) { - SwClientIter aIter( *rBox.GetFrmFmt() ); - SwClient* pLast; - for( pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) + SwIterator<SwCellFrm,SwFmt> aIter( *rBox.GetFrmFmt() ); + for( SwCellFrm* pCell = aIter.First(); pCell; pCell = aIter.Next() ) { - SwCellFrm *pCell = (SwCellFrm*)pLast; if( pCell->GetTabBox() == &rBox ) { pCell->InvalidateSize(); @@ -1412,7 +1411,7 @@ sal_Bool SwTable::NewSplitRow( SwDoc* pDoc, const SwSelBoxes& rBoxes, sal_uInt16 _FndBox aFndBox( 0, 0 ); aFndBox.SetTableLines( rBoxes, *this ); - if( bSameHeight && pDoc->GetRootFrm() ) + if( bSameHeight && pDoc->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { SwSplitLines aRowLines; SwSplitLines aSplitLines; diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx index 8f41fbe873a6..74197aee67df 100644 --- a/sw/source/core/table/swtable.cxx +++ b/sw/source/core/table/swtable.cxx @@ -28,10 +28,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" -#ifdef WTC -#define private public -#endif - #include <ctype.h> #include <float.h> #include <hintids.hxx> @@ -42,8 +38,6 @@ #include <editeng/colritem.hxx> #include <sfx2/linkmgr.hxx> #include <editeng/boxitem.hxx> - - #include <fmtfsize.hxx> #include <fmtornt.hxx> #include <fmtpdsc.hxx> @@ -72,6 +66,7 @@ #include <viewsh.hxx> #include <redline.hxx> #include <list> +#include <switerator.hxx> #ifndef DBG_UTIL #define CHECK_TABLE(t) @@ -267,9 +262,6 @@ void _InsTblBox( SwDoc* pDoc, SwTableNode* pTblNd, |* |* SwTable::SwTable() |* -|* Ersterstellung MA 09. Mar. 93 -|* Letzte Aenderung MA 05. May. 93 -|* |*************************************************************************/ SwTable::SwTable( SwTableFmt* pFmt ) : SwClient( pFmt ), @@ -331,14 +323,10 @@ SwTable::~SwTable() delete pHTMLLayout; } - /************************************************************************* |* |* SwTable::Modify() |* -|* Ersterstellung JP ?? -|* Letzte Aenderung MA 06. May. 93 -|* |*************************************************************************/ inline void FmtInArr( SvPtrarr& rFmtArr, SwFmt* pBoxFmt ) { @@ -415,7 +403,7 @@ void lcl_ModifyBoxes( SwTableBoxes &rBoxes, const long nOld, } } -void SwTable::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwTable::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { // fange SSize Aenderungen ab, um die Lines/Boxen anzupassen sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ; @@ -432,6 +420,8 @@ void SwTable::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) pOldSize = (const SwFmtFrmSize*)pOld; pNewSize = (const SwFmtFrmSize*)pNew; } + else + CheckRegistration( pOld, pNew ); if( pOldSize || pNewSize ) { @@ -443,8 +433,6 @@ void SwTable::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) AdjustWidths( pOldSize->GetWidth(), pNewSize->GetWidth() ); } } - else - SwClient::Modify( pOld, pNew ); // fuers ObjectDying } void SwTable::AdjustWidths( const long nOld, const long nNew ) @@ -457,9 +445,6 @@ void SwTable::AdjustWidths( const long nOld, const long nNew ) |* |* SwTable::GetTabCols() |* -|* Ersterstellung MA 04. May. 93 -|* Letzte Aenderung MA 30. Nov. 95 -|* |*************************************************************************/ void lcl_RefreshHidden( SwTabCols &rToFill, sal_uInt16 nPos ) { @@ -711,9 +696,6 @@ void SwTable::GetTabCols( SwTabCols &rToFill, const SwTableBox *pStart, |* |* SwTable::SetTabCols() |* -|* Ersterstellung MA 04. May. 93 -|* Letzte Aenderung MA 26. Aug. 98 -|* |*************************************************************************/ //Struktur zur Parameteruebergabe struct Parm @@ -1407,9 +1389,6 @@ void SwTable::NewSetTabCols( Parm &rParm, const SwTabCols &rNew, |* const SwTableBox* SwTable::GetTblBox( const Strn?ng& rName ) const |* gebe den Pointer auf die benannte Box zurueck. |* -|* Ersterstellung JP 30. Jun. 93 -|* Letzte Aenderung JP 30. Jun. 93 -|* |*************************************************************************/ sal_Bool IsValidRowName( const String& rStr ) @@ -1560,8 +1539,7 @@ SwTableBox* SwTable::GetTblBox( sal_uLong nSttIdx ) pModify = pTblNd->GetTable().GetFrmFmt(); // <-- - SwClientIter aIter( *pModify ); - SwFrm *pFrm = (SwFrm*)aIter.First( TYPE(SwFrm) ); + SwFrm* pFrm = SwIterator<SwFrm,SwModify>::FirstElement( *pModify ); while ( pFrm && !pFrm->IsCellFrm() ) pFrm = pFrm->GetUpper(); if ( pFrm ) @@ -1595,9 +1573,6 @@ sal_Bool SwTable::IsTblComplex() const |* |* SwTableLine::SwTableLine() |* -|* Ersterstellung MA 09. Mar. 93 -|* Letzte Aenderung MA 09. Mar. 93 -|* |*************************************************************************/ SwTableLine::SwTableLine( SwTableLineFmt *pFmt, sal_uInt16 nBoxes, SwTableBox *pUp ) @@ -1621,55 +1596,51 @@ SwTableLine::~SwTableLine() |* |* SwTableLine::ClaimFrmFmt(), ChgFrmFmt() |* -|* Ersterstellung MA 03. May. 93 -|* Letzte Aenderung MA 07. Feb. 96 -|* |*************************************************************************/ SwFrmFmt* SwTableLine::ClaimFrmFmt() { - //Wenn noch andere TableLines ausser mir selbst an dem FrmFmt haengen, - //sehe ich mich leider gezwungen mir ein eingenes zu machen und mich - //bei diesem anzumelden. - SwTableLineFmt *pOld = (SwTableLineFmt*)GetFrmFmt(); - SwClientIter aIter( *pOld ); - - SwClient* pLast; - - for( pLast = aIter.First( TYPE( SwTableLine )); pLast && pLast == this; - pLast = aIter.Next() ) - ; - - if( pLast ) - { - SwTableLineFmt *pNewFmt = pOld->GetDoc()->MakeTableLineFmt(); - *pNewFmt = *pOld; - - //Erstmal die Frms ummelden. - for( pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) - if( ((SwRowFrm*)pLast)->GetTabLine() == this ) - pNewFmt->Add( pLast ); - - //Jetzt noch mich selbst ummelden. - pNewFmt->Add( this ); - pOld = pNewFmt; + // This method makes sure that this object is an exclusive SwTableLine client + // of an SwTableLineFmt object + // If other SwTableLine objects currently listen to the same SwTableLineFmt as + // this one, something needs to be done + SwTableLineFmt *pRet = (SwTableLineFmt*)GetFrmFmt(); + SwIterator<SwTableLine,SwFmt> aIter( *pRet ); + for( SwTableLine* pLast = aIter.First(); pLast; pLast = aIter.Next() ) + { + if ( pLast != this ) + { + // found another SwTableLine that is a client of the current Fmt + // create a new Fmt as a copy and use it for this object + SwTableLineFmt *pNewFmt = pRet->GetDoc()->MakeTableLineFmt(); + *pNewFmt = *pRet; + + // register SwRowFrms that know me as clients at the new Fmt + SwIterator<SwRowFrm,SwFmt> aFrmIter( *pRet ); + for( SwRowFrm* pFrm = aFrmIter.First(); pFrm; pFrm = aFrmIter.Next() ) + if( pFrm->GetTabLine() == this ) + pFrm->RegisterToFormat( *pNewFmt ); + + // register myself + pNewFmt->Add( this ); + pRet = pNewFmt; + break; + } } - return pOld; + return pRet; } void SwTableLine::ChgFrmFmt( SwTableLineFmt *pNewFmt ) { SwFrmFmt *pOld = GetFrmFmt(); - SwClientIter aIter( *pOld ); - SwClient* pLast; + SwIterator<SwRowFrm,SwFmt> aIter( *pOld ); //Erstmal die Frms ummelden. - for( pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) + for( SwRowFrm* pRow = aIter.First(); pRow; pRow = aIter.Next() ) { - SwRowFrm *pRow = (SwRowFrm*)pLast; if( pRow->GetTabLine() == this ) { - pNewFmt->Add( pLast ); + pRow->RegisterToFormat( *pNewFmt ); pRow->InvalidateSize(); pRow->_InvalidatePrt(); @@ -1700,7 +1671,7 @@ void SwTableLine::ChgFrmFmt( SwTableLineFmt *pNewFmt ) //Jetzt noch mich selbst ummelden. pNewFmt->Add( this ); - if ( !aIter.GoStart() ) + if ( !pOld->GetDepends() ) delete pOld; } @@ -1708,16 +1679,15 @@ SwTwips SwTableLine::GetTableLineHeight( bool& bLayoutAvailable ) const { SwTwips nRet = 0; bLayoutAvailable = false; - SwClientIter aIter( *GetFrmFmt() ); + SwIterator<SwRowFrm,SwFmt> aIter( *GetFrmFmt() ); // A row could appear several times in headers/footers so only one chain of master/follow tables // will be accepted... const SwTabFrm* pChain = NULL; // My chain - for( SwClient* pLast = aIter.First( TYPE( SwFrm ) ); pLast; - pLast = aIter.Next() ) + for( SwRowFrm* pLast = aIter.First(); pLast; pLast = aIter.Next() ) { - if( ((SwRowFrm*)pLast)->GetTabLine() == this ) + if( pLast->GetTabLine() == this ) { - const SwTabFrm* pTab = static_cast<SwRowFrm*>(pLast)->FindTabFrm(); + const SwTabFrm* pTab = pLast->FindTabFrm(); bLayoutAvailable = ( pTab && pTab->IsVertical() ) ? ( 0 < pTab->Frm().Height() ) : ( 0 < pTab->Frm().Width() ); @@ -1728,15 +1698,15 @@ SwTwips SwTableLine::GetTableLineHeight( bool& bLayoutAvailable ) const { pChain = pTab; // defines my chain (even it is already) if( pTab->IsVertical() ) - nRet += static_cast<SwRowFrm*>(pLast)->Frm().Width(); + nRet += pLast->Frm().Width(); else - nRet += static_cast<SwRowFrm*>(pLast)->Frm().Height(); + nRet += pLast->Frm().Height(); // Optimization, if there are no master/follows in my chain, nothing more to add if( !pTab->HasFollow() && !pTab->IsFollow() ) break; // This is not an optimization, this is necessary to avoid double additions of // repeating rows - if( pTab->IsInHeadline( *static_cast<SwRowFrm*>(pLast) ) ) + if( pTab->IsInHeadline(*pLast) ) break; } } @@ -1748,9 +1718,6 @@ SwTwips SwTableLine::GetTableLineHeight( bool& bLayoutAvailable ) const |* |* SwTableBox::SwTableBox() |* -|* Ersterstellung MA 04. May. 93 -|* Letzte Aenderung MA 04. May. 93 -|* |*************************************************************************/ SwTableBox::SwTableBox( SwTableBoxFmt* pFmt, sal_uInt16 nLines, SwTableLine *pUp ) : SwClient( 0 ), @@ -1831,7 +1798,7 @@ SwTableBoxFmt* SwTableBox::CheckBoxFmt( SwTableBoxFmt* pFmt ) if( SFX_ITEM_SET == pFmt->GetItemState( RES_BOXATR_VALUE, sal_False ) || SFX_ITEM_SET == pFmt->GetItemState( RES_BOXATR_FORMULA, sal_False ) ) { - SwClient* pOther = SwClientIter( *pFmt ).First( TYPE( SwTableBox )); + SwTableBox* pOther = SwIterator<SwTableBox,SwFmt>::FirstElement( *pFmt ); if( pOther ) { SwTableBoxFmt* pNewFmt = pFmt->GetDoc()->MakeTableBoxFmt(); @@ -1852,59 +1819,54 @@ SwTableBoxFmt* SwTableBox::CheckBoxFmt( SwTableBoxFmt* pFmt ) |* |* SwTableBox::ClaimFrmFmt(), ChgFrmFmt() |* -|* Ersterstellung MA 04. May. 93 -|* Letzte Aenderung MA 07. Feb. 96 -|* |*************************************************************************/ SwFrmFmt* SwTableBox::ClaimFrmFmt() { - //Wenn noch andere TableBoxen ausser mir selbst an dem FrmFmt haengen, - //sehe ich mich leider gezwungen mir ein eingenes zu machen und mich - //bei diesem anzumelden. - SwTableBoxFmt *pOld = (SwTableBoxFmt*)GetFrmFmt(); - SwClientIter aIter( *pOld ); - SwClient* pLast; - - for( pLast = aIter.First( TYPE( SwTableBox )); pLast && pLast == this; - pLast = aIter.Next() ) - ; - - if( pLast ) + // This method makes sure that this object is an exclusive SwTableBox client + // of an SwTableBoxFmt object + // If other SwTableBox objects currently listen to the same SwTableBoxFmt as + // this one, something needs to be done + SwTableBoxFmt *pRet = (SwTableBoxFmt*)GetFrmFmt(); + SwIterator<SwTableBox,SwFmt> aIter( *pRet ); + for( SwTableBox* pLast = aIter.First(); pLast; pLast = aIter.Next() ) { - SwTableBoxFmt* pNewFmt = pOld->GetDoc()->MakeTableBoxFmt(); - - pNewFmt->LockModify(); - *pNewFmt = *pOld; - - // Values und Formeln nie kopieren - pNewFmt->ResetFmtAttr( RES_BOXATR_FORMULA, RES_BOXATR_VALUE ); - pNewFmt->UnlockModify(); + if ( pLast != this ) + { + // Found another SwTableBox object + // create a new Fmt as a copy and assign me to it + // don't copy values and formulas + SwTableBoxFmt* pNewFmt = pRet->GetDoc()->MakeTableBoxFmt(); + pNewFmt->LockModify(); + *pNewFmt = *pRet; + pNewFmt->ResetFmtAttr( RES_BOXATR_FORMULA, RES_BOXATR_VALUE ); + pNewFmt->UnlockModify(); - //Erstmal die Frms ummelden. - for( pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) - if( ((SwCellFrm*)pLast)->GetTabBox() == this ) - pNewFmt->Add( pLast ); + // re-register SwCellFrm objects that know me + SwIterator<SwCellFrm,SwFmt> aFrmIter( *pRet ); + for( SwCellFrm* pCell = aFrmIter.First(); pCell; pCell = aFrmIter.Next() ) + if( pCell->GetTabBox() == this ) + pCell->RegisterToFormat( *pNewFmt ); - //Jetzt noch mich selbst ummelden. - pNewFmt->Add( this ); - pOld = pNewFmt; + // re-register myself + pNewFmt->Add( this ); + pRet = pNewFmt; + break; + } } - return pOld; + return pRet; } void SwTableBox::ChgFrmFmt( SwTableBoxFmt* pNewFmt ) { SwFrmFmt *pOld = GetFrmFmt(); - SwClientIter aIter( *pOld ); - SwClient* pLast; + SwIterator<SwCellFrm,SwFmt> aIter( *pOld ); //Erstmal die Frms ummelden. - for( pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) + for( SwCellFrm* pCell = aIter.First(); pCell; pCell = aIter.Next() ) { - SwCellFrm *pCell = (SwCellFrm*)pLast; if( pCell->GetTabBox() == this ) { - pNewFmt->Add( pLast ); + pCell->RegisterToFormat( *pNewFmt ); pCell->InvalidateSize(); pCell->_InvalidatePrt(); pCell->SetCompletePaint(); @@ -1929,7 +1891,7 @@ void SwTableBox::ChgFrmFmt( SwTableBoxFmt* pNewFmt ) //Jetzt noch mich selbst ummelden. pNewFmt->Add( this ); - if( !aIter.GoStart() ) + if( !pOld->GetDepends() ) delete pOld; } @@ -1939,9 +1901,6 @@ void SwTableBox::ChgFrmFmt( SwTableBoxFmt* pNewFmt ) |* gebe den Namen dieser Box zurueck. Dieser wird dynamisch bestimmt |* und ergibt sich aus der Position in den Lines/Boxen/Tabelle |* -|* Ersterstellung JP 30. Jun. 93 -|* Letzte Aenderung JP 30. Jun. 93 -|* |*************************************************************************/ void lcl_GetTblBoxColStr( sal_uInt16 nCol, String& rNm ) { @@ -2052,8 +2011,7 @@ sal_Bool SwTable::GetInfo( SfxPoolItem& rInfo ) const case RES_CONTENT_VISIBLE: { - ((SwPtrMsgPoolItem&)rInfo).pObject = - SwClientIter( *GetFrmFmt() ).First( TYPE(SwFrm) ); + ((SwPtrMsgPoolItem&)rInfo).pObject = SwIterator<SwFrm,SwFmt>::FirstElement( *GetFrmFmt() ); } return sal_False; } @@ -2063,7 +2021,7 @@ sal_Bool SwTable::GetInfo( SfxPoolItem& rInfo ) const SwTable * SwTable::FindTable( SwFrmFmt const*const pFmt ) { return (pFmt) - ? static_cast<SwTable*>(SwClientIter(*pFmt).First( TYPE(SwTable) )) + ? SwIterator<SwTable,SwFmt>::FirstElement(*pFmt) : 0; } @@ -2302,7 +2260,7 @@ void ChgNumToText( SwTableBox& rBox, sal_uLong nFmt ) } // zum Erkennen von Veraenderungen (haupts. TableBoxAttribute) -void SwTableBoxFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwTableBoxFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { if( !IsModifyLocked() && !IsInDocDTOR() ) { @@ -2354,8 +2312,8 @@ void SwTableBoxFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) SFX_ITEM_SET == GetItemState( RES_BOXATR_FORMULA, sal_False ) ) { // die Box holen - SwClientIter aIter( *this ); - SwTableBox* pBox = (SwTableBox*)aIter.First( TYPE( SwTableBox ) ); + SwIterator<SwTableBox,SwFmt> aIter( *this ); + SwTableBox* pBox = aIter.First(); if( pBox ) { ASSERT( !aIter.Next(), "keine Box oder mehrere am Format" ); @@ -2540,6 +2498,8 @@ sal_Bool SwTableBox::HasNumCntnt( double& rNum, sal_uInt32& rFmtIndex, rFmtIndex = 0; bRet = pNumFmtr->IsNumberFormat( aTxt, rFmtIndex, rNum ); +<<<<<<< local +======= /* // wie bekommt man aus dem neuen String den neuen Wert? @@ -2555,6 +2515,7 @@ sal_Bool SwTableBox::HasNumCntnt( double& rNum, sal_uInt32& rFmtIndex, bRet = aTxt == sNewTxt; } */ +>>>>>>> other } else rIsEmptyTxtNd = sal_False; @@ -2744,11 +2705,7 @@ public: void setTable(const SwTable * pTable) { m_pTable = pTable; SwFrmFmt * pFrmFmt = m_pTable->GetFrmFmt(); - SwClientIter aIter(*pFrmFmt); - - m_pTabFrm = - static_cast<const SwTabFrm *>(aIter.First(TYPE(SwTabFrm))); - + m_pTabFrm = SwIterator<SwTabFrm,SwFmt>::FirstElement(*pFrmFmt); if (m_pTabFrm->IsFollow()) m_pTabFrm = m_pTabFrm->FindMaster(true); } @@ -2882,3 +2839,26 @@ const SwTableBox * SwTableCellInfo::getTableBox() const return pRet; } + +void SwTable::RegisterToFormat( SwFmt& rFmt ) +{ + rFmt.Add( this ); +} + +void SwTableLine::RegisterToFormat( SwFmt& rFmt ) +{ + rFmt.Add( this ); +} + +void SwTableBox::RegisterToFormat( SwFmt& rFmt ) +{ + rFmt.Add( this ); +} + +void SwTableBox::ForgetFrmFmt() +{ + if ( GetRegisteredIn() ) + GetRegisteredInNonConst()->Remove(this); +} + + diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx b/sw/source/core/text/EnhancedPDFExportHelper.cxx index 7d777089fb7f..13262cf15ae3 100644 --- a/sw/source/core/text/EnhancedPDFExportHelper.cxx +++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx @@ -81,7 +81,7 @@ #include "i18npool/mslangid.hxx" #include <IMark.hxx> #include <SwNodeNum.hxx> - +#include <switerator.hxx> #include <stack> #include <tools/globname.hxx> @@ -1589,22 +1589,19 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport() if ( pPDFExtOutDevData->GetIsExportNotes() ) { SwFieldType* pType = mrSh.GetFldType( RES_POSTITFLD, aEmptyStr ); - SwClientIter aIter( *pType ); - const SwClient * pFirst = aIter.GoStart(); - while( pFirst ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + for( SwFmtFld* pFirst = aIter.First(); pFirst; ) { - if( ((SwFmtFld*)pFirst)->GetTxtFld() && - ((SwFmtFld*)pFirst)->IsFldInDoc()) + if( pFirst->GetTxtFld() && pFirst->IsFldInDoc() ) { - const SwTxtNode* pTNd = - (SwTxtNode*)((SwFmtFld*)pFirst)->GetTxtFld()->GetpTxtNode(); + const SwTxtNode* pTNd = (SwTxtNode*)pFirst->GetTxtFld()->GetpTxtNode(); ASSERT( 0 != pTNd, "Enhanced pdf export - text node is missing" ) // 1. Check if the whole paragraph is hidden // 2. Move to the field // 3. Check for hidden text attribute if ( !pTNd->IsHidden() && - mrSh.GotoFld( *(SwFmtFld*)pFirst ) && + mrSh.GotoFld( *pFirst ) && !mrSh.SelectHiddenRange() ) { // Link Rectangle @@ -1618,7 +1615,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport() vcl::PDFNote aNote; // Use the NumberFormatter to get the date string: - const SwPostItField* pField = (SwPostItField*)((SwFmtFld*)pFirst)->GetFld(); + const SwPostItField* pField = (SwPostItField*)pFirst->GetFld(); SvNumberFormatter* pNumFormatter = pDoc->GetNumberFormatter(); const Date aDateDiff( pField->GetDate() - *pNumFormatter->GetNullDate() ); @@ -1641,7 +1638,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport() } } } - pFirst = aIter++; + pFirst = aIter.Next(); mrSh.SwCrsrShell::ClearMark(); } } @@ -1831,22 +1828,19 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport() // REFERENCES // SwFieldType* pType = mrSh.GetFldType( RES_GETREFFLD, aEmptyStr ); - SwClientIter aIter( *pType ); - const SwClient * pFirst = aIter.GoStart(); - while( pFirst ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + for( SwFmtFld* pFirst = aIter.First(); pFirst; ) { - if( ((SwFmtFld*)pFirst)->GetTxtFld() && - ((SwFmtFld*)pFirst)->IsFldInDoc()) + if( pFirst->GetTxtFld() && pFirst->IsFldInDoc() ) { - const SwTxtNode* pTNd = - (SwTxtNode*)((SwFmtFld*)pFirst)->GetTxtFld()->GetpTxtNode(); + const SwTxtNode* pTNd = (SwTxtNode*)pFirst->GetTxtFld()->GetpTxtNode(); ASSERT( 0 != pTNd, "Enhanced pdf export - text node is missing" ) // 1. Check if the whole paragraph is hidden // 2. Move to the field // 3. Check for hidden text attribute if ( !pTNd->IsHidden() && - mrSh.GotoFld( *(SwFmtFld*)pFirst ) && + mrSh.GotoFld( *pFirst ) && !mrSh.SelectHiddenRange() ) { // Select the field: @@ -1862,7 +1856,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport() // Destination Rectangle const SwGetRefField* pField = - (SwGetRefField*)((SwFmtFld*)pFirst)->GetFld(); + (SwGetRefField*)pFirst->GetFld(); const String& rRefName = pField->GetSetRefName(); mrSh.GotoRefMark( rRefName, pField->GetSubType(), pField->GetSeqNo() ); const SwRect& rDestRect = mrSh.GetCharRect(); @@ -1915,7 +1909,7 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport() } } } - pFirst = aIter++; + pFirst = aIter.Next(); mrSh.SwCrsrShell::ClearMark(); } @@ -2175,15 +2169,10 @@ void SwEnhancedPDFExportHelper::MakeHeaderFooterLinks( vcl::PDFExtOutDevData& rP // the offset of the link rectangle calculates as follows: const Point aOffset = rLinkRect.Pos() + mrOut.GetMapMode().GetOrigin(); - SwClientIter aClientIter( const_cast<SwTxtNode&>(rTNd) ); - SwClient* pLast = aClientIter.GoStart(); - - while( pLast ) - { - if ( pLast->ISA( SwTxtFrm ) ) + SwIterator<SwTxtFrm,SwTxtNode> aIter( rTNd ); + for ( SwTxtFrm* pTmpFrm = aIter.First(); pTmpFrm; pTmpFrm = aIter.Next() ) { // Add offset to current page: - SwTxtFrm* pTmpFrm = static_cast<SwTxtFrm*>(pLast); const SwPageFrm* pPageFrm = pTmpFrm->FindPageFrm(); SwRect aHFLinkRect( rLinkRect ); aHFLinkRect.Pos() = pPageFrm->Frm().Pos() + aOffset; @@ -2210,8 +2199,5 @@ void SwEnhancedPDFExportHelper::MakeHeaderFooterLinks( vcl::PDFExtOutDevData& rP } } } - - pLast = ++aClientIter; - } } diff --git a/sw/source/core/text/blink.cxx b/sw/source/core/text/blink.cxx index 611f167bbea2..aee16acc8dcf 100644 --- a/sw/source/core/text/blink.cxx +++ b/sw/source/core/text/blink.cxx @@ -149,7 +149,7 @@ void SwBlink::Insert( const Point& rPoint, const SwLinePortion* pPor, else { pBlinkPor->SetPos( rPoint ); - pBlinkPor->SetRootFrm( pTxtFrm->FindRootFrm() ); + pBlinkPor->SetRootFrm( pTxtFrm->getRootFrm() ); aList.Insert( pBlinkPor ); pTxtFrm->SetBlinkPor(); if( pPor->IsLayPortion() || pPor->IsParaPortion() ) diff --git a/sw/source/core/text/frmcrsr.cxx b/sw/source/core/text/frmcrsr.cxx index 37fb9fbc5747..abf8637bb225 100644 --- a/sw/source/core/text/frmcrsr.cxx +++ b/sw/source/core/text/frmcrsr.cxx @@ -34,6 +34,7 @@ #include "frmtool.hxx" #include "viewopt.hxx" #include "paratr.hxx" +#include "rootfrm.hxx" #include "pagefrm.hxx" #include "colfrm.hxx" #include "txttypes.hxx" @@ -131,7 +132,7 @@ sal_Bool lcl_ChangeOffset( SwTxtFrm* pFrm, xub_StrLen nNew ) !pFly->GetNextLink() && !pFly->GetPrevLink() ) || ( !pFly && pFrm->IsInTab() ) ) { - ViewShell* pVsh = pFrm->GetShell(); + ViewShell* pVsh = pFrm->getRootFrm()->GetCurrShell(); if( pVsh ) { if( pVsh->GetNext() != pVsh || @@ -145,7 +146,7 @@ sal_Bool lcl_ChangeOffset( SwTxtFrm* pFrm, xub_StrLen nNew ) pFrm->SetPara( 0 ); pFrm->GetFormatted(); if( pFrm->Frm().HasArea() ) - pFrm->GetShell()->InvalidateWindows( pFrm->Frm() ); + pFrm->getRootFrm()->GetCurrShell()->InvalidateWindows( pFrm->Frm() ); return sal_True; } } @@ -923,7 +924,7 @@ sal_Bool SwTxtFrm::_UnitUp( SwPaM *pPam, const SwTwips nOffset, xub_StrLen nOffs = GetOfst(); if( pTmpPrev ) { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); sal_Bool bProtectedAllowed = pSh && pSh->GetViewOptions()->IsCursorInProtectedArea(); const SwTxtFrm *pPrevPrev = pTmpPrev; // Hier werden geschuetzte Frames und Frame ohne Inhalt ausgelassen @@ -1276,7 +1277,7 @@ sal_Bool SwTxtFrm::_UnitDown(SwPaM *pPam, const SwTwips nOffset, if( 0 != ( pTmpFollow = GetFollow() ) ) { // geschuetzte Follows auslassen const SwCntntFrm* pTmp = pTmpFollow; - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if( !pSh || !pSh->GetViewOptions()->IsCursorInProtectedArea() ) { while( pTmpFollow && pTmpFollow->IsProtected() ) @@ -1436,7 +1437,7 @@ void SwTxtFrm::FillCrsrPos( SwFillData& rFill ) const pColl = &pColl->GetNextTxtFmtColl(); SwAttrSet aSet( ((SwDoc*)GetTxtNode()->GetDoc())->GetAttrPool(), aTxtFmtCollSetRange ); const SwAttrSet* pSet = &pColl->GetAttrSet(); - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if( GetTxtNode()->HasSwAttrSet() ) { aSet.Put( *GetTxtNode()->GetpSwAttrSet() ); @@ -1451,8 +1452,7 @@ void SwTxtFrm::FillCrsrPos( SwFillData& rFill ) const pFnt->ChkMagic( pSh, pFnt->GetActual() ); } OutputDevice* pOut = pSh->GetOut(); - if ( !GetTxtNode()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) || - ( pSh->GetViewOptions()->IsPrtFormat() ) ) + if( !pSh->GetViewOptions()->getBrowseMode() || pSh->GetViewOptions()->IsPrtFormat() ) pOut = GetTxtNode()->getIDocumentDeviceAccess()->getReferenceDevice( true ); pFnt->SetFntChg( sal_True ); diff --git a/sw/source/core/text/frmform.cxx b/sw/source/core/text/frmform.cxx index 27473ccac4fc..d99604722604 100644 --- a/sw/source/core/text/frmform.cxx +++ b/sw/source/core/text/frmform.cxx @@ -681,7 +681,7 @@ SwCntntFrm *SwTxtFrm::JoinFrm() // and relation CONTENT_FLOWS_TO for current previous paragraph, which // is <this>, will change. { - ViewShell* pViewShell( pFoll->GetShell() ); + ViewShell* pViewShell( pFoll->getRootFrm()->GetCurrShell() ); if ( pViewShell && pViewShell->GetLayout() && pViewShell->GetLayout()->IsAnyShellAccessible() ) { @@ -708,7 +708,7 @@ SwCntntFrm *SwTxtFrm::SplitFrm( const xub_StrLen nTxtPos ) // Durch das Paste wird ein Modify() an mich verschickt. // Damit meine Daten nicht verschwinden, locke ich mich. SwTxtFrmLocker aLock( this ); - SwTxtFrm *pNew = (SwTxtFrm *)(GetTxtNode()->MakeFrm()); + SwTxtFrm *pNew = (SwTxtFrm *)(GetTxtNode()->MakeFrm( this )); pNew->bIsFollow = sal_True; pNew->SetFollow( GetFollow() ); @@ -721,7 +721,7 @@ SwCntntFrm *SwTxtFrm::SplitFrm( const xub_StrLen nTxtPos ) // and relation CONTENT_FLOWS_TO for current previous paragraph, which // is <this>, will change. { - ViewShell* pViewShell( pNew->GetShell() ); + ViewShell* pViewShell( pNew->getRootFrm()->GetCurrShell() ); if ( pViewShell && pViewShell->GetLayout() && pViewShell->GetLayout()->IsAnyShellAccessible() ) { @@ -1297,7 +1297,7 @@ sal_Bool SwTxtFrm::FormatLine( SwTxtFormatter &rLine, const sal_Bool bPrev ) } SwTwips nRght = Max( nOldWidth, pNew->Width() + pNew->GetHangingMargin() ); - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); const SwViewOption *pOpt = pSh ? pSh->GetViewOptions() : 0; if( pOpt && (pOpt->IsParagraph() || pOpt->IsLineBreak()) ) nRght += ( Max( nOldAscent, pNew->GetAscent() ) ); diff --git a/sw/source/core/text/frmpaint.cxx b/sw/source/core/text/frmpaint.cxx index 369109efb918..c219f69407ff 100644 --- a/sw/source/core/text/frmpaint.cxx +++ b/sw/source/core/text/frmpaint.cxx @@ -41,6 +41,7 @@ #include <fmtline.hxx> #include <lineinfo.hxx> #include <charfmt.hxx> +#include "rootfrm.hxx" #include <pagefrm.hxx> #include <viewsh.hxx> // ViewShell #include <viewimp.hxx> // SwViewImp @@ -320,7 +321,7 @@ void SwTxtFrm::PaintExtraData( const SwRect &rRect ) const { if( IsLocked() || IsHiddenNow() || !Prt().Height() ) return; - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); SWAP_IF_NOT_SWAPPED( this ) SwRect rOldRect( rRect ); @@ -474,7 +475,7 @@ SwRect SwTxtFrm::Paint() sal_Bool SwTxtFrm::PaintEmpty( const SwRect &rRect, sal_Bool bCheck ) const { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if( pSh && ( pSh->GetViewOptions()->IsParagraph() || bInitFont ) ) { bInitFont = sal_False; @@ -597,7 +598,7 @@ void SwTxtFrm::Paint(SwRect const& rRect, SwPrintData const*const) const ResetRepaint(); // --> FME 2004-06-24 #i16816# tagged pdf support - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); Num_Info aNumInfo( *this ); SwTaggedPDFHelper aTaggedPDFHelperNumbering( &aNumInfo, 0, 0, *pSh->GetOut() ); diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx index c8300820a8f2..d8448b9f6305 100644 --- a/sw/source/core/text/inftxt.cxx +++ b/sw/source/core/text/inftxt.cxx @@ -299,7 +299,7 @@ void SwTxtSizeInfo::CtorInitTxtSizeInfo( SwTxtFrm *pFrame, SwFont *pNewFnt, pFrm = pFrame; CtorInitTxtInfo( pFrm ); const SwTxtNode *pNd = pFrm->GetTxtNode(); - pVsh = pFrm->GetShell(); + pVsh = pFrm->getRootFrm()->GetCurrShell(); // Get the output and reference device if ( pVsh ) @@ -311,7 +311,7 @@ void SwTxtSizeInfo::CtorInitTxtSizeInfo( SwTxtFrm *pFrame, SwFont *pNewFnt, else { //Zugriff ueber StarONE, es muss keine Shell existieren oder aktiv sein. - if ( pNd->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if ( pNd->getIDocumentSettingAccess()->get(IDocumentSettingAccess::HTML_MODE) ) { //in Ermangelung eines Besseren kann hier ja wohl nur noch das //AppWin genommen werden? @@ -661,7 +661,7 @@ void SwTxtPaintInfo::_DrawText( const XubString &rText, const SwLinePortion &rPo if( GetFont()->IsBlink() && OnWin() && rPor.Width() ) { // check if accessibility options allow blinking portions: - const ViewShell* pSh = GetTxtFrm()->GetShell(); + const ViewShell* pSh = GetTxtFrm()->getRootFrm()->GetCurrShell(); if ( pSh && ! pSh->GetAccessibilityOptions()->IsStopAnimatedText() && ! pSh->IsPreView() ) { @@ -710,7 +710,7 @@ void SwTxtPaintInfo::_DrawText( const XubString &rText, const SwLinePortion &rPo const sal_Bool bTmpSmart = bSmartTag && OnWin() && !GetOpt().IsPagePreview() && SwSmartTagMgr::Get().IsSmartTagsEnabled(); // SMARTTAGS ASSERT( GetParaPortion(), "No paragraph!"); - SwDrawTextInfo aDrawInf( pFrm->GetShell(), *pOut, pSI, rText, nStart, nLength, + SwDrawTextInfo aDrawInf( pFrm->getRootFrm()->GetCurrShell(), *pOut, pSI, rText, nStart, nLength, rPor.Width(), bBullet ); aDrawInf.SetLeft( GetPaintRect().Left() ); diff --git a/sw/source/core/text/itratr.cxx b/sw/source/core/text/itratr.cxx index 83e49dc14584..4e89e2c53ed3 100644 --- a/sw/source/core/text/itratr.cxx +++ b/sw/source/core/text/itratr.cxx @@ -33,7 +33,7 @@ #include <editeng/charscaleitem.hxx> #include <txtatr.hxx> #include <sfx2/printer.hxx> -#include <editeng/lrspitem.hxx> +#include <svx/svdobj.hxx> #include <vcl/window.hxx> #include <vcl/svapp.hxx> #include <fmtanchr.hxx> @@ -62,6 +62,8 @@ #include <breakit.hxx> #include <com/sun/star/i18n/WordType.hpp> #include <com/sun/star/i18n/ScriptType.hdl> +#include <editeng/lrspitem.hxx> +#include <switerator.hxx> using namespace ::com::sun::star::i18n; using namespace ::com::sun::star; @@ -429,15 +431,13 @@ sal_Bool lcl_MinMaxString( SwMinMaxArgs& rArg, SwFont* pFnt, const XubString &rT return bRet; } -sal_Bool SwTxtNode::IsSymbol( const xub_StrLen nBegin ) const +sal_Bool SwTxtNode::IsSymbol( const xub_StrLen nBegin ) const//swmodtest 080307 { SwScriptInfo aScriptInfo; SwAttrIter aIter( *(SwTxtNode*)this, aScriptInfo ); aIter.Seek( nBegin ); - const SwRootFrm* pTmpRootFrm = getIDocumentLayoutAccess()->GetRootFrm(); - return aIter.GetFnt()->IsSymbol( pTmpRootFrm ? - pTmpRootFrm->GetCurrShell() : - 0 ); + return aIter.GetFnt()->IsSymbol( + const_cast<ViewShell *>(getIDocumentLayoutAccess()->GetCurrentViewShell()) );//swmod 080311 } class SwMinMaxNodeArgs @@ -589,8 +589,13 @@ sal_Bool lcl_MinMaxNode( const SwFrmFmtPtr& rpNd, void* pArgs ) // changing this method very likely requires changing of // "GetScalingOfSelectedText" +<<<<<<< local +void SwTxtNode::GetMinMaxSize( ULONG nIndex, ULONG& rMin, ULONG &rMax, + ULONG& rAbsMin, OutputDevice* pOut ) const//swmodtest 080307 +======= void SwTxtNode::GetMinMaxSize( sal_uLong nIndex, sal_uLong& rMin, sal_uLong &rMax, sal_uLong& rAbsMin, OutputDevice* pOut ) const +>>>>>>> other { ViewShell* pSh = 0; GetDoc()->GetEditShell( &pSh ); @@ -702,10 +707,8 @@ void SwTxtNode::GetMinMaxSize( sal_uLong nIndex, sal_uLong& rMin, sal_uLong &rMa case CHAR_HARDHYPHEN: { XubString sTmp( cChar ); - const SwRootFrm* pTmpRootFrm = getIDocumentLayoutAccess()->GetRootFrm(); - SwDrawTextInfo aDrawInf( pTmpRootFrm ? - pTmpRootFrm->GetCurrShell() : - 0, *pOut, 0, sTmp, 0, 1, 0, sal_False ); + SwDrawTextInfo aDrawInf( const_cast<ViewShell *>(getIDocumentLayoutAccess()->GetCurrentViewShell()), + *pOut, 0, sTmp, 0, 1, 0, sal_False );//swmod 080311 nAktWidth = aIter.GetFnt()->_GetTxtSize( aDrawInf ).Width(); aArg.nWordWidth += nAktWidth; aArg.nRowWidth += nAktWidth; @@ -839,7 +842,7 @@ sal_uInt16 SwTxtNode::GetScalingOfSelectedText( xub_StrLen nStt, xub_StrLen nEnd else { //Zugriff ueber StarONE, es muss keine Shell existieren oder aktiv sein. - if ( getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if ( getIDocumentSettingAccess()->get(IDocumentSettingAccess::HTML_MODE) ) pOut = GetpApp()->GetDefaultDevice(); else pOut = getIDocumentDeviceAccess()->getReferenceDevice( true ); @@ -1000,15 +1003,10 @@ sal_uInt16 SwTxtNode::GetScalingOfSelectedText( xub_StrLen nStt, xub_StrLen nEnd nWidth = Max( nWidth, nProWidth ); // search for a text frame this node belongs to - SwClientIter aClientIter( *(SwTxtNode*)this ); - SwClient* pLastFrm = aClientIter.GoStart(); + SwIterator<SwTxtFrm,SwTxtNode> aFrmIter( *this ); SwTxtFrm* pFrm = 0; - - while( pLastFrm ) + for( SwTxtFrm* pTmpFrm = aFrmIter.First(); pTmpFrm; pTmpFrm = aFrmIter.Next() ) { - if ( pLastFrm->ISA( SwTxtFrm ) ) - { - SwTxtFrm* pTmpFrm = ( SwTxtFrm* )pLastFrm; if ( pTmpFrm->GetOfst() <= nStt && ( !pTmpFrm->GetFollow() || pTmpFrm->GetFollow()->GetOfst() > nStt ) ) @@ -1017,8 +1015,6 @@ sal_uInt16 SwTxtNode::GetScalingOfSelectedText( xub_StrLen nStt, xub_StrLen nEnd break; } } - pLastFrm = ++aClientIter; - } // search for the line containing nStt if ( pFrm && pFrm->HasPara() ) @@ -1059,16 +1055,12 @@ sal_uInt16 SwTxtNode::GetWidthOfLeadingTabs() const aPos.nContent += nIdx; // Find the non-follow text frame: - SwClientIter aClientIter( (SwTxtNode&)*this ); - SwClient* pLastFrm = aClientIter.GoStart(); - - while( pLastFrm ) + SwIterator<SwTxtFrm,SwTxtNode> aIter( *this ); + for( SwTxtFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { // Only consider master frames: - if ( pLastFrm->ISA(SwTxtFrm) && - !static_cast<SwTxtFrm*>(pLastFrm)->IsFollow() ) + if ( !pFrm->IsFollow() ) { - const SwTxtFrm* pFrm = static_cast<SwTxtFrm*>(pLastFrm); SWRECTFN( pFrm ) SwRect aRect; pFrm->GetCharRect( aRect, aPos ); @@ -1078,7 +1070,6 @@ sal_uInt16 SwTxtNode::GetWidthOfLeadingTabs() const (aRect.*fnRect->fnGetLeft)() - (pFrm->*fnRect->fnGetPrtLeft)() ); break; } - pLastFrm = ++aClientIter; } } diff --git a/sw/source/core/text/porfld.cxx b/sw/source/core/text/porfld.cxx index 1057ed7899b6..366ede0c888e 100644 --- a/sw/source/core/text/porfld.cxx +++ b/sw/source/core/text/porfld.cxx @@ -31,20 +31,11 @@ #include <hintids.hxx> -#ifndef _COM_SUN_STAR_I18N_SCRIPTTYPE_HDL_ #include <com/sun/star/i18n/ScriptType.hdl> -#endif - -#ifndef _GRAPH_HXX //autogen #include <vcl/graph.hxx> -#endif #include <editeng/brshitem.hxx> -#ifndef _METRIC_HXX //autogen #include <vcl/metric.hxx> -#endif -#ifndef _OUTDEV_HXX //autogen #include <vcl/outdev.hxx> -#endif #include <viewopt.hxx> // SwViewOptions #include <txtcfg.hxx> #include <SwPortionHandler.hxx> @@ -54,10 +45,9 @@ #include <blink.hxx> // pBlink #include <frmtool.hxx> // DrawGraphic #include <viewsh.hxx> -#ifndef _DOCSH_HXX #include <docsh.hxx> -#endif #include <doc.hxx> +#include "rootfrm.hxx" #include <breakit.hxx> #include <porrst.hxx> #include <porftn.hxx> // SwFtnPortion @@ -1020,7 +1010,7 @@ void SwGrfNumPortion::Paint( const SwTxtPaintInfo &rInf ) const pViewShell && pViewShell->GetWin() ) { ( (Graphic*) pBrush->GetGraphic() )->StopAnimation(0,nId); - rInf.GetTxtFrm()->GetShell()->InvalidateWindows( aTmp ); + rInf.GetTxtFrm()->getRootFrm()->GetCurrShell()->InvalidateWindows( aTmp ); } @@ -1253,8 +1243,13 @@ sal_Bool SwCombinedPortion::Format( SwTxtFormatInfo &rInf ) } } +<<<<<<< local + USHORT nTop = ( nCount + 1 ) / 2; // the first character of the second line + ViewShell *pSh = rInf.GetTxtFrm()->getRootFrm()->GetCurrShell(); +======= sal_uInt16 nTop = ( nCount + 1 ) / 2; // the first character of the second line ViewShell *pSh = rInf.GetTxtFrm()->GetShell(); +>>>>>>> other SwFont aTmpFont( *rInf.GetFont() ); SwFontSave aFontSave( rInf, &aTmpFont ); nProportion = 55; diff --git a/sw/source/core/text/porfly.cxx b/sw/source/core/text/porfly.cxx index 976f4fbeadbc..d2792e3bad68 100644 --- a/sw/source/core/text/porfly.cxx +++ b/sw/source/core/text/porfly.cxx @@ -33,6 +33,7 @@ #include "dflyobj.hxx" // SwVirtFlyDrawObj #include "pam.hxx" // SwPosition #include "flyfrm.hxx" // SwFlyInCntFrm +#include "rootfrm.hxx" #include "frmfmt.hxx" // SwFrmFmt #include "viewsh.hxx" @@ -254,7 +255,7 @@ void SwFlyCntPortion::Paint( const SwTxtPaintInfo &rInf ) const if( (GetFlyFrm()->IsCompletePaint() || GetFlyFrm()->Frm().IsOver( aRepaintRect )) && SwFlyFrm::IsPaint( (SdrObject*)GetFlyFrm()->GetVirtDrawObj(), - GetFlyFrm()->GetShell() )) + GetFlyFrm()->getRootFrm()->GetCurrShell() )) { SwRect aRect( GetFlyFrm()->Frm() ); if( !GetFlyFrm()->IsCompletePaint() ) diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx index ff90b8a3ed5c..5ba32f89d0b0 100644 --- a/sw/source/core/text/porlay.cxx +++ b/sw/source/core/text/porlay.cxx @@ -59,11 +59,8 @@ #include <fchrfmt.hxx> #include <docary.hxx> // SwRedlineTbl #include <redline.hxx> // SwRedline - -// --> FME 2004-06-08 #i12836# enhanced pdf export #include <section.hxx> -// <-- - +#include <switerator.hxx> #include <IDocumentRedlineAccess.hxx> #include <IDocumentSettingAccess.hxx> #include <IDocumentContentOperations.hxx> @@ -2241,15 +2238,12 @@ sal_uInt16 SwScriptInfo::ThaiJustify( const XubString& rTxt, sal_Int32* pKernArr SwScriptInfo* SwScriptInfo::GetScriptInfo( const SwTxtNode& rTNd, sal_Bool bAllowInvalid ) { - SwClientIter aClientIter( (SwTxtNode&)rTNd ); - SwClient* pLast = aClientIter.GoStart(); + SwIterator<SwTxtFrm,SwTxtNode> aIter( rTNd ); SwScriptInfo* pScriptInfo = 0; - while( pLast ) + for( SwTxtFrm* pLast = aIter.First(); pLast; pLast = aIter.Next() ) { - if ( pLast->ISA( SwTxtFrm ) ) - { - pScriptInfo = (SwScriptInfo*)((SwTxtFrm*)pLast)->GetScriptInfo(); + pScriptInfo = (SwScriptInfo*)pLast->GetScriptInfo(); if ( pScriptInfo ) { if ( !bAllowInvalid && STRING_LEN != pScriptInfo->GetInvalidity() ) @@ -2257,8 +2251,6 @@ SwScriptInfo* SwScriptInfo::GetScriptInfo( const SwTxtNode& rTNd, else break; } } - pLast = ++aClientIter; - } return pScriptInfo; } diff --git a/sw/source/core/text/porrst.cxx b/sw/source/core/text/porrst.cxx index 52acbe4e2e95..b3736dbb3b87 100644 --- a/sw/source/core/text/porrst.cxx +++ b/sw/source/core/text/porrst.cxx @@ -53,6 +53,7 @@ #include <redlnitr.hxx> // SwRedlineItr #include <porfly.hxx> // SwFlyPortion #include <atrhndl.hxx> +#include "rootfrm.hxx" #include <IDocumentRedlineAccess.hxx> #include <IDocumentSettingAccess.hxx> @@ -233,7 +234,7 @@ SwTwips SwTxtFrm::EmptyHeight() const SwFont *pFnt; const SwTxtNode& rTxtNode = *GetTxtNode(); const IDocumentSettingAccess* pIDSA = rTxtNode.getIDocumentSettingAccess(); - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( rTxtNode.HasSwAttrSet() ) { const SwAttrSet *pAttrSet = &( rTxtNode.GetSwAttrSet() ); @@ -250,8 +251,8 @@ SwTwips SwTxtFrm::EmptyHeight() const pFnt->SetVertical( 2700 ); OutputDevice* pOut = pSh ? pSh->GetOut() : 0; - if ( !pOut || !pIDSA->get(IDocumentSettingAccess::BROWSE_MODE) || - ( pSh->GetViewOptions()->IsPrtFormat() ) ) + if ( !pOut || !pSh->GetViewOptions()->getBrowseMode() || + pSh->GetViewOptions()->IsPrtFormat() ) { pOut = rTxtNode.getIDocumentDeviceAccess()->getReferenceDevice(true); } @@ -393,13 +394,13 @@ sal_Bool SwTxtFrm::FillRegister( SwTwips& rRegStart, KSHORT& rRegDiff ) } else { - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); SwFontAccess aFontAccess( pFmt, pSh ); SwFont aFnt( *aFontAccess.Get()->GetFont() ); OutputDevice *pOut = 0; - if( !GetTxtNode()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) || - (pSh && pSh->GetViewOptions()->IsPrtFormat()) ) + if( !pSh || !pSh->GetViewOptions()->getBrowseMode() || + pSh->GetViewOptions()->IsPrtFormat() ) pOut = GetTxtNode()->getIDocumentDeviceAccess()->getReferenceDevice( true ); if( pSh && !pOut ) diff --git a/sw/source/core/text/redlnitr.cxx b/sw/source/core/text/redlnitr.cxx index 2de77f4f9d21..cf364b5e2e1d 100644 --- a/sw/source/core/text/redlnitr.cxx +++ b/sw/source/core/text/redlnitr.cxx @@ -64,8 +64,8 @@ using namespace ::com::sun::star; void SwAttrIter::CtorInitAttrIter( SwTxtNode& rTxtNode, SwScriptInfo& rScrInf, SwTxtFrm* pFrm ) { // Beim HTML-Import kann es vorkommen, dass kein Layout existiert. - SwRootFrm* pRootFrm = rTxtNode.getIDocumentLayoutAccess()->GetRootFrm(); - pShell = pRootFrm ? pRootFrm->GetShell() : 0; + SwRootFrm* pRootFrm = rTxtNode.getIDocumentLayoutAccess()->GetCurrentLayout(); + pShell = pRootFrm ? pRootFrm->GetCurrShell() : 0; //swmod 080218 pScriptInfo = &rScrInf; diff --git a/sw/source/core/text/txtdrop.cxx b/sw/source/core/text/txtdrop.cxx index 19d888153542..623019163396 100644 --- a/sw/source/core/text/txtdrop.cxx +++ b/sw/source/core/text/txtdrop.cxx @@ -43,13 +43,12 @@ #include <txtpaint.hxx> // SwSaveClip #include <blink.hxx> // pBlink #include <breakit.hxx> -#ifndef _COM_SUN_STAR_I18N_SCRIPTTYPE_HDL_ #include <com/sun/star/i18n/ScriptType.hdl> -#endif #include <com/sun/star/i18n/WordType.hpp> #include <editeng/langitem.hxx> #include <charatr.hxx> #include <editeng/fhgtitem.hxx> +#include <switerator.hxx> using namespace ::com::sun::star::i18n; using namespace ::com::sun::star; @@ -228,21 +227,19 @@ bool SwTxtNode::GetDropSize(int& rFontHeight, int& rDropHeight, int& rDropDescen } // get text frame - SwClientIter aClientIter( (SwTxtNode&)*this ); - SwClient* pLastFrm = aClientIter.GoStart(); - - while( pLastFrm ) + SwIterator<SwTxtFrm,SwTxtNode> aIter( *this ); + for( SwTxtFrm* pLastFrm = aIter.First(); pLastFrm; pLastFrm = aIter.Next() ) { // Only (master-) text frames can have a drop cap. - if ( pLastFrm->ISA( SwTxtFrm ) && !((SwTxtFrm*)pLastFrm)->IsFollow() ) + if ( !pLastFrm->IsFollow() ) { - if( !((SwTxtFrm*)pLastFrm)->HasPara() ) - ((SwTxtFrm*)pLastFrm)->GetFormatted(); + if( !pLastFrm->HasPara() ) + pLastFrm->GetFormatted(); - if ( !((SwTxtFrm*)pLastFrm)->IsEmpty() ) + if ( !pLastFrm->IsEmpty() ) { - const SwParaPortion* pPara = ((SwTxtFrm*)pLastFrm)->GetPara(); + const SwParaPortion* pPara = pLastFrm->GetPara(); ASSERT( pPara, "GetDropSize could not find the ParaPortion, I'll guess the drop cap size" ) if ( pPara ) @@ -265,7 +262,6 @@ bool SwTxtNode::GetDropSize(int& rFontHeight, int& rDropHeight, int& rDropDescen } break; } - pLastFrm = ++aClientIter; } if (rFontHeight==0 && rDropHeight==0 && rDropDescent==0) diff --git a/sw/source/core/text/txtfld.cxx b/sw/source/core/text/txtfld.cxx index b91436a72832..e917ca738d9d 100644 --- a/sw/source/core/text/txtfld.cxx +++ b/sw/source/core/text/txtfld.cxx @@ -170,7 +170,7 @@ SwExpandPortion *SwTxtFormatter::NewFldPortion( SwTxtFormatInfo &rInf, case RES_PAGENUMBERFLD: { - if( !bName && pSh && !pSh->Imp()->IsUpdateExpFlds() ) + if( !bName && pSh && pSh->GetLayout() && !pSh->Imp()->IsUpdateExpFlds() )//swmod 080122 { SwPageNumberFieldType *pPageNr = (SwPageNumberFieldType *)pFld->GetTyp(); diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx index 68283e988ca1..a1ccd4b226b2 100644 --- a/sw/source/core/text/txtfly.cxx +++ b/sw/source/core/text/txtfly.cxx @@ -83,6 +83,7 @@ #ifdef DBG_UTIL #include "viewopt.hxx" // SwViewOptions, nur zum Testen (Test2) +#include "doc.hxx" #endif #ifdef VERT_DISTANCE @@ -962,7 +963,7 @@ sal_Bool SwTxtFly::DrawTextOpaque( SwDrawTextInfo &rInf ) if ( bOn && nCount > 0 ) // <-- { - MSHORT nHellId = pPage->GetShell()->getIDocumentDrawModelAccess()->GetHellId(); + MSHORT nHellId = pPage->getRootFrm()->GetCurrShell()->getIDocumentDrawModelAccess()->GetHellId(); for( MSHORT i = 0; i < nCount; ++i ) { // --> OD 2006-08-15 #i68520# @@ -1067,7 +1068,7 @@ void SwTxtFly::DrawFlyRect( OutputDevice* pOut, const SwRect &rRect, if ( bOn && nCount > 0 ) // <-- { - MSHORT nHellId = pPage->GetShell()->getIDocumentDrawModelAccess()->GetHellId(); + MSHORT nHellId = pPage->getRootFrm()->GetCurrShell()->getIDocumentDrawModelAccess()->GetHellId(); for( MSHORT i = 0; i < nCount; ++i ) { // --> OD 2006-08-15 #i68520# @@ -1106,7 +1107,7 @@ void SwTxtFly::DrawFlyRect( OutputDevice* pOut, const SwRect &rRect, SwRect aFly( pAnchoredObjTmp->GetObjRect() ); // <-- // OD 24.01.2003 #106593# - ::SwAlignRect( aFly, pPage->GetShell() ); + ::SwAlignRect( aFly, pPage->getRootFrm()->GetCurrShell() ); if( aFly.Width() > 0 && aFly.Height() > 0 ) aRegion -= aFly; } @@ -1804,11 +1805,11 @@ const SwRect SwContourCache::ContourRect( const SwFmt* pFmt, delete pPolyPolygon; // UPPER_LOWER_TEST #ifdef DBG_UTIL - const SwRootFrm* pTmpRootFrm = pFmt->getIDocumentLayoutAccess()->GetRootFrm(); - if( pTmpRootFrm->GetCurrShell() ) + const ViewShell* pTmpViewShell = pFmt->GetDoc()->GetCurrentViewShell(); + if( pTmpViewShell ) { - sal_Bool bT2 = pTmpRootFrm->GetCurrShell()->GetViewOptions()->IsTest2(); - sal_Bool bT6 = pTmpRootFrm->GetCurrShell()->GetViewOptions()->IsTest6(); + sal_Bool bT2 = pTmpViewShell->GetViewOptions()->IsTest2(); + sal_Bool bT6 = pTmpViewShell->GetViewOptions()->IsTest6(); if( bT2 || bT6 ) { if( bT2 ) diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx index 125f3f52908f..dbdf6bad8c9f 100644 --- a/sw/source/core/text/txtfrm.cxx +++ b/sw/source/core/text/txtfrm.cxx @@ -41,6 +41,7 @@ #include <swmodule.hxx> #include <SwSmartTagMgr.hxx> #include <doc.hxx> // GetDoc() +#include "rootfrm.hxx" #include <pagefrm.hxx> // InvalidateSpelling #include <rootfrm.hxx> #include <viewsh.hxx> // ViewShell @@ -73,21 +74,16 @@ #include <SwGrammarMarkUp.hxx> #include <lineinfo.hxx> #include <SwPortionHandler.hxx> -// OD 2004-01-15 #110582# #include <dcontact.hxx> -// OD 2004-05-24 #i28701# #include <sortedobjs.hxx> -// --> OD 2005-03-30 #???# #include <txtflcnt.hxx> // SwTxtFlyCnt #include <fmtflcnt.hxx> // SwFmtFlyCnt #include <fmtcntnt.hxx> // SwFmtCntnt -// <-- -// --> OD 2008-01-31 #newlistlevelattrs# #include <numrule.hxx> -// <-- #include <swtable.hxx> #include <fldupde.hxx> #include <IGrammarContact.hxx> +#include <switerator.hxx> #if OSL_DEBUG_LEVEL > 1 #include <txtpaint.hxx> // DbgRect @@ -353,8 +349,8 @@ void SwTxtFrm::InitCtor() /************************************************************************* * SwTxtFrm::SwTxtFrm() *************************************************************************/ -SwTxtFrm::SwTxtFrm(SwTxtNode * const pNode) - : SwCntntFrm(pNode) +SwTxtFrm::SwTxtFrm(SwTxtNode * const pNode, SwFrm* pSib ) + : SwCntntFrm( pNode, pSib ) { InitCtor(); } @@ -399,7 +395,7 @@ sal_Bool SwTxtFrm::IsHiddenNow() const const bool bHiddenCharsHidePara = GetTxtNode()->HasHiddenCharAttribute( true ); const bool bHiddenParaField = GetTxtNode()->HasHiddenParaField(); - const ViewShell* pVsh = GetShell(); + const ViewShell* pVsh = getRootFrm()->GetCurrShell(); if ( pVsh && ( bHiddenCharsHidePara || bHiddenParaField ) ) { @@ -568,7 +564,7 @@ void SwTxtFrm::HideAndShowObjects() // paragraph is visible, but can contain hidden text portion. // first we check if objects are allowed to be hidden: const SwTxtNode& rNode = *GetTxtNode(); - const ViewShell* pVsh = GetShell(); + const ViewShell* pVsh = getRootFrm()->GetCurrShell(); const bool bShouldBeHidden = !pVsh || !pVsh->GetWin() || !pVsh->GetViewOptions()->IsShowHiddenChar(); @@ -860,7 +856,7 @@ void lcl_SetWrong( SwTxtFrm& rFrm, xub_StrLen nPos, long nCnt, bool bMove ) pTxtNode->SetSmartTagDirty( true ); } - SwRootFrm *pRootFrm = rFrm.FindRootFrm(); + SwRootFrm *pRootFrm = rFrm.getRootFrm(); if (pRootFrm) { pRootFrm->SetNeedGrammarCheck( sal_True ); @@ -904,7 +900,7 @@ void lcl_ModifyOfst( SwTxtFrm* pFrm, xub_StrLen nPos, xub_StrLen nLen ) * SwTxtFrm::Modify() *************************************************************************/ -void SwTxtFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwTxtFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { const MSHORT nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; @@ -913,7 +909,7 @@ void SwTxtFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) if( IsInRange( aFrmFmtSetRange, nWhich ) || RES_FMT_CHG == nWhich ) { SwCntntFrm::Modify( pOld, pNew ); - if( nWhich == RES_FMT_CHG && GetShell() ) + if( nWhich == RES_FMT_CHG && getRootFrm()->GetCurrShell() ) { // Collection hat sich geaendert Prepare( PREP_CLEAR ); @@ -1028,9 +1024,10 @@ void SwTxtFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) } // --> OD 2010-02-16 #i104008# - if ( GetShell() ) + ViewShell* pViewSh = getRootFrm() ? getRootFrm()->GetCurrShell() : 0; + if ( pViewSh ) { - GetShell()->InvalidateAccessibleParaAttrs( *this ); + pViewSh->InvalidateAccessibleParaAttrs( *this ); } // <-- } @@ -1238,7 +1235,7 @@ void SwTxtFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) if( nCount ) { - if( GetShell() ) + if( getRootFrm()->GetCurrShell() ) { Prepare( PREP_CLEAR ); _InvalidatePrt(); @@ -1284,9 +1281,10 @@ void SwTxtFrm::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) } // --> OD 2009-01-06 #i88069# - if ( GetShell() ) + ViewShell* pViewSh = getRootFrm() ? getRootFrm()->GetCurrShell() : 0; + if ( pViewSh ) { - GetShell()->InvalidateAccessibleParaAttrs( *this ); + pViewSh->InvalidateAccessibleParaAttrs( *this ); } // <-- } @@ -2269,7 +2267,7 @@ void SwTxtFrm::_CalcHeightOfLastLine( const bool _bUseFont ) const SwTwips mnOldHeightOfLastLine( mnHeightOfLastLine ); // <-- // determine output device - ViewShell* pVsh = GetShell(); + ViewShell* pVsh = getRootFrm()->GetCurrShell(); ASSERT( pVsh, "<SwTxtFrm::_GetHeightOfLastLineForPropLineSpacing()> - no ViewShell" ); // --> OD 2007-07-02 #i78921# - make code robust, according to provided patch // There could be no <ViewShell> instance in the case of loading a binary @@ -2280,7 +2278,7 @@ void SwTxtFrm::_CalcHeightOfLastLine( const bool _bUseFont ) } OutputDevice* pOut = pVsh->GetOut(); const IDocumentSettingAccess* pIDSA = GetTxtNode()->getIDocumentSettingAccess(); - if ( !pIDSA->get(IDocumentSettingAccess::BROWSE_MODE) || + if ( !pVsh->GetViewOptions()->getBrowseMode() || pVsh->GetViewOptions()->IsPrtFormat() ) { pOut = GetTxtNode()->getIDocumentDeviceAccess()->getReferenceDevice( true ); @@ -2751,3 +2749,18 @@ void SwTxtFrm::CalcBaseOfstForFly() mnFlyAnchorOfst = nRet1 - nLeft; mnFlyAnchorOfstNoWrap = nRet2 - nLeft; } + +/* repaint all text frames of the given text node */ +void SwTxtFrm::repaintTextFrames( const SwTxtNode& rNode ) +{ + SwIterator<SwTxtFrm,SwTxtNode> aIter( rNode ); + for( const SwTxtFrm *pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) + { + SwRect aRec( pFrm->PaintArea() ); + const SwRootFrm *pRootFrm = pFrm->getRootFrm(); + ViewShell *pCurShell = pRootFrm ? pRootFrm->GetCurrShell() : NULL; + if( pCurShell ) + pCurShell->InvalidateWindows( aRec ); + } +} + diff --git a/sw/source/core/text/txtftn.cxx b/sw/source/core/text/txtftn.cxx index d6a0ce1dc6d0..9a1fde88724a 100644 --- a/sw/source/core/text/txtftn.cxx +++ b/sw/source/core/text/txtftn.cxx @@ -30,6 +30,7 @@ #include "viewsh.hxx" #include "doc.hxx" #include "pagefrm.hxx" +#include "rootfrm.hxx" #include "ndtxt.hxx" #include "txtatr.hxx" #include <SwPortionHandler.hxx> @@ -692,7 +693,7 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine ) { if( !pSrcFrm ) { - SwFtnFrm *pNew = new SwFtnFrm(pDoc->GetDfltFrmFmt(),this,pFtn); + SwFtnFrm *pNew = new SwFtnFrm(pDoc->GetDfltFrmFmt(),this,this,pFtn); SwNodeIndex aIdx( *pFtn->GetStartNode(), 1 ); ::_InsertCnt( pNew, pDoc, aIdx.GetIndex() ); GetNode()->getIDocumentLayoutAccess()->GetLayouter()->CollectEndnote( pNew ); @@ -757,7 +758,7 @@ void SwTxtFrm::ConnectFtn( SwTxtFtn *pFtn, const SwTwips nDeadLine ) pBoss->RearrangeFtns( nDeadLine, sal_False, pFtn ); ValidateBodyFrm(); ValidateFrm(); - ViewShell *pSh = GetShell(); + ViewShell *pSh = getRootFrm()->GetCurrShell(); if ( pSh && nHeight == (pCont->Frm().*fnRect->fnGetHeight)() ) //Damit uns nix durch die Lappen geht. pSh->InvalidateWindows( pCont->Frm() ); diff --git a/sw/source/core/text/txtio.cxx b/sw/source/core/text/txtio.cxx index 535c998b4cba..aea1f2b43b61 100644 --- a/sw/source/core/text/txtio.cxx +++ b/sw/source/core/text/txtio.cxx @@ -36,6 +36,7 @@ #include "errhdl.hxx" #include "txtcfg.hxx" #include "txtfrm.hxx" // IsDbg() +#include "rootfrm.hxx" #include "flyfrms.hxx" #include "inftxt.hxx" #include "porexp.hxx" @@ -283,8 +284,8 @@ SvStream &operator<<( SvStream &rOs, const SwpHints & ) //$ ostream sal_Bool IsDbg( const SwTxtFrm *pFrm ) { - if( pFrm && pFrm->GetShell() ) - return pFrm->GetShell()->GetViewOptions()->IsTest4(); + if( pFrm && pFrm->getRootFrm()->GetCurrShell() ) + return pFrm->getRootFrm()->GetCurrShell()->GetViewOptions()->IsTest4(); else return sal_False; } diff --git a/sw/source/core/tox/tox.cxx b/sw/source/core/tox/tox.cxx index 47c03a776797..152432de4d75 100644 --- a/sw/source/core/tox/tox.cxx +++ b/sw/source/core/tox/tox.cxx @@ -28,9 +28,6 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" - - - #include <tools/resid.hxx> #include <hintids.hxx> #include <swtypes.hxx> @@ -39,22 +36,18 @@ #include <ndtxt.hxx> #include <txttxmrk.hxx> #include <tox.hxx> -#ifndef _POOLFMT_HRC #include <poolfmt.hrc> -#endif #include <doc.hxx> #include <docary.hxx> #include <paratr.hxx> #include <editeng/tstpitem.hxx> #include <SwStyleNameMapper.hxx> #include <hints.hxx> // SwPtrMsgPoolItem - -// -> #i21237# #include <algorithm> #include <functional> +#include <switerator.hxx> using namespace std; -// <- #i21237# const sal_Char* SwForm::aFormEntry = "<E>"; const sal_Char* SwForm::aFormTab = "<T>"; @@ -81,9 +74,6 @@ SV_IMPL_PTRARR(SwTOXMarks, SwTOXMark*) TYPEINIT2( SwTOXMark, SfxPoolItem, SwClient ); // fuers rtti -/* -----------------23.09.99 13:59------------------- - - --------------------------------------------------*/ struct PatternIni { sal_uInt16 n1; @@ -126,14 +116,17 @@ const PatternIni aPatternIni[] = {AUTH_FIELD_AUTHOR, AUTH_FIELD_TITLE, AUTH_FIELD_YEAR, USHRT_MAX, USHRT_MAX}, //AUTH_FIELD_CUSTOM5, {USHRT_MAX, USHRT_MAX, USHRT_MAX, USHRT_MAX, USHRT_MAX} }; +<<<<<<< local +SwFormTokens lcl_GetAuthPattern(USHORT nTypeId) +======= /* -----------------23.09.99 13:58------------------- --------------------------------------------------*/ // -> #i21237# SwFormTokens lcl_GetAuthPattern(sal_uInt16 nTypeId) +>>>>>>> other { - SwFormTokens aRet; // #i21237# - + SwFormTokens aRet; PatternIni aIni = aPatternIni[nTypeId]; sal_uInt16 nVals[5]; @@ -199,7 +192,7 @@ SwTOXMark::SwTOXMark( const SwTOXType* pTyp ) SwTOXMark::SwTOXMark( const SwTOXMark& rCopy ) : SfxPoolItem( RES_TXTATR_TOXMARK ) - , SwModify(rCopy.pRegisteredIn) + , SwModify(rCopy.GetRegisteredInNonConst()) , aPrimaryKey( rCopy.aPrimaryKey ), aSecondaryKey( rCopy.aSecondaryKey ), aTextReading( rCopy.aTextReading ), @@ -219,6 +212,11 @@ SwTOXMark::~SwTOXMark() } +void SwTOXMark::RegisterToTOXType( SwTOXType& rMark ) +{ + rMark.Add(this); +} + int SwTOXMark::operator==( const SfxPoolItem& rAttr ) const { ASSERT( SfxPoolItem::operator==( rAttr ), "keine gleichen Attribute" ); @@ -231,9 +229,9 @@ SfxPoolItem* SwTOXMark::Clone( SfxItemPool* ) const return new SwTOXMark( *this ); } -void SwTOXMark::Modify(SfxPoolItem* pOld, SfxPoolItem* pNew) +void SwTOXMark::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew) { - SwModify::Modify(pOld, pNew); + NotifyClients(pOld, pNew); if (pOld && (RES_REMOVE_UNO_OBJECT == pOld->Which())) { // invalidate cached uno object SetXTOXMark(::com::sun::star::uno::Reference< @@ -245,7 +243,7 @@ void SwTOXMark::InvalidateTOXMark() { SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, &static_cast<SwModify&>(*this) ); // cast to base class! - Modify(&aMsgHint, &aMsgHint); + NotifyClients(&aMsgHint, &aMsgHint); } String SwTOXMark::GetText() const @@ -266,6 +264,18 @@ String SwTOXMark::GetText() const return aStr; } +void SwTOXMark::InsertTOXMarks( SwTOXMarks& aMarks, const SwTOXType& rType ) +{ + SwIterator<SwTOXMark,SwTOXType> aIter(rType); + SwTOXMark* pMark = aIter.First(); + while( pMark ) + { + if(pMark->GetTxtTOXMark()) + aMarks.C40_INSERT(SwTOXMark, pMark, aMarks.Count()); + pMark = aIter.Next(); + } +} + /*-------------------------------------------------------------------- Beschreibung: Typen von Verzeichnissen verwalten --------------------------------------------------------------------*/ @@ -528,11 +538,16 @@ SwTOXBase::SwTOXBase(const SwTOXType* pTyp, const SwForm& rForm, SwTOXBase::SwTOXBase( const SwTOXBase& rSource, SwDoc* pDoc ) - : SwClient( rSource.pRegisteredIn ) + : SwClient( rSource.GetRegisteredInNonConst() ) { CopyTOXBase( pDoc, rSource ); } +void SwTOXBase::RegisterToTOXType( SwTOXType& rType ) +{ + rType.Add( this ); +} + SwTOXBase& SwTOXBase::CopyTOXBase( SwDoc* pDoc, const SwTOXBase& rSource ) { SwTOXType* pType = (SwTOXType*)rSource.GetTOXType(); diff --git a/sw/source/core/tox/txmsrt.cxx b/sw/source/core/tox/txmsrt.cxx index 121c79848e2d..38b143db6825 100644 --- a/sw/source/core/tox/txmsrt.cxx +++ b/sw/source/core/tox/txmsrt.cxx @@ -181,7 +181,11 @@ SwTOXSortTabBase::SwTOXSortTabBase( TOXSortType nTyp, const SwCntntNode* pNd, { // dann die "Anker" (Body) Position holen. Point aPt; +<<<<<<< local + const SwCntntFrm* pFrm = pNd->getLayoutFrm( pNd->GetDoc()->GetCurrentLayout(), &aPt, 0, FALSE ); +======= const SwCntntFrm* pFrm = pNd->GetFrm( &aPt, 0, sal_False ); +>>>>>>> other if( pFrm ) { SwPosition aPos( *pNd ); diff --git a/sw/source/core/txtnode/SwGrammarContact.cxx b/sw/source/core/txtnode/SwGrammarContact.cxx index 5a444161a702..6997474e5128 100644 --- a/sw/source/core/txtnode/SwGrammarContact.cxx +++ b/sw/source/core/txtnode/SwGrammarContact.cxx @@ -38,9 +38,6 @@ #include <rootfrm.hxx> #include <viewsh.hxx> -extern void repaintTextFrames( SwModify& rModify ); - - /* SwGrammarContact This class is responsible for the delayed display of grammar checks when a paragraph is edited It's a client of the paragraph the cursor points to. @@ -58,7 +55,7 @@ class SwGrammarContact : public IGrammarContact, public SwClient Timer aTimer; SwGrammarMarkUp *mpProxyList; bool mbFinished; - SwTxtNode* getMyTxtNode() { return (SwTxtNode*)pRegisteredIn; } + SwTxtNode* getMyTxtNode() { return (SwTxtNode*)GetRegisteredIn(); } DECL_LINK( TimerRepaint, Timer * ); public: @@ -69,9 +66,9 @@ public: virtual void updateCursorPosition( const SwPosition& rNewPos ); virtual SwGrammarMarkUp* getGrammarCheck( SwTxtNode& rTxtNode, bool bCreate ); virtual void finishGrammarCheck( SwTxtNode& rTxtNode ); - +protected: // virtual function of SwClient - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); }; SwGrammarContact::SwGrammarContact() : mpProxyList(0), mbFinished( false ) @@ -85,11 +82,11 @@ IMPL_LINK( SwGrammarContact, TimerRepaint, Timer *, pTimer ) if( pTimer ) { pTimer->Stop(); - if( pRegisteredIn ) + if( GetRegisteredIn() ) { //Replace the old wrong list by the proxy list and repaint all frames getMyTxtNode()->SetGrammarCheck( mpProxyList, true ); mpProxyList = 0; - repaintTextFrames( *pRegisteredIn ); + SwTxtFrm::repaintTextFrames( *getMyTxtNode() ); } } return 0; @@ -107,9 +104,9 @@ void SwGrammarContact::updateCursorPosition( const SwPosition& rNewPos ) if( mpProxyList ) { // replace old list by the proxy list and repaint getMyTxtNode()->SetGrammarCheck( mpProxyList, true ); - repaintTextFrames( *pRegisteredIn ); + SwTxtFrm::repaintTextFrames( *getMyTxtNode() ); } - pRegisteredIn->Remove( this ); // good bye old paragraph + GetRegisteredInNonConst()->Remove( this ); // good bye old paragraph mpProxyList = 0; } if( pTxtNode ) @@ -158,16 +155,16 @@ SwGrammarMarkUp* SwGrammarContact::getGrammarCheck( SwTxtNode& rTxtNode, bool bC return pRet; } -void SwGrammarContact::Modify( SfxPoolItem *pOld, SfxPoolItem * ) +void SwGrammarContact::Modify( const SfxPoolItem* pOld, const SfxPoolItem * ) { if( !pOld || pOld->Which() != RES_OBJECTDYING ) return; SwPtrMsgPoolItem *pDead = (SwPtrMsgPoolItem *)pOld; - if( pDead->pObject == pRegisteredIn ) + if( pDead->pObject == GetRegisteredIn() ) { // if my current paragraph dies, I throw the proxy list away aTimer.Stop(); - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); delete mpProxyList; mpProxyList = 0; } @@ -175,8 +172,8 @@ void SwGrammarContact::Modify( SfxPoolItem *pOld, SfxPoolItem * ) void SwGrammarContact::finishGrammarCheck( SwTxtNode& rTxtNode ) { - if( &rTxtNode != pRegisteredIn ) // not my paragraph - repaintTextFrames( rTxtNode ); // can be repainted directly + if( &rTxtNode != GetRegisteredIn() ) // not my paragraph + SwTxtFrm::repaintTextFrames( rTxtNode ); // can be repainted directly else { if( mpProxyList ) @@ -187,7 +184,7 @@ void SwGrammarContact::finishGrammarCheck( SwTxtNode& rTxtNode ) else if( getMyTxtNode()->GetGrammarCheck() ) { // all grammar problems seems to be gone, no delay needed getMyTxtNode()->SetGrammarCheck( 0, true ); - repaintTextFrames( *pRegisteredIn ); + SwTxtFrm::repaintTextFrames( *getMyTxtNode() ); } } } @@ -197,21 +194,6 @@ IGrammarContact* createGrammarContact() return new SwGrammarContact(); } -/* repaint all text frames of the given text node */ -void repaintTextFrames( SwModify& rModify ) -{ - SwClientIter aIter( rModify ); - for( const SwTxtFrm *pFrm = (const SwTxtFrm*)aIter.First( TYPE(SwTxtFrm) ); - pFrm; pFrm = (const SwTxtFrm*)aIter.Next() ) - { - SwRect aRec( pFrm->PaintArea() ); - const SwRootFrm *pRootFrm = pFrm->FindRootFrm(); - ViewShell *pCurShell = pRootFrm ? pRootFrm->GetCurrShell() : NULL; - if( pCurShell ) - pCurShell->InvalidateWindows( aRec ); - } -} - void finishGrammarCheck( SwTxtNode& rTxtNode ) { IGrammarContact* pGrammarContact = getGrammarContact( rTxtNode ); diff --git a/sw/source/core/txtnode/atrfld.cxx b/sw/source/core/txtnode/atrfld.cxx index b4119504f71f..3b487dde6910 100644 --- a/sw/source/core/txtnode/atrfld.cxx +++ b/sw/source/core/txtnode/atrfld.cxx @@ -43,7 +43,7 @@ #include "calc.hxx" // Update fuer UserFields #include "hints.hxx" #include <IDocumentFieldsAccess.hxx> - +#include <fieldhint.hxx> #include <svl/smplhint.hxx> TYPEINIT3( SwFmtFld, SfxPoolItem, SwClient,SfxBroadcaster) @@ -126,6 +126,12 @@ SwFmtFld::~SwFmtFld() } } +void SwFmtFld::RegisterToFieldType( SwFieldType& rType ) +{ + rType.Add(this); +} + + // #111840# void SwFmtFld::SetFld(SwField * _pField) { @@ -153,7 +159,30 @@ SfxPoolItem* SwFmtFld::Clone( SfxItemPool* ) const return new SwFmtFld( *this ); } -void SwFmtFld::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwFmtFld::SwClientNotify( const SwModify&, const SfxHint& rHint ) +{ + if( !pTxtAttr ) + return; + + const SwFieldHint* pHint = dynamic_cast<const SwFieldHint*>( &rHint ); + if ( pHint ) + { + // replace field content by text + SwPaM* pPaM = pHint->GetPaM(); + SwDoc* pDoc = pPaM->GetDoc(); + const SwTxtNode& rTxtNode = pTxtAttr->GetTxtNode(); + pPaM->GetPoint()->nNode = rTxtNode; + pPaM->GetPoint()->nContent.Assign( (SwTxtNode*)&rTxtNode, *pTxtAttr->GetStart() ); + + String const aEntry( GetFld()->ExpandField( pDoc->IsClipBoard() ) ); + pPaM->SetMark(); + pPaM->Move( fnMoveForward ); + pDoc->DeleteRange( *pPaM ); + pDoc->InsertString( *pPaM, aEntry ); + } +} + +void SwFmtFld::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { if( !pTxtAttr ) return; @@ -171,7 +200,7 @@ void SwFmtFld::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) case RES_TXTATR_FLDCHG: // "Farbe hat sich geaendert !" // this, this fuer "nur Painten" - pTxtNd->Modify( this, this ); + pTxtNd->ModifyNotification( this, this ); return; case RES_REFMARKFLD_UPDATE: // GetReferenz-Felder aktualisieren @@ -185,12 +214,12 @@ void SwFmtFld::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) break; case RES_DOCPOS_UPDATE: // Je nach DocPos aktualisieren (SwTxtFrm::Modify()) - pTxtNd->Modify( pNew, this ); + pTxtNd->ModifyNotification( pNew, this ); return; case RES_ATTRSET_CHG: case RES_FMT_CHG: - pTxtNd->Modify( pOld, pNew ); + pTxtNd->ModifyNotification( pOld, pNew ); return; default: break; @@ -206,7 +235,7 @@ void SwFmtFld::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) case RES_DBNUMSETFLD: case RES_DBNEXTSETFLD: case RES_DBNAMEFLD: - pTxtNd->Modify( 0, pNew); + pTxtNd->ModifyNotification( 0, pNew); return; } @@ -314,7 +343,7 @@ void SwTxtFld::Expand() const // aenderung an die Frames posten if( m_pTxtNode->CalcHiddenParaField() ) { - m_pTxtNode->Modify( 0, 0 ); + m_pTxtNode->ModifyNotification( 0, 0 ); } return; } @@ -323,7 +352,7 @@ void SwTxtFld::Expand() const m_aExpand = aNewExpand; // 0, this for formatting - m_pTxtNode->Modify( 0, const_cast<SwFmtFld*>( &GetFld() ) ); + m_pTxtNode->ModifyNotification( 0, const_cast<SwFmtFld*>( &GetFld() ) ); } /************************************************************************* @@ -393,7 +422,7 @@ void SwTxtFld::NotifyContentChange(SwFmtFld& rFmtFld) //if not in undo section notify the change if (m_pTxtNode && m_pTxtNode->GetNodes().IsDocNodes()) { - m_pTxtNode->Modify(0, &rFmtFld); + m_pTxtNode->ModifyNotification(0, &rFmtFld); } } diff --git a/sw/source/core/txtnode/atrflyin.cxx b/sw/source/core/txtnode/atrflyin.cxx index d3076e642ef5..dbcc5d06b8d1 100644 --- a/sw/source/core/txtnode/atrflyin.cxx +++ b/sw/source/core/txtnode/atrflyin.cxx @@ -42,9 +42,8 @@ #include "swfont.hxx" #include "txtfrm.hxx" #include "flyfrms.hxx" -// --> OD 2004-11-09 #i26945# #include <objectformatter.hxx> -// <-- +#include <switerator.hxx> SwFmtFlyCnt::SwFmtFlyCnt( SwFrmFmt *pFrmFmt ) : SfxPoolItem( RES_TXTATR_FLYCNT ), @@ -232,17 +231,15 @@ SwFlyInCntFrm *SwTxtFlyCnt::_GetFlyFrm( const SwFrm *pCurrFrm ) return NULL; } - SwClientIter aIter( *GetFlyCnt().pFmt ); + SwIterator<SwFlyFrm,SwFmt> aIter( *GetFlyCnt().pFmt ); ASSERT( pCurrFrm->IsTxtFrm(), "SwTxtFlyCnt::_GetFlyFrm for TxtFrms only." ); - - if( aIter.GoStart() ) + SwFrm* pFrm = aIter.First(); + if ( pFrm ) { SwTxtFrm *pFirst = (SwTxtFrm*)pCurrFrm; while ( pFirst->IsFollow() ) pFirst = pFirst->FindMaster(); do - { SwFrm * pFrm = PTR_CAST( SwFrm, aIter() ); - if ( pFrm ) { SwTxtFrm *pTmp = pFirst; do @@ -257,8 +254,10 @@ SwFlyInCntFrm *SwTxtFlyCnt::_GetFlyFrm( const SwFrm *pCurrFrm ) } pTmp = pTmp->GetFollow(); } while ( pTmp ); - } - } while( aIter++ ); + + pFrm = aIter.Next(); + + } while( pFrm ); } // Wir haben keinen passenden FlyFrm gefunden, deswegen wird ein @@ -266,8 +265,9 @@ SwFlyInCntFrm *SwTxtFlyCnt::_GetFlyFrm( const SwFrm *pCurrFrm ) // Dabei wird eine sofortige Neuformatierung von pCurrFrm angestossen. // Die Rekursion wird durch den Lockmechanismus in SwTxtFrm::Format() // abgewuergt. - SwFlyInCntFrm *pFly = new SwFlyInCntFrm( (SwFlyFrmFmt*)pFrmFmt, (SwFrm*)pCurrFrm ); - ((SwFrm*)pCurrFrm)->AppendFly( pFly ); + SwFrm* pCurrFrame = const_cast< SwFrm* >(pCurrFrm); + SwFlyInCntFrm *pFly = new SwFlyInCntFrm( (SwFlyFrmFmt*)pFrmFmt, pCurrFrame, pCurrFrame ); + pCurrFrame->AppendFly( pFly ); pFly->RegistFlys(); // 7922: Wir muessen dafuer sorgen, dass der Inhalt des FlyInCnt diff --git a/sw/source/core/txtnode/atrftn.cxx b/sw/source/core/txtnode/atrftn.cxx index 5a4888da552e..ea961555bcf2 100644 --- a/sw/source/core/txtnode/atrftn.cxx +++ b/sw/source/core/txtnode/atrftn.cxx @@ -47,15 +47,12 @@ #include <ndindex.hxx> #include <fmtftntx.hxx> #include <section.hxx> +#include <switerator.hxx> /************************************************************************* |* |* class SwFmtFtn |* -|* Beschreibung -|* Ersterstellung JP 09.08.94 -|* Letzte Aenderung JP 08.08.94 -|* *************************************************************************/ @@ -92,7 +89,7 @@ void SwFmtFtn::SetEndNote( bool b ) { if ( GetTxtFtn() ) { - GetTxtFtn()->DelFrms(); + GetTxtFtn()->DelFrms(0); } m_bEndNote = b; } @@ -238,7 +235,7 @@ void SwTxtFtn::SetStartNode( const SwNodeIndex *pNewNode, sal_Bool bDelNode ) // Werden die Nodes nicht geloescht mussen sie bei den Seiten // abmeldet (Frms loeschen) werden, denn sonst bleiben sie // stehen (Undo loescht sie nicht!) - DelFrms(); + DelFrms( 0 ); } DELETEZ( m_pStartNode ); @@ -272,7 +269,7 @@ void SwTxtFtn::SetNumber( const sal_uInt16 nNewNum, const XubString* pStr ) ASSERT( m_pTxtNode, "SwTxtFtn: where is my TxtNode?" ); SwNodes &rNodes = m_pTxtNode->GetDoc()->GetNodes(); - m_pTxtNode->Modify( 0, &rFtn ); + m_pTxtNode->ModifyNotification( 0, &rFtn ); if ( m_pStartNode ) { // must iterate over all TxtNodes because of footnotes on other pages @@ -283,7 +280,7 @@ void SwTxtFtn::SetNumber( const sal_uInt16 nNewNum, const XubString* pStr ) { // Es koennen ja auch Grafiken in der Fussnote stehen ... if( ( pNd = rNodes[ nSttIdx ] )->IsTxtNode() ) - ((SwTxtNode*)pNd)->Modify( 0, &rFtn ); + ((SwTxtNode*)pNd)->ModifyNotification( 0, &rFtn ); } } } @@ -362,19 +359,25 @@ void SwTxtFtn::MakeNewTextSection( SwNodes& rNodes ) } -void SwTxtFtn::DelFrms() +void SwTxtFtn::DelFrms( const SwFrm* pSib ) { // delete the FtnFrames from the pages ASSERT( m_pTxtNode, "SwTxtFtn: where is my TxtNode?" ); if ( !m_pTxtNode ) return; +<<<<<<< local + const SwRootFrm* pRoot = pSib ? pSib->getRootFrm() : 0; + BOOL bFrmFnd = FALSE; +======= sal_Bool bFrmFnd = sal_False; +>>>>>>> other { - SwClientIter aIter( *m_pTxtNode ); - for( SwCntntFrm* pFnd = (SwCntntFrm*)aIter.First( TYPE( SwCntntFrm )); - pFnd; pFnd = (SwCntntFrm*)aIter.Next() ) + SwIterator<SwCntntFrm,SwTxtNode> aIter( *m_pTxtNode ); + for( SwCntntFrm* pFnd = aIter.First(); pFnd; pFnd = aIter.Next() ) { + if( pRoot != pFnd->getRootFrm() && pRoot ) + continue; SwPageFrm* pPage = pFnd->FindPageFrm(); if( pPage ) { @@ -391,10 +394,11 @@ void SwTxtFtn::DelFrms() SwCntntNode* pCNd = m_pTxtNode->GetNodes().GoNext( &aIdx ); if( pCNd ) { - SwClientIter aIter( *pCNd ); - for( SwCntntFrm* pFnd = (SwCntntFrm*)aIter.First( TYPE( SwCntntFrm )); - pFnd; pFnd = (SwCntntFrm*)aIter.Next() ) + SwIterator<SwCntntFrm,SwCntntNode> aIter( *pCNd ); + for( SwCntntFrm* pFnd = aIter.First(); pFnd; pFnd = aIter.Next() ) { + if( pRoot != pFnd->getRootFrm() && pRoot ) + continue; SwPageFrm* pPage = pFnd->FindPageFrm(); SwFrm *pFrm = pFnd->GetUpper(); diff --git a/sw/source/core/txtnode/fmtatr2.cxx b/sw/source/core/txtnode/fmtatr2.cxx index 236a0bab3d72..435b34f3957d 100644 --- a/sw/source/core/txtnode/fmtatr2.cxx +++ b/sw/source/core/txtnode/fmtatr2.cxx @@ -114,10 +114,10 @@ SfxPoolItem* SwFmtCharFmt::Clone( SfxItemPool* ) const // weiterleiten an das TextAttribut -void SwFmtCharFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwFmtCharFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { if( pTxtAttr ) - pTxtAttr->Modify( pOld, pNew ); + pTxtAttr->ModifyNotification( pOld, pNew ); } @@ -657,7 +657,7 @@ void SwFmtMeta::NotifyChangeTxtNode(SwTxtNode *const pTxtNode) { SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, &static_cast<SwModify&>(*m_pMeta) ); // cast to base class! - m_pMeta->Modify(&aMsgHint, &aMsgHint); + m_pMeta->ModifyNotification(&aMsgHint, &aMsgHint); } else { // do not call Modify, that would call SwXMeta::Modify! @@ -737,15 +737,15 @@ void Meta::NotifyChangeTxtNode() } else if (!pTxtNode && GetRegisteredIn()) { - const_cast<SwModify *>(GetRegisteredIn())->Remove(this); + GetRegisteredInNonConst()->Remove(this); } } // SwClient -void Meta::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void Meta::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew ) { NotifyChangeTxtNode(); - SwModify::Modify(pOld, pNew); + NotifyClients(pOld, pNew); if (pOld && (RES_REMOVE_UNO_OBJECT == pOld->Which())) { // invalidate cached uno object SetXMeta(uno::Reference<rdf::XMetadatable>(0)); diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx index 755e8bf1026e..3bd6f8594c1c 100644 --- a/sw/source/core/txtnode/fntcache.cxx +++ b/sw/source/core/txtnode/fntcache.cxx @@ -417,7 +417,7 @@ sal_uInt16 SwFntObj::GetFontLeading( const ViewShell *pSh, const OutputDevice& r const IDocumentSettingAccess& rIDSA = *pSh->getIDocumentSettingAccess(); const bool bBrowse = ( pSh->GetWin() && - rIDSA.get(IDocumentSettingAccess::BROWSE_MODE) && + pSh->GetViewOptions()->getBrowseMode() && !pSh->GetViewOptions()->IsPrtFormat() ); if ( !bBrowse && rIDSA.get(IDocumentSettingAccess::ADD_EXT_LEADING) ) @@ -459,7 +459,7 @@ void SwFntObj::CreateScrFont( const ViewShell& rSh, const OutputDevice& rOut ) OutputDevice* pPrt = &rSh.GetRefDev(); if( !rSh.GetWin() || - !rSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) || + !rSh.GetViewOptions()->getBrowseMode() || rSh.GetViewOptions()->IsPrtFormat() ) { // After CreatePrtFont pPrtFont is the font which is actually used @@ -832,13 +832,17 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf ) OutputDevice& rRefDev = rInf.GetShell()->GetRefDev(); OutputDevice* pWin = rInf.GetShell()->GetWin(); - const IDocumentSettingAccess* pIDSA = rInf.GetShell()->getIDocumentSettingAccess(); // true if pOut is the printer and the printer has been used for formatting const sal_Bool bPrt = OUTDEV_PRINTER == rInf.GetOut().GetOutDevType() && OUTDEV_PRINTER == rRefDev.GetOutDevType(); +<<<<<<< local + const BOOL bBrowse = ( pWin && + rInf.GetShell()->GetViewOptions()->getBrowseMode() && +======= const sal_Bool bBrowse = ( pWin && pIDSA->get(IDocumentSettingAccess::BROWSE_MODE) && +>>>>>>> other !rInf.GetShell()->GetViewOptions()->IsPrtFormat() && !rInf.GetBullet() && ( rInf.GetSpace() || !rInf.GetKern() ) && @@ -876,7 +880,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf ) const sal_Bool bNoAdjust = bPrt || ( pWin && - pIDSA->get(IDocumentSettingAccess::BROWSE_MODE) && + rInf.GetShell()->GetViewOptions()->getBrowseMode() && !rInf.GetShell()->GetViewOptions()->IsPrtFormat() ); if ( OUTDEV_PRINTER == rInf.GetOut().GetOutDevType() ) diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 9a2767977d84..3e0ecc88c9ca 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -34,9 +34,7 @@ #include <editeng/brkitem.hxx> #include <editeng/escpitem.hxx> #include <editeng/lrspitem.hxx> -// --> OD 2008-01-17 #newlistlevelattrs# #include <editeng/tstpitem.hxx> -// <-- #include <svl/urihelper.hxx> #ifndef _SVSTDARR_HXX #define _SVSTDARR_ULONGS @@ -88,17 +86,14 @@ #include <istyleaccess.hxx> #include <SwStyleNameMapper.hxx> #include <numrule.hxx> - -//--> #outlinelevel added by zhaojianwei #include <svl/intitem.hxx> -//<--end #include <swtable.hxx> #include <docsh.hxx> #include <SwNodeNum.hxx> -// --> OD 2008-02-25 #refactorlists# #include <svl/intitem.hxx> #include <list.hxx> -// <-- +#include <switerator.hxx> +#include <attrhint.hxx> using namespace ::com::sun::star; @@ -134,26 +129,12 @@ SwTxtNode *SwNodes::MakeTxtNode( const SwNodeIndex & rWhere, // --> OD 2005-11-03 #125329# // call method <UpdateOutlineNode(..)> only for the document nodes array if ( IsDocNodes() ) - { - //if ( pColl && NO_NUMBERING != pColl->GetOutlineLevel() ) //#outline level,removed by zhaojianwei - //{ - // UpdateOutlineNode( *pNode, NO_NUMBERING, pColl->GetOutlineLevel() ); - //} -// if ( pColl && 0 != pColl->GetAttrOutlineLevel() )//#outline level,added by zhaojianwei -// { -// UpdateOutlineNode( *pNode, 0, pColl->GetAttrOutlineLevel() ); -// }//<--end -// else - { - UpdateOutlineNode(*pNode); - } - } - // <-- + UpdateOutlineNode(*pNode); //Wenn es noch kein Layout gibt oder in einer versteckten Section // stehen, brauchen wir uns um das MakeFrms nicht bemuehen. const SwSectionNode* pSectNd; - if( !GetDoc()->GetRootFrm() || + if( !GetDoc()->GetCurrentViewShell() || //swmod 071108//swmod 071225 ( 0 != (pSectNd = pNode->FindSectionNode()) && pSectNd->GetSection().IsHiddenFlag() )) return pNode; @@ -305,9 +286,9 @@ SwTxtNode::~SwTxtNode() InitSwParaStatistics( false ); } -SwCntntFrm *SwTxtNode::MakeFrm() +SwCntntFrm *SwTxtNode::MakeFrm( SwFrm* pSib ) { - SwCntntFrm *pFrm = new SwTxtFrm(this); + SwCntntFrm *pFrm = new SwTxtFrm( this, pSib ); return pFrm; } @@ -325,7 +306,7 @@ xub_StrLen SwTxtNode::Len() const void lcl_ChangeFtnRef( SwTxtNode &rNode ) { SwpHints *pSwpHints = rNode.GetpSwpHints(); - if( pSwpHints && rNode.GetDoc()->GetRootFrm() ) + if( pSwpHints && rNode.GetDoc()->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { SwTxtAttr* pHt; SwCntntFrm* pFrm = NULL; @@ -340,8 +321,7 @@ void lcl_ChangeFtnRef( SwTxtNode &rNode ) { if( !pFrm ) { - SwClientIter aNew( rNode ); - pFrm = (SwCntntFrm*)aNew.First( TYPE(SwCntntFrm) ); + pFrm = SwIterator<SwCntntFrm,SwTxtNode>::FirstElement( rNode ); if( !pFrm ) return; } @@ -354,11 +334,12 @@ void lcl_ChangeFtnRef( SwTxtNode &rNode ) GetNodes().GoNextSection( &aIdx, sal_True, sal_False ); if ( !pNd ) continue; - SwClientIter aIter( *pNd ); - SwCntntFrm* pCntnt = (SwCntntFrm*)aIter.First(TYPE(SwCntntFrm)); + + SwIterator<SwCntntFrm,SwCntntNode> aIter( *pNd ); + SwCntntFrm* pCntnt = aIter.First(); if( pCntnt ) { - ASSERT( pCntnt->FindRootFrm() == pFrm->FindRootFrm(), + ASSERT( pCntnt->getRootFrm() == pFrm->getRootFrm(), "lcl_ChangeFtnRef: Layout double?" ); SwFtnFrm *pFtn = pCntnt->FindFtnFrm(); if( pFtn && pFtn->GetAttr() == pAttr ) @@ -375,7 +356,7 @@ void lcl_ChangeFtnRef( SwTxtNode &rNode ) } } #ifdef DBG_UTIL - while( 0 != (pCntnt = (SwCntntFrm*)aIter.Next()) ) + while( 0 != (pCntnt = aIter.Next()) ) { SwFtnFrm *pDbgFtn = pCntnt->FindFtnFrm(); ASSERT( !pDbgFtn || pDbgFtn->GetRef() == pFrm, @@ -518,21 +499,12 @@ SwCntntNode *SwTxtNode::SplitCntntNode( const SwPosition &rPos ) } - SwClientIter aIter( *this ); - SwClient* pLastFrm = aIter.GoStart(); - if( pLastFrm ) + SwIterator<SwCntntFrm,SwTxtNode> aIter( *this ); + for( SwCntntFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { - do - { SwCntntFrm *pFrm = PTR_CAST( SwCntntFrm, pLastFrm ); - if ( pFrm ) - { - pNode->Add( pFrm ); - if( pFrm->IsTxtFrm() && !pFrm->IsFollow() && - ((SwTxtFrm*)pFrm)->GetOfst() ) - ((SwTxtFrm*)pFrm)->SetOfst( 0 ); - } - pLastFrm = aIter++; - } while ( pLastFrm ); + pFrm->RegisterToNode( *pNode ); + if( pFrm->IsTxtFrm() && !pFrm->IsFollow() && ((SwTxtFrm*)pFrm)->GetOfst() ) + ((SwTxtFrm*)pFrm)->SetOfst( 0 ); } if ( IsInCache() ) @@ -543,24 +515,24 @@ SwCntntNode *SwTxtNode::SplitCntntNode( const SwPosition &rPos ) UnlockModify(); // Benachrichtigungen wieder freischalten - const SwRootFrm * const pRootFrm = pNode->GetDoc()->GetRootFrm(); // If there is an accessible layout we must call modify even // with length zero, because we have to notify about the changed // text node. + const SwRootFrm *pRootFrm; if ( (nTxtLen != nSplitPos) || - ( pRootFrm && pRootFrm->IsAnyShellAccessible() ) ) - + ( (pRootFrm = pNode->GetDoc()->GetCurrentLayout()) != 0 && + pRootFrm->IsAnyShellAccessible() ) ) //swmod 080218 { // dann sage den Frames noch, das am Ende etwas "geloescht" wurde if( 1 == nTxtLen - nSplitPos ) { SwDelChr aHint( nSplitPos ); - pNode->SwModify::Modify( 0, &aHint ); + pNode->NotifyClients( 0, &aHint ); } else { SwDelTxt aHint( nSplitPos, nTxtLen - nSplitPos ); - pNode->SwModify::Modify( 0, &aHint ); + pNode->NotifyClients( 0, &aHint ); } } if ( HasHints() ) @@ -643,7 +615,7 @@ SwCntntNode *SwTxtNode::SplitCntntNode( const SwPosition &rPos ) if( GetDepends() && SFX_ITEM_SET == pNode->GetSwAttrSet(). GetItemState( RES_PAGEDESC, sal_True, &pItem ) ) { - pNode->Modify( (SfxPoolItem*)pItem, (SfxPoolItem*)pItem ); + pNode->ModifyNotification( (SfxPoolItem*)pItem, (SfxPoolItem*)pItem ); } } return pNode; @@ -1506,7 +1478,7 @@ void SwTxtNode::CopyAttr( SwTxtNode *pDest, const xub_StrLen nTxtStartIdx, { // Frames benachrichtigen, sonst verschwinden die Ftn-Nummern SwUpdateAttr aHint( nOldPos, nOldPos, 0 ); - pDest->Modify( 0, &aHint ); + pDest->ModifyNotification( 0, &aHint ); } } @@ -1866,7 +1838,7 @@ void SwTxtNode::InsertText( const XubString & rStr, const SwIndex & rIdx, if ( GetDepends() ) { SwInsTxt aHint( aPos, nLen ); - SwModify::Modify( 0, &aHint ); + NotifyClients( 0, &aHint ); } // By inserting a character, the hidden flags @@ -2260,9 +2232,9 @@ void SwTxtNode::CutImpl( SwTxtNode * const pDest, const SwIndex & rDestStart, // Frames benachrichtigen; SwInsTxt aInsHint( nDestStart, nLen ); - pDest->Modify( 0, &aInsHint ); + pDest->ModifyNotification( 0, &aInsHint ); SwDelTxt aDelHint( nTxtStartIdx, nLen ); - Modify( 0, &aDelHint ); + ModifyNotification( 0, &aDelHint ); } @@ -2357,12 +2329,12 @@ void SwTxtNode::EraseText(const SwIndex &rIdx, const xub_StrLen nCount, if( 1 == nCnt ) { SwDelChr aHint( nStartIdx ); - SwModify::Modify( 0, &aHint ); + NotifyClients( 0, &aHint ); } else { SwDelTxt aHint( nStartIdx, nCnt ); - SwModify::Modify( 0, &aHint ); + NotifyClients( 0, &aHint ); } ASSERT(rIdx.GetIndex() == nStartIdx, "huh? start index has changed?"); @@ -2422,9 +2394,9 @@ void SwTxtNode::GCAttr() { //TxtFrm's reagieren auf aHint, andere auf aNew SwUpdateAttr aHint( nMin, nMax, 0 ); - SwModify::Modify( 0, &aHint ); + NotifyClients( 0, &aHint ); SwFmtChg aNew( GetTxtColl() ); - SwModify::Modify( 0, &aNew ); + NotifyClients( 0, &aNew ); } } @@ -2578,7 +2550,7 @@ void SwTxtNode::NumRuleChgd() // Important note: { SvxLRSpaceItem& rLR = (SvxLRSpaceItem&)GetSwAttrSet().GetLRSpace(); - SwModify::Modify( &rLR, &rLR ); + NotifyClients( &rLR, &rLR ); } } @@ -3476,10 +3448,10 @@ void SwTxtNode::ReplaceText( const SwIndex& rStart, const xub_StrLen nDelLen, SetIgnoreDontExpand( bOldExpFlg ); SwDelTxt aDelHint( nStartPos, nDelLen ); - SwModify::Modify( 0, &aDelHint ); + NotifyClients( 0, &aDelHint ); SwInsTxt aHint( nStartPos, rText.Len() ); - SwModify::Modify( 0, &aHint ); + NotifyClients( 0, &aHint ); } // --> OD 2008-03-27 #refactorlists# @@ -3705,7 +3677,7 @@ namespace { } // <-- -void SwTxtNode::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) +void SwTxtNode::Modify( const SfxPoolItem* pOldValue, const SfxPoolItem* pNewValue ) { bool bWasNotifiable = m_bNotifiable; m_bNotifiable = false; @@ -3716,7 +3688,7 @@ void SwTxtNode::Modify( SfxPoolItem* pOldValue, SfxPoolItem* pNewValue ) // Bug25481: // bei Nodes im Undo nie _ChgTxtCollUpdateNum rufen. if( pOldValue && pNewValue && RES_FMT_CHG == pOldValue->Which() && - pRegisteredIn == ((SwFmtChg*)pNewValue)->pChangedFmt && + GetRegisteredIn() == ((SwFmtChg*)pNewValue)->pChangedFmt && GetNodes().IsDocNodes() ) { _ChgTxtCollUpdateNum( @@ -5072,7 +5044,6 @@ sal_uInt16 SwTxtNode::ResetAllAttr() } // <-- - // sw::Metadatable ::sfx2::IXmlIdRegistry& SwTxtNode::GetRegistry() { @@ -5094,6 +5065,13 @@ bool SwTxtNode::IsInContent() const return !GetDoc()->IsInHeaderFooter( SwNodeIndex(*this) ); } +void SwTxtNode::SwClientNotify( const SwModify& rModify, const SfxHint& rHint ) +{ + const SwAttrHint* pHint = dynamic_cast<const SwAttrHint*>(&rHint); + if ( pHint && pHint->GetId() == RES_CONDTXTFMTCOLL && &rModify == GetRegisteredIn() ) + ChkCondColl(); +} + #include <unoparagraph.hxx> uno::Reference< rdf::XMetadatable > diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx index d0be32e61953..e1c700165c73 100644 --- a/sw/source/core/txtnode/thints.cxx +++ b/sw/source/core/txtnode/thints.cxx @@ -214,22 +214,20 @@ splitPolicy(const sal_uInt16 nWhichNew, const sal_uInt16 nWhichOther) } } -static void -lcl_InitINetFmt(SwTxtNode & rNode, SwTxtINetFmt * pNew) +void SwTxtINetFmt::InitINetFmt(SwTxtNode & rNode) { - pNew->ChgTxtNode(&rNode); + ChgTxtNode(&rNode); SwCharFmt * const pFmt( rNode.GetDoc()->GetCharFmtFromPool(RES_POOLCHR_INET_NORMAL) ); - pFmt->Add( pNew ); + pFmt->Add( this ); } -static void -lcl_InitRuby(SwTxtNode & rNode, SwTxtRuby * pNew) +void SwTxtRuby::InitRuby(SwTxtNode & rNode) { - pNew->ChgTxtNode(&rNode); + ChgTxtNode(&rNode); SwCharFmt * const pFmt( rNode.GetDoc()->GetCharFmtFromPool(RES_POOLCHR_RUBYTEXT) ); - pFmt->Add( pNew ); + pFmt->Add( this ); } /** @@ -245,12 +243,12 @@ MakeTxtAttrNesting(SwTxtNode & rNode, SwTxtAttrNesting & rNesting, { case RES_TXTATR_INETFMT: { - lcl_InitINetFmt(rNode, static_cast<SwTxtINetFmt*>(pNew)); + static_cast<SwTxtINetFmt*>(pNew)->InitINetFmt(rNode); break; } case RES_TXTATR_CJK_RUBY: { - lcl_InitRuby(rNode, static_cast<SwTxtRuby*>(pNew)); + static_cast<SwTxtRuby*>(pNew)->InitRuby(rNode); break; } default: @@ -1192,7 +1190,7 @@ void SwTxtNode::DestroyAttr( SwTxtAttr* pAttr ) if( nDelMsg && !pDoc->IsInDtor() && GetNodes().IsDocNodes() ) { SwPtrMsgPoolItem aMsgHint( nDelMsg, (void*)&pAttr->GetAttr() ); - pDoc->GetUnoCallBack()->Modify( &aMsgHint, &aMsgHint ); + pDoc->GetUnoCallBack()->ModifyNotification( &aMsgHint, &aMsgHint ); } SwTxtAttr::Destroy( pAttr, pDoc->GetAttrPool() ); @@ -1518,7 +1516,7 @@ void SwTxtNode::DeleteAttribute( SwTxtAttr * const pAttr ) *pAttr->GetStart(), *pAttr->GetEnd(), pAttr->Which() ); m_pSwpHints->Delete( pAttr ); SwTxtAttr::Destroy( pAttr, GetDoc()->GetAttrPool() ); - SwModify::Modify( 0, &aHint ); // notify Frames + NotifyClients( 0, &aHint ); TryDeleteSwpHints(); } @@ -1586,7 +1584,7 @@ void SwTxtNode::DeleteAttributes( const sal_uInt16 nWhich, SwUpdateAttr aHint( nStart, *pEndIdx, nWhich ); m_pSwpHints->DeleteAtPos( nPos ); // gefunden, loeschen, SwTxtAttr::Destroy( pTxtHt, GetDoc()->GetAttrPool() ); - SwModify::Modify( 0, &aHint ); // die Frames benachrichtigen + NotifyClients( 0, &aHint ); } } } @@ -2338,7 +2336,7 @@ void SwTxtNode::FmtToTxtAttr( SwTxtNode* pNd ) if( aNdSet.Count() ) { SwFmtChg aTmp1( pNd->GetFmtColl() ); - pNd->SwModify::Modify( &aTmp1, &aTmp1 ); + pNd->NotifyClients( &aTmp1, &aTmp1 ); } } } @@ -2629,7 +2627,7 @@ bool SwpHints::TryInsertHint( SwTxtAttr* const pHint, SwTxtNode &rNode, } // <-- case RES_TXTATR_INETFMT: - lcl_InitINetFmt(rNode, static_cast<SwTxtINetFmt*>(pHint)); + static_cast<SwTxtINetFmt*>(pHint)->InitINetFmt(rNode); break; case RES_TXTATR_FIELD: { @@ -2682,7 +2680,7 @@ bool SwpHints::TryInsertHint( SwTxtAttr* const pHint, SwTxtNode &rNode, { SwFmtFld* pFmtFld = (SwFmtFld*)&((SwTxtFld*)pHint) ->GetFld(); - pFldType->Add( pFmtFld ); // ummelden + pFmtFld->RegisterToFieldType( *pFldType ); pFmtFld->GetFld()->ChgTyp( pFldType ); } pFldType->SetSeqRefNo( *(SwSetExpField*)pFld ); @@ -2763,7 +2761,7 @@ bool SwpHints::TryInsertHint( SwTxtAttr* const pHint, SwTxtNode &rNode, break; case RES_TXTATR_CJK_RUBY: - lcl_InitRuby(rNode, static_cast<SwTxtRuby*>(pHint)); + static_cast<SwTxtRuby*>(pHint)->InitRuby(rNode); break; case RES_TXTATR_META: @@ -2796,7 +2794,7 @@ bool SwpHints::TryInsertHint( SwTxtAttr* const pHint, SwTxtNode &rNode, if ( rNode.GetDepends() ) { SwUpdateAttr aHint( nHtStart, nHtStart, nWhich ); - rNode.Modify( 0, &aHint ); + rNode.ModifyNotification( 0, &aHint ); } return true; } @@ -2878,7 +2876,7 @@ bool SwpHints::TryInsertHint( SwTxtAttr* const pHint, SwTxtNode &rNode, if ( rNode.GetDepends() ) { SwUpdateAttr aHint( nHtStart, nHtStart == nHintEnd ? nHintEnd + 1 : nHintEnd, nWhich ); - rNode.Modify( 0, &aHint ); + rNode.ModifyNotification( 0, &aHint ); } #ifdef DBG_UTIL diff --git a/sw/source/core/txtnode/txtatr2.cxx b/sw/source/core/txtnode/txtatr2.cxx index f6dcfc520eae..698be6cd1443 100644 --- a/sw/source/core/txtnode/txtatr2.cxx +++ b/sw/source/core/txtnode/txtatr2.cxx @@ -67,7 +67,7 @@ SwTxtCharFmt::~SwTxtCharFmt( ) { } -void SwTxtCharFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwTxtCharFmt::ModifyNotification( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; ASSERT( isCHRATR(nWhich) || (RES_OBJECTDYING == nWhich) @@ -77,12 +77,16 @@ void SwTxtCharFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if ( m_pTxtNode ) { SwUpdateAttr aUpdateAttr( *GetStart(), *GetEnd(), nWhich ); - m_pTxtNode->Modify( &aUpdateAttr, &aUpdateAttr ); + m_pTxtNode->ModifyNotification( &aUpdateAttr, &aUpdateAttr ); } } // erfrage vom Modify Informationen +<<<<<<< local +bool SwTxtCharFmt::GetInfo( SfxPoolItem& rInfo ) const +======= sal_Bool SwTxtCharFmt::GetInfo( SfxPoolItem& rInfo ) const +>>>>>>> other { if ( RES_AUTOFMT_DOCNODE != rInfo.Which() || !m_pTxtNode || &m_pTxtNode->GetNodes() != static_cast<SwAutoFmtGetDocNode&>(rInfo).pNodes ) @@ -181,12 +185,12 @@ SwCharFmt* SwTxtINetFmt::GetCharFmt() if( pRet ) pRet->Add( this ); else if( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); return pRet; } -void SwTxtINetFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwTxtINetFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; ASSERT( isCHRATR(nWhich) || (RES_OBJECTDYING == nWhich) @@ -196,7 +200,7 @@ void SwTxtINetFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) if ( m_pTxtNode ) { SwUpdateAttr aUpdateAttr( *GetStart(), *GetEnd(), nWhich ); - m_pTxtNode->Modify( &aUpdateAttr, &aUpdateAttr ); + m_pTxtNode->ModifyNotification( &aUpdateAttr, &aUpdateAttr ); } } @@ -235,7 +239,7 @@ SwTxtRuby::~SwTxtRuby() { } -void SwTxtRuby::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwTxtRuby::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0; ASSERT( isCHRATR(nWhich) || (RES_OBJECTDYING == nWhich) @@ -245,7 +249,7 @@ void SwTxtRuby::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) if ( m_pTxtNode ) { SwUpdateAttr aUpdateAttr( *GetStart(), *GetEnd(), nWhich ); - m_pTxtNode->Modify( &aUpdateAttr, &aUpdateAttr ); + m_pTxtNode->ModifyNotification( &aUpdateAttr, &aUpdateAttr ); } } @@ -298,7 +302,7 @@ SwCharFmt* SwTxtRuby::GetCharFmt() if( pRet ) pRet->Add( this ); else if( GetRegisteredIn() ) - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); return pRet; } diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index 4b99670b865c..2f92fbb11938 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -617,9 +617,9 @@ void SwTxtNode::RstAttr(const SwIndex &rIdx, xub_StrLen nLen, sal_uInt16 nWhich, } //TxtFrm's reagieren auf aHint, andere auf aNew SwUpdateAttr aHint( nMin, nMax, 0 ); - SwModify::Modify( 0, &aHint ); + NotifyClients( 0, &aHint ); SwFmtChg aNew( GetFmtColl() ); - SwModify::Modify( 0, &aNew ); + NotifyClients( 0, &aNew ); } } @@ -1485,7 +1485,7 @@ sal_Bool SwTxtNode::Hyphenate( SwInterHyphInfo &rHyphInf ) if( pLinguNode != this ) { pLinguNode = this; - pLinguFrm = (SwTxtFrm*)GetFrm( (Point*)(rHyphInf.GetCrsrPos()) ); + pLinguFrm = (SwTxtFrm*)getLayoutFrm( GetDoc()->GetCurrentLayout(), (Point*)(rHyphInf.GetCrsrPos()) ); } SwTxtFrm *pFrm = pLinguFrm; if( pFrm ) @@ -1877,10 +1877,10 @@ void SwTxtNode::ReplaceTextOnly( xub_StrLen nPos, xub_StrLen nLen, // notify the layout! SwDelTxt aDelHint( nPos, nTLen ); - SwModify::Modify( 0, &aDelHint ); + NotifyClients( 0, &aDelHint ); SwInsTxt aHint( nPos, nTLen ); - SwModify::Modify( 0, &aHint ); + NotifyClients( 0, &aHint ); } void SwTxtNode::CountWords( SwDocStat& rStat, diff --git a/sw/source/core/undo/SwUndoPageDesc.cxx b/sw/source/core/undo/SwUndoPageDesc.cxx index 9ff300ad14dd..960a73ef3c0b 100644 --- a/sw/source/core/undo/SwUndoPageDesc.cxx +++ b/sw/source/core/undo/SwUndoPageDesc.cxx @@ -69,13 +69,7 @@ void DebugHeaderFooterContent( const SwPageDesc& rPageDesc ) SwFrmFmt* pHeaderFmt = rHead.GetHeaderFmt(); if( pHeaderFmt ) { - SwClientIter aIter( *pHeaderFmt ); - SwClient *pLast = aIter.GoStart(); - if( pLast ) - do - { - ++nHeaderCount; - } while( 0 != ( pLast = aIter++ )); + nHeaderCount = pHeaderFmt->GetClientCount(); const SwFmtCntnt* pCntnt = &pHeaderFmt->GetCntnt(); if( pCntnt->GetCntntIdx() ) nHeaderMaster = pCntnt->GetCntntIdx()->GetIndex(); @@ -86,13 +80,7 @@ void DebugHeaderFooterContent( const SwPageDesc& rPageDesc ) SwFrmFmt* pLeftHeaderFmt = rLeftHead.GetHeaderFmt(); if( pLeftHeaderFmt ) { - SwClientIter aIter( *pLeftHeaderFmt ); - SwClient *pLast = aIter.GoStart(); - if( pLast ) - do - { - ++nLeftHeaderCount; - } while( 0 != ( pLast = aIter++ )); + nLeftHeaderCount = pLeftHeaderFmt->GetClientCount(); const SwFmtCntnt* pLeftCntnt = &pLeftHeaderFmt->GetCntnt(); if( pLeftCntnt->GetCntntIdx() ) nHeaderLeft = pLeftCntnt->GetCntntIdx()->GetIndex(); @@ -105,13 +93,7 @@ void DebugHeaderFooterContent( const SwPageDesc& rPageDesc ) SwFrmFmt* pFooterFmt = rFoot.GetFooterFmt(); if( pFooterFmt ) { - SwClientIter aIter( *pFooterFmt ); - SwClient *pLast = aIter.GoStart(); - if( pLast ) - do - { - ++nFooterCount; - } while( 0 != ( pLast = aIter++ )); + nFooterCount = pFooterFmt->GetClientCount(); const SwFmtCntnt* pCntnt = &pFooterFmt->GetCntnt(); if( pCntnt->GetCntntIdx() ) nFooterMaster = pCntnt->GetCntntIdx()->GetIndex(); @@ -122,13 +104,7 @@ void DebugHeaderFooterContent( const SwPageDesc& rPageDesc ) SwFrmFmt* pLeftFooterFmt = rLeftFoot.GetFooterFmt(); if( pLeftFooterFmt ) { - SwClientIter aIter( *pLeftFooterFmt ); - SwClient *pLast = aIter.GoStart(); - if( pLast ) - do - { - ++nLeftFooterCount; - } while( 0 != ( pLast = aIter++ )); + nLeftFooterCount = pLeftFooterFmt->GetClientCount(); const SwFmtCntnt* pLeftCntnt = &pLeftFooterFmt->GetCntnt(); if( pLeftCntnt->GetCntntIdx() ) nFooterLeft = pLeftCntnt->GetCntntIdx()->GetIndex(); diff --git a/sw/source/core/undo/rolbck.cxx b/sw/source/core/undo/rolbck.cxx index 30b856668bdb..6d1d47543de8 100644 --- a/sw/source/core/undo/rolbck.cxx +++ b/sw/source/core/undo/rolbck.cxx @@ -367,7 +367,7 @@ SwHistorySetTOXMark::SwHistorySetTOXMark( SwTxtTOXMark* pTxtHt, sal_uLong nNodeP , m_nStart( *pTxtHt->GetStart() ) , m_nEnd( *pTxtHt->GetAnyEnd() ) { - const_cast<SwModify*>(m_TOXMark.GetRegisteredIn())->Remove( &m_TOXMark ); + m_TOXMark.DeRegister(); } @@ -396,7 +396,7 @@ void SwHistorySetTOXMark::SetInDoc( SwDoc* pDoc, bool ) } SwTOXMark aNew( m_TOXMark ); - pToxType->Add( &aNew ); + aNew.RegisterToTOXType( *pToxType ); pTxtNd->InsertItem( aNew, m_nStart, m_nEnd, nsSetAttrMode::SETATTR_NOTXTATRCHR ); @@ -942,7 +942,11 @@ void SwHistoryChangeFlyAnchor::SetInDoc( SwDoc* pDoc, bool ) aTmp.SetAnchor( &aPos ); // so the Layout does not get confused +<<<<<<< local + if ( !pCNd || !pCNd->getLayoutFrm( pDoc->GetCurrentLayout(), 0, 0, FALSE ) ) +======= if ( !pCNd || !pCNd->GetFrm( 0, 0, sal_False ) ) +>>>>>>> other { m_rFmt.DelFrms(); } @@ -1379,7 +1383,7 @@ SwRegHistory::SwRegHistory( const SwNode& rNd, SwHistory* pHst ) _MakeSetWhichIds(); } -void SwRegHistory::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwRegHistory::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { // --> OD 2010-10-05 #i114861# // Do not handle a "noop" modify @@ -1397,7 +1401,7 @@ void SwRegHistory::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) { SwHistoryHint* pNewHstr; const SfxItemSet& rSet = - *static_cast<SwAttrSetChg*>(pOld)->GetChgSet(); + *static_cast<const SwAttrSetChg*>(pOld)->GetChgSet(); if ( 1 < rSet.Count() ) { pNewHstr = diff --git a/sw/source/core/undo/unattr.cxx b/sw/source/core/undo/unattr.cxx index aa4ac003f33f..864f4ded3f74 100644 --- a/sw/source/core/undo/unattr.cxx +++ b/sw/source/core/undo/unattr.cxx @@ -66,7 +66,7 @@ #include <redline.hxx> #include <section.hxx> #include <charfmt.hxx> - +#include <switerator.hxx> // ----------------------------------------------------- @@ -78,49 +78,52 @@ SwUndoFmtAttrHelper::SwUndoFmtAttrHelper( SwFmt& rFmt, bool bSvDrwPt ) { } -void SwUndoFmtAttrHelper::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwUndoFmtAttrHelper::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { - if( pOld && pNew ) + if( pOld ) { - if( POOLATTR_END >= pOld->Which() ) + if ( pOld->Which() == RES_OBJECTDYING ) { - if ( GetUndo() ) - { - m_pUndo->PutAttr( *pOld ); - } - else - { - m_pUndo.reset( new SwUndoFmtAttr( *pOld, - *static_cast<SwFmt*>(pRegisteredIn), m_bSaveDrawPt ) ); - } + CheckRegistration( pOld, pNew ); } - else if ( RES_ATTRSET_CHG == pOld->Which() ) + else if ( pNew ) { - if ( GetUndo() ) + if( POOLATTR_END >= pOld->Which() ) { - SfxItemIter aIter( - *(static_cast<SwAttrSetChg*>(pOld))->GetChgSet() ); - const SfxPoolItem* pItem = aIter.GetCurItem(); - while ( pItem ) + if ( GetUndo() ) { - m_pUndo->PutAttr( *pItem ); - if( aIter.IsAtEnd() ) - break; - pItem = aIter.NextItem(); + m_pUndo->PutAttr( *pOld ); + } + else + { + m_pUndo.reset( new SwUndoFmtAttr( *pOld, + *static_cast<SwFmt*>(GetRegisteredInNonConst()), m_bSaveDrawPt ) ); } } - else + else if ( RES_ATTRSET_CHG == pOld->Which() ) { - m_pUndo.reset( new SwUndoFmtAttr( - *static_cast<SwAttrSetChg*>(pOld)->GetChgSet(), - *static_cast<SwFmt*>(pRegisteredIn), m_bSaveDrawPt ) ); + if ( GetUndo() ) + { + SfxItemIter aIter( + *(static_cast<const SwAttrSetChg*>(pOld))->GetChgSet() ); + const SfxPoolItem* pItem = aIter.GetCurItem(); + while ( pItem ) + { + m_pUndo->PutAttr( *pItem ); + if( aIter.IsAtEnd() ) + break; + pItem = aIter.NextItem(); + } + } + else + { + m_pUndo.reset( new SwUndoFmtAttr( + *static_cast<const SwAttrSetChg*>(pOld)->GetChgSet(), + *static_cast<SwFmt*>(GetRegisteredInNonConst()), m_bSaveDrawPt ) ); + } } } - else - SwClient::Modify( pOld, pNew ); } - else - SwClient::Modify( pOld, pNew ); } // ----------------------------------------------------- @@ -167,8 +170,7 @@ void SwUndoFmtAttr::Init() static_cast<const SwFrmFmtPtr>(m_pFmt))) { // Table Format: save table position, table formats are volatile! - SwTable * pTbl = static_cast<SwTable*>( - SwClientIter( *m_pFmt ).First( TYPE( SwTable )) ); + SwTable * pTbl = SwIterator<SwTable,SwFmt>::FirstElement( *m_pFmt ); if ( pTbl ) { m_nNodeIndex = pTbl->GetTabSortBoxes()[ 0 ]->GetSttNd() @@ -182,8 +184,7 @@ void SwUndoFmtAttr::Init() } else if ( 0 != dynamic_cast< SwTableBoxFmt* >( m_pFmt ) ) { - SwTableBox* pTblBox = static_cast< SwTableBox* >( - SwClientIter( *m_pFmt ).First( TYPE( SwTableBox ))); + SwTableBox * pTblBox = SwIterator<SwTableBox,SwFmt>::FirstElement( *m_pFmt ); if ( pTblBox ) { m_nNodeIndex = pTblBox->GetSttIdx(); @@ -515,7 +516,7 @@ bool SwUndoFmtAttr::RestoreFlyAnchor(::sw::UndoRedoContext & rContext) aNewAnchor.SetPageNum( rAnchor.GetPageNum() ); Point aDrawSavePt, aDrawOldPt; - if( pDoc->GetRootFrm() ) + if( pDoc->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { if( RES_DRAWFRMFMT == pFrmFmt->Which() ) { diff --git a/sw/source/core/undo/undobj1.cxx b/sw/source/core/undo/undobj1.cxx index 20308d1dbfba..7a4abe803bde 100644 --- a/sw/source/core/undo/undobj1.cxx +++ b/sw/source/core/undo/undobj1.cxx @@ -171,7 +171,7 @@ void SwUndoFlyBase::DelFly( SwDoc* pDoc ) // alle Uno-Objecte sollten sich jetzt abmelden { SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, pFrmFmt ); - pFrmFmt->Modify( &aMsgHint, &aMsgHint ); + pFrmFmt->ModifyNotification( &aMsgHint, &aMsgHint ); } if ( RES_DRAWFRMFMT != pFrmFmt->Which() ) @@ -341,9 +341,14 @@ void SwUndoInsLayFmt::RepeatImpl(::sw::RepeatContext & rContext) } else if (FLY_AT_PAGE == aAnchor.GetAnchorId()) { +<<<<<<< local + aAnchor.SetPageNum( pDoc->GetCurrentLayout()->GetCurrPage( rUndoIter.pAktPam )); + } +======= aAnchor.SetPageNum( pDoc->GetRootFrm()->GetCurrPage(& rContext.GetRepeatPaM()) ); } +>>>>>>> other else { ASSERT( sal_False, "was fuer ein Anker ist es denn nun?" ); } @@ -505,6 +510,11 @@ SwUndoSetFlyFmt::~SwUndoSetFlyFmt() delete pItemSet; } +void SwUndoSetFlyFmt::DeRegisterFromFormat( SwFmt& rFmt ) +{ + rFmt.Remove(this); +} + void SwUndoSetFlyFmt::GetAnchor( SwFmtAnchor& rAnchor, sal_uLong nNode, xub_StrLen nCntnt ) { @@ -698,7 +708,7 @@ void SwUndoSetFlyFmt::PutAttr( sal_uInt16 nWhich, const SfxPoolItem* pItem ) pItemSet->InvalidateItem( nWhich ); } -void SwUndoSetFlyFmt::Modify( SfxPoolItem* pOld, SfxPoolItem* ) +void SwUndoSetFlyFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* ) { if( pOld ) { diff --git a/sw/source/core/undo/undraw.cxx b/sw/source/core/undo/undraw.cxx index 8f9f64bad941..d7f994e54de4 100644 --- a/sw/source/core/undo/undraw.cxx +++ b/sw/source/core/undo/undraw.cxx @@ -33,6 +33,7 @@ #include <rtl/string.h> #include <rtl/memory.h> +#include <rtl/string.h> #include <svx/svdogrp.hxx> #include <svx/svdundo.hxx> #include <svx/svdpage.hxx> @@ -62,10 +63,14 @@ struct SwUndoGroupObjImpl { SwDrawFrmFmt* pFmt; SdrObject* pObj; +<<<<<<< local + ULONG nNodeIdx; +======= sal_uLong nNodeIdx; // OD 2004-04-15 #i26791# - keeping the anchor and the relative position // of drawing objects no longer needed +>>>>>>> other }; @@ -83,7 +88,7 @@ IMPL_LINK( SwDoc, AddDrawUndo, SdrUndoAction *, pUndo ) GetIDocumentUndoRedo().DoesDrawUndo()) { const SdrMarkList* pMarkList = 0; - ViewShell* pSh = GetRootFrm() ? GetRootFrm()->GetCurrShell() : 0; + ViewShell* pSh = GetCurrentViewShell(); if( pSh && pSh->HasDrawView() ) pMarkList = &pSh->GetDrawView()->GetMarkedObjectList(); @@ -131,7 +136,7 @@ String SwSdrUndo::GetComment() const void lcl_SendRemoveToUno( SwFmt& rFmt ) { SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT, &rFmt ); - rFmt.Modify( &aMsgHint, &aMsgHint ); + rFmt.ModifyNotification( &aMsgHint, &aMsgHint ); } void lcl_SaveAnchor( SwFrmFmt* pFmt, sal_uLong& rNodePos ) @@ -149,15 +154,15 @@ void lcl_SaveAnchor( SwFrmFmt* pFmt, sal_uLong& rNodePos ) { nCntntPos = rAnchor.GetCntntAnchor()->nContent.GetIndex(); - // TextAttribut zerstoeren + // destroy TextAttribute SwTxtNode *pTxtNd = pFmt->GetDoc()->GetNodes()[ rNodePos ]->GetTxtNode(); - ASSERT( pTxtNd, "Kein Textnode gefunden" ); + ASSERT( pTxtNd, "No text node found!" ); SwTxtFlyCnt* pAttr = static_cast<SwTxtFlyCnt*>( pTxtNd->GetTxtAttrForCharAt( nCntntPos, RES_TXTATR_FLYCNT )); - // Attribut steht noch im TextNode, loeschen + // attribute still in text node, delete if( pAttr && pAttr->GetFlyCnt().GetFrmFmt() == pFmt ) { - // Pointer auf 0, nicht loeschen + // just set pointer to 0, don't delete ((SwFmtFlyCnt&)pAttr->GetFlyCnt()).SetFlyFmt(); SwIndex aIdx( pTxtNd, nCntntPos ); pTxtNd->EraseText( aIdx, 1 ); @@ -220,7 +225,7 @@ SwUndoDrawGroup::~SwUndoDrawGroup() delete pTmp->pFmt; } else - delete pObjArr->pFmt; // das GroupObject-Format + delete pObjArr->pFmt; delete [] pObjArr; } @@ -229,22 +234,22 @@ void SwUndoDrawGroup::UndoImpl(::sw::UndoRedoContext &) { bDelFmt = sal_False; - // das Group-Object sichern + // save group object SwDrawFrmFmt* pFmt = pObjArr->pFmt; SwDrawContact* pDrawContact = (SwDrawContact*)pFmt->FindContactObj(); SdrObject* pObj = pDrawContact->GetMaster(); pObjArr->pObj = pObj; - //loescht sich selbst! + // object will destroy itself pDrawContact->Changed( *pObj, SDRUSERCALL_DELETE, pObj->GetLastBoundRect() ); pObj->SetUserCall( 0 ); ::lcl_SaveAnchor( pFmt, pObjArr->nNodeIdx ); - // alle Uno-Objecte sollten sich jetzt abmelden + // notify UNO objects to decouple ::lcl_SendRemoveToUno( *pFmt ); - // aus dem Array austragen + // remove from array SwDoc* pDoc = pFmt->GetDoc(); SwSpzFrmFmts& rFlyFmts = *(SwSpzFrmFmts*)pDoc->GetSpzFrmFmts(); rFlyFmts.Remove( rFlyFmts.GetPos( pFmt )); @@ -260,19 +265,15 @@ void SwUndoDrawGroup::UndoImpl(::sw::UndoRedoContext &) SwDrawContact *pContact = new SwDrawContact( rSave.pFmt, pObj ); pContact->ConnectToLayout(); - // --> OD 2005-03-22 #i45718# - follow-up of #i35635# - // move object to visible layer + // #i45718# - follow-up of #i35635# move object to visible layer pContact->MoveObjToVisibleLayer( pObj ); - // <-- - // --> OD 2005-05-10 #i45952# - notify that position attributes - // are already set + // #i45952# - notify that position attributes are already set ASSERT( rSave.pFmt->ISA(SwDrawFrmFmt), "<SwUndoDrawGroup::Undo(..)> - wrong type of frame format for drawing object" ); if ( rSave.pFmt->ISA(SwDrawFrmFmt) ) { static_cast<SwDrawFrmFmt*>(rSave.pFmt)->PosAttrSet(); } - // <-- } } @@ -280,7 +281,7 @@ void SwUndoDrawGroup::RedoImpl(::sw::UndoRedoContext &) { bDelFmt = sal_True; - // aus dem Array austragen + // remove from array SwDoc* pDoc = pObjArr->pFmt->GetDoc(); SwSpzFrmFmts& rFlyFmts = *(SwSpzFrmFmts*)pDoc->GetSpzFrmFmts(); SdrObject* pObj; @@ -292,38 +293,35 @@ void SwUndoDrawGroup::RedoImpl(::sw::UndoRedoContext &) pObj = rSave.pObj; SwDrawContact *pContact = (SwDrawContact*)GetUserCall(pObj); - //loescht sich selbst! + + // object will destroy itself pContact->Changed( *pObj, SDRUSERCALL_DELETE, pObj->GetLastBoundRect() ); pObj->SetUserCall( 0 ); ::lcl_SaveAnchor( rSave.pFmt, rSave.nNodeIdx ); - // alle Uno-Objecte sollten sich jetzt abmelden + // notify UNO objects to decouple ::lcl_SendRemoveToUno( *rSave.pFmt ); rFlyFmts.Remove( rFlyFmts.GetPos( rSave.pFmt )); } - // das Group-Object wieder einfuegen + // re-insert group object ::lcl_RestoreAnchor( pObjArr->pFmt, pObjArr->nNodeIdx ); rFlyFmts.Insert( pObjArr->pFmt, rFlyFmts.Count() ); SwDrawContact *pContact = new SwDrawContact( pObjArr->pFmt, pObjArr->pObj ); - // OD 2004-04-15 #i26791# - correction: connect object to layout + // #i26791# - correction: connect object to layout pContact->ConnectToLayout(); - // --> OD 2005-03-22 #i45718# - follow-up of #i35635# - // move object to visible layer + // #i45718# - follow-up of #i35635# move object to visible layer pContact->MoveObjToVisibleLayer( pObjArr->pObj ); - // <-- - // --> OD 2005-05-10 #i45952# - notify that position attributes - // are already set + // #i45952# - notify that position attributes are already set ASSERT( pObjArr->pFmt->ISA(SwDrawFrmFmt), "<SwUndoDrawGroup::Undo(..)> - wrong type of frame format for drawing object" ); if ( pObjArr->pFmt->ISA(SwDrawFrmFmt) ) { static_cast<SwDrawFrmFmt*>(pObjArr->pFmt)->PosAttrSet(); } - // <-- } void SwUndoDrawGroup::AddObj( sal_uInt16 nPos, SwDrawFrmFmt* pFmt, SdrObject* pObj ) @@ -333,10 +331,10 @@ void SwUndoDrawGroup::AddObj( sal_uInt16 nPos, SwDrawFrmFmt* pFmt, SdrObject* pO rSave.pFmt = pFmt; ::lcl_SaveAnchor( pFmt, rSave.nNodeIdx ); - // alle Uno-Objecte sollten sich jetzt abmelden + // notify UNO objects to decouple ::lcl_SendRemoveToUno( *pFmt ); - // aus dem Array austragen + // remove from array SwSpzFrmFmts& rFlyFmts = *(SwSpzFrmFmts*)pFmt->GetDoc()->GetSpzFrmFmts(); rFlyFmts.Remove( rFlyFmts.GetPos( pFmt )); } @@ -362,16 +360,16 @@ SwUndoDrawUnGroup::SwUndoDrawUnGroup( SdrObjGroup* pObj ) pObjArr->pObj = pObj; pObjArr->pFmt = pFmt; - //loescht sich selbst! + // object will destroy itself pContact->Changed( *pObj, SDRUSERCALL_DELETE, pObj->GetLastBoundRect() ); pObj->SetUserCall( 0 ); ::lcl_SaveAnchor( pFmt, pObjArr->nNodeIdx ); - // alle Uno-Objecte sollten sich jetzt abmelden + // notify UNO objects to decouple ::lcl_SendRemoveToUno( *pFmt ); - // aus dem Array austragen + // remove from array SwSpzFrmFmts& rFlyFmts = *(SwSpzFrmFmts*)pFmt->GetDoc()->GetSpzFrmFmts(); rFlyFmts.Remove( rFlyFmts.GetPos( pFmt )); } @@ -385,7 +383,7 @@ SwUndoDrawUnGroup::~SwUndoDrawUnGroup() delete pTmp->pFmt; } else - delete pObjArr->pFmt; // das GroupObject-Format + delete pObjArr->pFmt; delete [] pObjArr; } @@ -394,7 +392,12 @@ void SwUndoDrawUnGroup::UndoImpl(::sw::UndoRedoContext & rContext) { bDelFmt = sal_True; +<<<<<<< local + // remove from array + SwDoc* pDoc = &rIter.GetDoc(); +======= SwDoc *const pDoc = & rContext.GetDoc(); +>>>>>>> other SwSpzFrmFmts& rFlyFmts = *(SwSpzFrmFmts*)pDoc->GetSpzFrmFmts(); // remove from array @@ -402,65 +405,50 @@ void SwUndoDrawUnGroup::UndoImpl(::sw::UndoRedoContext & rContext) { SwUndoGroupObjImpl& rSave = *( pObjArr + n ); - // --> OD 2006-11-01 #130889# - taken over by <SwUndoDrawUnGroupConnectToLayout> -// SwDrawContact* pContact = (SwDrawContact*)rSave.pFmt->FindContactObj(); - -// rSave.pObj = pContact->GetMaster(); - -// //loescht sich selbst! -// pContact->Changed( *rSave.pObj, SDRUSERCALL_DELETE, -// rSave.pObj->GetLastBoundRect() ); -// rSave.pObj->SetUserCall( 0 ); - // <-- - ::lcl_SaveAnchor( rSave.pFmt, rSave.nNodeIdx ); - // alle Uno-Objecte sollten sich jetzt abmelden + // notify UNO objects to decouple ::lcl_SendRemoveToUno( *rSave.pFmt ); rFlyFmts.Remove( rFlyFmts.GetPos( rSave.pFmt )); } - // das Group-Object wieder einfuegen + // re-insert group object ::lcl_RestoreAnchor( pObjArr->pFmt, pObjArr->nNodeIdx ); rFlyFmts.Insert( pObjArr->pFmt, rFlyFmts.Count() ); SwDrawContact *pContact = new SwDrawContact( pObjArr->pFmt, pObjArr->pObj ); pContact->ConnectToLayout(); - // --> OD 2005-03-22 #i45718# - follow-up of #i35635# - // move object to visible layer + // #i45718# - follow-up of #i35635# move object to visible layer pContact->MoveObjToVisibleLayer( pObjArr->pObj ); - // <-- - // --> OD 2005-05-10 #i45952# - notify that position attributes - // are already set + // #i45952# - notify that position attributes are already set ASSERT( pObjArr->pFmt->ISA(SwDrawFrmFmt), "<SwUndoDrawGroup::Undo(..)> - wrong type of frame format for drawing object" ); if ( pObjArr->pFmt->ISA(SwDrawFrmFmt) ) { static_cast<SwDrawFrmFmt*>(pObjArr->pFmt)->PosAttrSet(); } - // <-- } void SwUndoDrawUnGroup::RedoImpl(::sw::UndoRedoContext &) { bDelFmt = sal_False; - // das Group-Object sichern + // save group object SwDrawFrmFmt* pFmt = pObjArr->pFmt; SwDrawContact* pContact = (SwDrawContact*)pFmt->FindContactObj(); - //loescht sich selbst! + // object will destroy itself pContact->Changed( *pObjArr->pObj, SDRUSERCALL_DELETE, pObjArr->pObj->GetLastBoundRect() ); pObjArr->pObj->SetUserCall( 0 ); ::lcl_SaveAnchor( pFmt, pObjArr->nNodeIdx ); - // alle Uno-Objecte sollten sich jetzt abmelden + // notify UNO objects to decouple ::lcl_SendRemoveToUno( *pFmt ); - // aus dem Array austragen + // remove from array SwDoc* pDoc = pFmt->GetDoc(); SwSpzFrmFmts& rFlyFmts = *(SwSpzFrmFmts*)pDoc->GetSpzFrmFmts(); rFlyFmts.Remove( rFlyFmts.GetPos( pFmt )); @@ -472,25 +460,13 @@ void SwUndoDrawUnGroup::RedoImpl(::sw::UndoRedoContext &) ::lcl_RestoreAnchor( rSave.pFmt, rSave.nNodeIdx ); rFlyFmts.Insert( rSave.pFmt, rFlyFmts.Count() ); - // --> OD 2006-11-01 #130889# - taken over by <SwUndoDrawUnGroupConnectToLayout> -// SdrObject* pObj = rSave.pObj; - -// SwDrawContact *pContact = new SwDrawContact( rSave.pFmt, rSave.pObj ); -// pContact->ConnectToLayout(); -// // --> OD 2005-03-22 #i45718# - follow-up of #i35635# -// // move object to visible layer -// pContact->MoveObjToVisibleLayer( rSave.pObj ); -// // <-- - // <-- - // --> OD 2005-05-10 #i45952# - notify that position attributes - // are already set + // #i45952# - notify that position attributes are already set ASSERT( rSave.pFmt->ISA(SwDrawFrmFmt), "<SwUndoDrawGroup::Undo(..)> - wrong type of frame format for drawing object" ); if ( rSave.pFmt->ISA(SwDrawFrmFmt) ) { static_cast<SwDrawFrmFmt*>(rSave.pFmt)->PosAttrSet(); } - // <-- } } @@ -501,8 +477,6 @@ void SwUndoDrawUnGroup::AddObj( sal_uInt16 nPos, SwDrawFrmFmt* pFmt ) rSave.pObj = 0; } -//------------------------------------- -// --> OD 2006-11-01 #130889# SwUndoDrawUnGroupConnectToLayout::SwUndoDrawUnGroupConnectToLayout() : SwUndo( UNDO_DRAWUNGROUP ) { @@ -552,7 +526,6 @@ void SwUndoDrawUnGroupConnectToLayout::AddFmtAndObj( SwDrawFrmFmt* pDrawFrmFmt, aDrawFmtsAndObjs.push_back( std::pair< SwDrawFrmFmt*, SdrObject* >( pDrawFrmFmt, pDrawObject ) ); } -// <-- //------------------------------------- @@ -587,21 +560,23 @@ void SwUndoDrawDelete::UndoImpl(::sw::UndoRedoContext & rContext) SdrObject *pObj = rSave.pObj; SwDrawContact *pContact = new SwDrawContact( rSave.pFmt, pObj ); pContact->_Changed( *pObj, SDRUSERCALL_INSERTED, NULL ); - // --> OD 2005-03-22 #i45718# - follow-up of #i35635# - // move object to visible layer + // #i45718# - follow-up of #i35635# move object to visible layer pContact->MoveObjToVisibleLayer( pObj ); - // <-- - // --> OD 2005-05-10 #i45952# - notify that position attributes - // are already set + // #i45952# - notify that position attributes are already set ASSERT( rSave.pFmt->ISA(SwDrawFrmFmt), "<SwUndoDrawGroup::Undo(..)> - wrong type of frame format for drawing object" ); if ( rSave.pFmt->ISA(SwDrawFrmFmt) ) { static_cast<SwDrawFrmFmt*>(rSave.pFmt)->PosAttrSet(); } +<<<<<<< local + } + rIter.pMarkList = pMarkLst; +======= // <-- } rContext.SetSelections(0, pMarkLst); +>>>>>>> other } void SwUndoDrawDelete::RedoImpl(::sw::UndoRedoContext & rContext) @@ -614,11 +589,12 @@ void SwUndoDrawDelete::RedoImpl(::sw::UndoRedoContext & rContext) SdrObject *pObj = rSave.pObj; SwDrawContact *pContact = (SwDrawContact*)GetUserCall(pObj); SwDrawFrmFmt *pFmt = (SwDrawFrmFmt*)pContact->GetFmt(); - //loescht sich selbst! + + // object will destroy itself pContact->Changed( *pObj, SDRUSERCALL_DELETE, pObj->GetLastBoundRect() ); pObj->SetUserCall( 0 ); - // alle Uno-Objecte sollten sich jetzt abmelden + // notify UNO objects to decouple ::lcl_SendRemoveToUno( *pFmt ); rFlyFmts.Remove( rFlyFmts.GetPos( pFmt )); @@ -634,10 +610,10 @@ void SwUndoDrawDelete::AddObj( sal_uInt16 , SwDrawFrmFmt* pFmt, rSave.pFmt = pFmt; ::lcl_SaveAnchor( pFmt, rSave.nNodeIdx ); - // alle Uno-Objecte sollten sich jetzt abmelden + // notify UNO objects to decouple ::lcl_SendRemoveToUno( *pFmt ); - // aus dem Array austragen + // remove from array SwDoc* pDoc = pFmt->GetDoc(); SwSpzFrmFmts& rFlyFmts = *(SwSpzFrmFmts*)pDoc->GetSpzFrmFmts(); rFlyFmts.Remove( rFlyFmts.GetPos( pFmt )); diff --git a/sw/source/core/undo/unins.cxx b/sw/source/core/undo/unins.cxx index c32d63488f75..8037214815f9 100644 --- a/sw/source/core/undo/unins.cxx +++ b/sw/source/core/undo/unins.cxx @@ -1008,7 +1008,7 @@ void SwUndoInsertLabel::RepeatImpl(::sw::RepeatContext & rContext) case LTYPE_OBJECT: { SwFlyFrm* pFly; - SwCntntFrm *pCnt = pCNd->GetFrm(); + SwCntntFrm *pCnt = pCNd->getLayoutFrm( rDoc.GetCurrentLayout() ); if( pCnt && 0 != ( pFly = pCnt->FindFlyFrm() ) ) nIdx = pFly->GetFmt()->GetCntnt().GetCntntIdx()->GetIndex(); } diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx index c395e44dabd2..6029f6e7bfd0 100644 --- a/sw/source/core/undo/untbl.cxx +++ b/sw/source/core/undo/untbl.cxx @@ -68,6 +68,7 @@ #include <fmtanchr.hxx> #include <comcore.hrc> #include <unochart.hxx> +#include <switerator.hxx> #ifndef DBG_UTIL #define CHECK_TABLE(t) @@ -138,8 +139,13 @@ public: sal_Bool bSaveFml = sal_True ); ~_SaveTable(); +<<<<<<< local + USHORT AddFmt( SwFrmFmt* pFmt, bool bIsLine ); + void NewFrmFmt( const SwTableLine* , const SwTableBox*, USHORT nFmtPos, +======= sal_uInt16 AddFmt( SwFrmFmt* pFmt, bool bIsLine ); void NewFrmFmt( const SwClient* pLnBx, sal_Bool bIsLine, sal_uInt16 nFmtPos, +>>>>>>> other SwFrmFmt* pOldFmt ); void RestoreAttr( SwTable& rTbl, sal_Bool bModifyBox = sal_False ); @@ -498,7 +504,7 @@ void SwUndoTblToTxt::UndoImpl(::sw::UndoRedoContext & rContext) SwTableNode* pTblNd = rDoc.GetNodes().UndoTableToText( nSttNd, nEndNd, *pBoxSaves ); pTblNd->GetTable().SetTableModel( pTblSave->IsNewModel() ); SwTableFmt* pTableFmt = rDoc.MakeTblFrmFmt( sTblNm, rDoc.GetDfltFrmFmt() ); - pTableFmt->Add( &pTblNd->GetTable() ); // das Frame-Format setzen + pTblNd->GetTable().RegisterToFormat( *pTableFmt ); pTblNd->GetTable().SetRowsToRepeat( nHdlnRpt ); // erzeuge die alte Tabellen Struktur @@ -990,12 +996,12 @@ void _SaveTable::RestoreAttr( SwTable& rTbl, sal_Bool bMdfyBox ) } // zur Sicherheit alle Tableframes invalidieren - SwClientIter aIter( *pFmt ); - for( SwClient* pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) - if( ((SwTabFrm*)pLast)->GetTable() == &rTbl ) + SwIterator<SwTabFrm,SwFmt> aIter( *pFmt ); + for( SwTabFrm* pLast = aIter.First(); pLast; pLast = aIter.Next() ) + if( pLast->GetTable() == &rTbl ) { - ((SwTabFrm*)pLast)->InvalidateAll(); - ((SwTabFrm*)pLast)->SetCompletePaint(); + pLast->InvalidateAll(); + pLast->SetCompletePaint(); } // FrmFmts mit Defaults (0) fuellen @@ -1127,15 +1133,20 @@ void _SaveTable::CreateNew( SwTable& rTbl, sal_Bool bCreateFrms, } +<<<<<<< local +void _SaveTable::NewFrmFmt( const SwTableLine* pTblLn, const SwTableBox* pTblBx, + USHORT nFmtPos, SwFrmFmt* pOldFmt ) +======= void _SaveTable::NewFrmFmt( const SwClient* pLnBx, sal_Bool bIsLine, sal_uInt16 nFmtPos, SwFrmFmt* pOldFmt ) +>>>>>>> other { SwDoc* pDoc = pOldFmt->GetDoc(); SwFrmFmt* pFmt = aFrmFmts[ nFmtPos ]; if( !pFmt ) { - if( bIsLine ) + if( pTblLn ) pFmt = pDoc->MakeTableLineFmt(); else pFmt = pDoc->MakeTableBoxFmt(); @@ -1144,16 +1155,16 @@ void _SaveTable::NewFrmFmt( const SwClient* pLnBx, sal_Bool bIsLine, } //Erstmal die Frms ummelden. - SwClientIter aIter( *pOldFmt ); - for( SwClient* pLast = aIter.First( TYPE( SwFrm ) ); pLast; pLast = aIter.Next() ) + SwIterator<SwTabFrm,SwFmt> aIter( *pOldFmt ); + for( SwFrm* pLast = aIter.First(); pLast; pLast = aIter.Next() ) { - if( bIsLine ? pLnBx == ((SwRowFrm*)pLast)->GetTabLine() - : pLnBx == ((SwCellFrm*)pLast)->GetTabBox() ) + if( pTblLn ? ((SwRowFrm*)pLast)->GetTabLine() == pTblLn + : ((SwCellFrm*)pLast)->GetTabBox() == pTblBx ) { - pFmt->Add( pLast ); - ((SwFrm*)pLast)->InvalidateAll(); - ((SwFrm*)pLast)->ReinitializeFrmSizeAttrFlags(); - if ( !bIsLine ) + pLast->RegisterToFormat(*pFmt); + pLast->InvalidateAll(); + pLast->ReinitializeFrmSizeAttrFlags(); + if ( !pTblLn ) { ((SwCellFrm*)pLast)->SetDerivedVert( sal_False ); ((SwCellFrm*)pLast)->CheckDirChange(); @@ -1162,14 +1173,17 @@ void _SaveTable::NewFrmFmt( const SwClient* pLnBx, sal_Bool bIsLine, } //Jetzt noch mich selbst ummelden. - pFmt->Add( (SwClient*)pLnBx ); + if ( pTblLn ) + const_cast<SwTableLine*>(pTblLn)->RegisterToFormat( *pFmt ); + else if ( pTblBx ) + const_cast<SwTableBox*>(pTblBx)->RegisterToFormat( *pFmt ); - if( bModifyBox && !bIsLine ) + if( bModifyBox && !pTblLn ) { const SfxPoolItem& rOld = pOldFmt->GetFmtAttr( RES_BOXATR_FORMAT ), & rNew = pFmt->GetFmtAttr( RES_BOXATR_FORMAT ); if( rOld != rNew ) - pFmt->Modify( (SfxPoolItem*)&rOld, (SfxPoolItem*)&rNew ); + pFmt->ModifyNotification( (SfxPoolItem*)&rOld, (SfxPoolItem*)&rNew ); } if( !pOldFmt->GetDepends() ) @@ -1202,7 +1216,11 @@ _SaveLine::~_SaveLine() void _SaveLine::RestoreAttr( SwTableLine& rLine, _SaveTable& rSTbl ) { +<<<<<<< local + rSTbl.NewFrmFmt( &rLine, 0, nItemSet, rLine.GetFrmFmt() ); +======= rSTbl.NewFrmFmt( &rLine, sal_True, nItemSet, rLine.GetFrmFmt() ); +>>>>>>> other _SaveBox* pBx = pBox; for( sal_uInt16 n = 0; n < rLine.GetTabBoxes().Count(); ++n, pBx = pBx->pNext ) @@ -1292,7 +1310,11 @@ _SaveBox::~_SaveBox() void _SaveBox::RestoreAttr( SwTableBox& rBox, _SaveTable& rSTbl ) { +<<<<<<< local + rSTbl.NewFrmFmt( 0, &rBox, nItemSet, rBox.GetFrmFmt() ); +======= rSTbl.NewFrmFmt( &rBox, sal_False, nItemSet, rBox.GetFrmFmt() ); +>>>>>>> other if( ULONG_MAX == nSttNode ) // keine EndBox { @@ -1409,7 +1431,7 @@ void _SaveBox::CreateNew( SwTable& rTbl, SwTableLine& rParent, _SaveTable& rSTbl ASSERT( pBox, "Wo ist meine TabellenBox geblieben?" ); SwFrmFmt* pOld = pBox->GetFrmFmt(); - pFmt->Add( pBox ); + pBox->RegisterToFormat( *pFmt ); if( !pOld->GetDepends() ) delete pOld; diff --git a/sw/source/core/unocore/unobkm.cxx b/sw/source/core/unocore/unobkm.cxx index 7a67b7748c97..53a4d009a859 100644 --- a/sw/source/core/unocore/unobkm.cxx +++ b/sw/source/core/unocore/unobkm.cxx @@ -90,13 +90,13 @@ public: } void registerInMark(SwXBookmark & rThis, ::sw::mark::IMark *const pBkmk); - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; -void SwXBookmark::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXBookmark::Impl::Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if (!GetRegisteredIn()) @@ -595,7 +595,7 @@ uno::Type SwXFieldmarkParameters::getElementType() return !getCoreParameters()->empty(); } -void SwXFieldmarkParameters::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXFieldmarkParameters::Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } diff --git a/sw/source/core/unocore/unochart.cxx b/sw/source/core/unocore/unochart.cxx index 331350a5d9f2..034fd8df9d94 100644 --- a/sw/source/core/unocore/unochart.cxx +++ b/sw/source/core/unocore/unochart.cxx @@ -1595,7 +1595,7 @@ uno::Sequence< OUString > SAL_CALL SwChartDataProvider::getSupportedServiceNames } -void SwChartDataProvider::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwChartDataProvider::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { // actually this function should be superfluous (need to check later) ClientModify(this, pOld, pNew ); @@ -2496,7 +2496,7 @@ uno::Sequence< OUString > SAL_CALL SwChartDataSequence::getSupportedServiceNames } -void SwChartDataSequence::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwChartDataSequence::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew ); diff --git a/sw/source/core/unocore/unocoll.cxx b/sw/source/core/unocore/unocoll.cxx index 1d65ee99c812..92b338a4d169 100644 --- a/sw/source/core/unocore/unocoll.cxx +++ b/sw/source/core/unocore/unocoll.cxx @@ -31,9 +31,7 @@ #include <swtypes.hxx> #include <cmdid.h> #include <hintids.hxx> -#ifndef _SVX_SVXIDS_HRC //autogen #include <svx/svxids.hrc> -#endif #include <doc.hxx> #include <docary.hxx> #include <fmtcol.hxx> @@ -72,14 +70,13 @@ #include <comphelper/sequence.hxx> #include <slist> #include <iterator> - #include <unosection.hxx> #include <unoparagraph.hxx> #include <unobookmark.hxx> #include <unorefmark.hxx> #include <unometa.hxx> #include "docsh.hxx" - +#include <switerator.hxx> using ::rtl::OUString; using namespace ::com::sun::star; @@ -272,9 +269,6 @@ const ProvNamesId_Type __FAR_DATA aProvNamesId[] = { CSS_TEXT_FIELDMASTER_BIBLIOGRAPHY, SW_SERVICE_FIELDMASTER_BIBLIOGRAPHY } }; -/* -----------------------------23.03.01 13:38-------------------------------- - - ---------------------------------------------------------------------------*/ const SvEventDescription* lcl_GetSupportedMacroItems() { static const SvEventDescription aMacroDescriptionsImpl[] = @@ -290,9 +284,6 @@ const SvEventDescription* lcl_GetSupportedMacroItems() /****************************************************************** * SwXServiceProvider ******************************************************************/ -/*-- 13.01.99 13:31:44--------------------------------------------------- - - -----------------------------------------------------------------------*/ OUString SwXServiceProvider::GetProviderName(sal_uInt16 nObjectType) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -302,9 +293,7 @@ OUString SwXServiceProvider::GetProviderName(sal_uInt16 nObjectType) sRet = C2U(aProvNamesId[nObjectType].pName); return sRet; } -/* -----------------11.03.99 12:05------------------- - * - * --------------------------------------------------*/ + uno::Sequence<OUString> SwXServiceProvider::GetAllServiceNames() { sal_uInt16 nEntries = sizeof(aProvNamesId) / sizeof(aProvNamesId[0]); @@ -325,9 +314,6 @@ uno::Sequence<OUString> SwXServiceProvider::GetAllServiceNames() } -/*-- 13.01.99 13:31:45--------------------------------------------------- - - -----------------------------------------------------------------------*/ sal_uInt16 SwXServiceProvider::GetProviderType(const OUString& rServiceName) { sal_uInt16 nEntries = sizeof(aProvNamesId) / sizeof(aProvNamesId[0]); @@ -338,9 +324,7 @@ sal_uInt16 SwXServiceProvider::GetProviderType(const OUString& rServiceName) } return SW_SERVICE_INVALID; } -/* -----------------13.01.99 14:37------------------- - * - * --------------------------------------------------*/ + uno::Reference< uno::XInterface > SwXServiceProvider::MakeInstance(sal_uInt16 nObjectType, SwDoc* pDoc) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -570,8 +554,7 @@ uno::Reference< uno::XInterface > SwXServiceProvider::MakeInstance(sal_uInt16 } else { - SwClientIter aIter( *pType ); - SwXFieldMaster* pMaster = (SwXFieldMaster*)aIter.First( TYPE( SwXFieldMaster )); + SwXFieldMaster* pMaster = SwIterator<SwXFieldMaster,SwFieldType>::FirstElement( *pType ); if(pMaster) xRet = (cppu::OWeakObject*)pMaster; } @@ -625,24 +608,17 @@ uno::Reference< uno::XInterface > SwXServiceProvider::MakeInstance(sal_uInt16 ******************************************************************/ //SMART_UNO_IMPLEMENTATION( SwXTextTables, UsrObject ); -/*-- 13.01.99 12:56:24--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXTextTables::SwXTextTables(SwDoc* pDc) : SwUnoCollection(pDc) { } -/*-- 13.01.99 12:56:25--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextTables::~SwXTextTables() { } -/*-- 13.01.99 12:56:25--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXTextTables::getCount(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -651,9 +627,7 @@ sal_Int32 SwXTextTables::getCount(void) throw( uno::RuntimeException ) nRet = GetDoc()->GetTblFrmFmtCount(sal_True); return nRet; } -/*-- 13.01.99 12:56:26--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SAL_CALL SwXTextTables::getByIndex(sal_Int32 nIndex) throw( IndexOutOfBoundsException, WrappedTargetException, uno::RuntimeException ) { @@ -675,9 +649,7 @@ uno::Any SAL_CALL SwXTextTables::getByIndex(sal_Int32 nIndex) throw uno::RuntimeException(); return aRet; } -/*-- 13.01.99 12:56:26--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTextTables::getByName(const OUString& rItemName) throw( NoSuchElementException, WrappedTargetException, uno::RuntimeException ) { @@ -706,9 +678,7 @@ uno::Any SwXTextTables::getByName(const OUString& rItemName) throw uno::RuntimeException(); return aRet; } -/*-- 13.01.99 12:56:26--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextTables::getElementNames(void) throw( uno::RuntimeException ) { @@ -729,9 +699,7 @@ uno::Sequence< OUString > SwXTextTables::getElementNames(void) } return aSeq; } -/*-- 13.01.99 12:56:27--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTables::hasByName(const OUString& rName) throw( uno::RuntimeException ) { @@ -755,18 +723,14 @@ sal_Bool SwXTextTables::hasByName(const OUString& rName) throw uno::RuntimeException(); return bRet; } -/*-- 13.01.99 12:56:27--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SAL_CALL SwXTextTables::getElementType( ) throw(uno::RuntimeException) { return ::getCppuType((uno::Reference<XTextTable>*)0); } -/*-- 13.01.99 12:56:27--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTables::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -774,23 +738,17 @@ sal_Bool SwXTextTables::hasElements(void) throw( uno::RuntimeException ) throw uno::RuntimeException(); return 0 != GetDoc()->GetTblFrmFmtCount(sal_True); } -/* -----------------25.10.99 16:01------------------- - --------------------------------------------------*/ OUString SwXTextTables::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextTables"); } -/* -----------------25.10.99 16:01------------------- - --------------------------------------------------*/ sal_Bool SwXTextTables::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) { return rServiceName == C2U("com.sun.star.text.TextTables"); } -/* -----------------25.10.99 16:01------------------- - --------------------------------------------------*/ uno::Sequence< OUString > SwXTextTables::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -798,14 +756,11 @@ uno::Sequence< OUString > SwXTextTables::getSupportedServiceNames(void) throw( u pArr[0] = C2U("com.sun.star.text.TextTables"); return aRet; } -/*-- 13.01.99 12:56:28--------------------------------------------------- - -----------------------------------------------------------------------*/ XTextTable* SwXTextTables::GetObject( SwFrmFmt& rFmt ) { vos::OGuard aGuard(Application::GetSolarMutex()); - SwXTextTable* pTbl = (SwXTextTable*)SwClientIter( rFmt ). - First( TYPE( SwXTextTable )); + SwXTextTable* pTbl = SwIterator<SwXTextTable,SwFmt>::FirstElement( rFmt ); if( !pTbl ) pTbl = new SwXTextTable(rFmt); return pTbl ; @@ -846,7 +801,7 @@ namespace template<FlyCntType T> static uno::Any lcl_UnoWrapFrame(SwFrmFmt* pFmt) { - SwXFrame* pFrm = static_cast<SwXFrame*>(SwClientIter(*pFmt).First(TYPE(SwXFrame))); + SwXFrame* pFrm = SwIterator<SwXFrame,SwFmt>::FirstElement( *pFmt ); if(!pFrm) pFrm = new typename UnoFrameWrap_traits<T>::core_frame_t(*pFmt); Reference< typename UnoFrameWrap_traits<T>::uno_frame_t > xFrm = @@ -1114,7 +1069,7 @@ sal_Bool SwXFrames::hasElements(void) throw(uno::RuntimeException) SwXFrame* SwXFrames::GetObject(SwFrmFmt& rFmt, FlyCntType eType) { - SwXFrame* pFrm = (SwXFrame*)SwClientIter(rFmt).First(TYPE(SwXFrame)); + SwXFrame* pFrm = SwIterator<SwXFrame,SwFmt>::FirstElement( rFmt ); if(pFrm) return pFrm; switch(eType) { @@ -1132,23 +1087,21 @@ SwXFrame* SwXFrames::GetObject(SwFrmFmt& rFmt, FlyCntType eType) /****************************************************************** * SwXTextFrames ******************************************************************/ -/* -----------------------------06.04.00 12:44-------------------------------- - - ---------------------------------------------------------------------------*/ OUString SwXTextFrames::getImplementationName(void) throw( RuntimeException ) { return C2U("SwXTextFrames"); } -/* -----------------------------06.04.00 12:44-------------------------------- +<<<<<<< local +BOOL SwXTextFrames::supportsService(const OUString& rServiceName) throw( RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTextFrames::supportsService(const OUString& rServiceName) throw( RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.TextFrames") == rServiceName; } -/* -----------------------------06.04.00 12:44-------------------------------- - ---------------------------------------------------------------------------*/ Sequence< OUString > SwXTextFrames::getSupportedServiceNames(void) throw( RuntimeException ) { Sequence< OUString > aRet(1); @@ -1156,16 +1109,12 @@ Sequence< OUString > SwXTextFrames::getSupportedServiceNames(void) throw( Runtim pArray[0] = C2U("com.sun.star.text.TextFrames"); return aRet; } -/*-- 14.01.99 08:06:16--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFrames::SwXTextFrames(SwDoc* _pDoc) : SwXFrames(_pDoc, FLYCNTTYPE_FRM) { } -/*-- 14.01.99 08:06:17--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFrames::~SwXTextFrames() { } @@ -1173,25 +1122,22 @@ SwXTextFrames::~SwXTextFrames() /****************************************************************** * SwXTextGraphicObjects ******************************************************************/ -//SMART_UNO_IMPLEMENTATION( SwXTextGraphicObjects, UsrObject ); - -/* -----------------------------06.04.00 12:44-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXTextGraphicObjects::getImplementationName(void) throw( RuntimeException ) { return C2U("SwXTextGraphicObjects"); } -/* -----------------------------06.04.00 12:44-------------------------------- +<<<<<<< local +BOOL SwXTextGraphicObjects::supportsService(const OUString& rServiceName) throw( RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTextGraphicObjects::supportsService(const OUString& rServiceName) throw( RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.TextGraphicObjects") == rServiceName; } -/* -----------------------------06.04.00 12:44-------------------------------- - ---------------------------------------------------------------------------*/ Sequence< OUString > SwXTextGraphicObjects::getSupportedServiceNames(void) throw( RuntimeException ) { Sequence< OUString > aRet(1); @@ -1199,16 +1145,12 @@ Sequence< OUString > SwXTextGraphicObjects::getSupportedServiceNames(void) throw pArray[0] = C2U("com.sun.star.text.TextGraphicObjects"); return aRet; } -/*-- 14.01.99 08:45:53--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextGraphicObjects::SwXTextGraphicObjects(SwDoc* _pDoc) : SwXFrames(_pDoc, FLYCNTTYPE_GRF) { } -/*-- 14.01.99 08:45:54--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextGraphicObjects::~SwXTextGraphicObjects() { } @@ -1216,23 +1158,21 @@ SwXTextGraphicObjects::~SwXTextGraphicObjects() /****************************************************************** * SwXTextEmbeddedObjects ******************************************************************/ -/* -----------------------------06.04.00 12:44-------------------------------- - - ---------------------------------------------------------------------------*/ OUString SwXTextEmbeddedObjects::getImplementationName(void) throw( RuntimeException ) { return C2U("SwXTextEmbeddedObjects"); } -/* -----------------------------06.04.00 12:44-------------------------------- +<<<<<<< local +BOOL SwXTextEmbeddedObjects::supportsService(const OUString& rServiceName) throw( RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTextEmbeddedObjects::supportsService(const OUString& rServiceName) throw( RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.TextEmbeddedObjects") == rServiceName; } -/* -----------------------------06.04.00 12:44-------------------------------- - ---------------------------------------------------------------------------*/ Sequence< OUString > SwXTextEmbeddedObjects::getSupportedServiceNames(void) throw( RuntimeException ) { Sequence< OUString > aRet(1); @@ -1240,16 +1180,12 @@ Sequence< OUString > SwXTextEmbeddedObjects::getSupportedServiceNames(void) thro pArray[0] = C2U("com.sun.star.text.TextEmbeddedObjects"); return aRet; } -/*-- 14.01.99 08:45:13--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextEmbeddedObjects::SwXTextEmbeddedObjects(SwDoc* _pDoc) : SwXFrames(_pDoc, FLYCNTTYPE_OLE) { } -/*-- 14.01.99 08:45:31--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextEmbeddedObjects::~SwXTextEmbeddedObjects() { } @@ -1258,23 +1194,21 @@ SwXTextEmbeddedObjects::~SwXTextEmbeddedObjects() * ******************************************************************/ #define PASSWORD_STD_TIMEOUT 1000 -/* -----------------------------06.04.00 12:44-------------------------------- - - ---------------------------------------------------------------------------*/ OUString SwXTextSections::getImplementationName(void) throw( RuntimeException ) { return C2U("SwXTextSections"); } -/* -----------------------------06.04.00 12:44-------------------------------- +<<<<<<< local +BOOL SwXTextSections::supportsService(const OUString& rServiceName) throw( RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTextSections::supportsService(const OUString& rServiceName) throw( RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.TextSections") == rServiceName; } -/* -----------------------------06.04.00 12:44-------------------------------- - ---------------------------------------------------------------------------*/ Sequence< OUString > SwXTextSections::getSupportedServiceNames(void) throw( RuntimeException ) { Sequence< OUString > aRet(1); @@ -1282,22 +1216,16 @@ Sequence< OUString > SwXTextSections::getSupportedServiceNames(void) throw( Runt pArray[0] = C2U("com.sun.star.text.TextSections"); return aRet; } -/*-- 14.01.99 09:06:05--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextSections::SwXTextSections(SwDoc* _pDoc) : SwUnoCollection(_pDoc) { } -/*-- 14.01.99 09:06:05--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextSections::~SwXTextSections() { } -/*-- 14.01.99 09:06:05--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXTextSections::getCount(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1312,9 +1240,7 @@ sal_Int32 SwXTextSections::getCount(void) throw( uno::RuntimeException ) } return nCount; } -/*-- 14.01.99 09:06:06--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTextSections::getByIndex(sal_Int32 nIndex) throw( IndexOutOfBoundsException, WrappedTargetException, uno::RuntimeException ) { @@ -1347,9 +1273,7 @@ uno::Any SwXTextSections::getByIndex(sal_Int32 nIndex) throw uno::RuntimeException(); return makeAny(xRet); } -/*-- 14.01.99 09:06:06--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTextSections::getByName(const OUString& Name) throw( NoSuchElementException, WrappedTargetException, uno::RuntimeException ) { @@ -1378,9 +1302,7 @@ uno::Any SwXTextSections::getByName(const OUString& Name) throw uno::RuntimeException(); return aRet; } -/*-- 14.01.99 09:06:06--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextSections::getElementNames(void) throw( uno::RuntimeException ) { @@ -1413,9 +1335,7 @@ uno::Sequence< OUString > SwXTextSections::getElementNames(void) } return aSeq; } -/*-- 14.01.99 09:06:06--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextSections::hasByName(const OUString& Name) throw( uno::RuntimeException ) { @@ -1443,16 +1363,12 @@ sal_Bool SwXTextSections::hasByName(const OUString& Name) } return bRet; } -/*-- 14.01.99 09:06:06--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SAL_CALL SwXTextSections::getElementType() throw(uno::RuntimeException) { return ::getCppuType((uno::Reference<XTextSection>*)0); } -/*-- 14.01.99 09:06:06--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextSections::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1466,9 +1382,7 @@ sal_Bool SwXTextSections::hasElements(void) throw( uno::RuntimeException ) throw uno::RuntimeException(); return nCount > 0; } -/*-- 14.01.99 09:06:07--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< XTextSection > SwXTextSections::GetObject( SwSectionFmt& rFmt ) { return SwXTextSection::CreateXTextSection(&rFmt); @@ -1642,23 +1556,21 @@ sal_Bool SwXNumberingRulesCollection::hasElements(void) throw( uno::RuntimeExcep return GetDoc()->GetNumRuleTbl().Count() > 0; } -/* -----------------------------06.04.00 12:44-------------------------------- - - ---------------------------------------------------------------------------*/ OUString SwXFootnotes::getImplementationName(void) throw( RuntimeException ) { return C2U("SwXFootnotes"); } -/* -----------------------------06.04.00 12:44-------------------------------- +<<<<<<< local +BOOL SwXFootnotes::supportsService(const OUString& rServiceName) throw( RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXFootnotes::supportsService(const OUString& rServiceName) throw( RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.Footnotes") == rServiceName; } -/* -----------------------------06.04.00 12:44-------------------------------- - ---------------------------------------------------------------------------*/ Sequence< OUString > SwXFootnotes::getSupportedServiceNames(void) throw( RuntimeException ) { Sequence< OUString > aRet(1); @@ -1666,23 +1578,17 @@ Sequence< OUString > SwXFootnotes::getSupportedServiceNames(void) throw( Runtime pArray[0] = C2U("com.sun.star.text.Footnotes"); return aRet; } -/*-- 14.01.99 09:03:52--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXFootnotes::SwXFootnotes(sal_Bool bEnd, SwDoc* _pDoc) : SwUnoCollection(_pDoc) , m_bEndnote(bEnd) { } -/*-- 14.01.99 09:03:52--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXFootnotes::~SwXFootnotes() { } -/*-- 14.01.99 09:03:53--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXFootnotes::getCount(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1701,9 +1607,7 @@ sal_Int32 SwXFootnotes::getCount(void) throw( uno::RuntimeException ) } return nCount; } -/*-- 14.01.99 09:03:53--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXFootnotes::getByIndex(sal_Int32 nIndex) throw( IndexOutOfBoundsException, WrappedTargetException, uno::RuntimeException ) { @@ -1737,16 +1641,12 @@ uno::Any SwXFootnotes::getByIndex(sal_Int32 nIndex) throw uno::RuntimeException(); return aRet; } -/*-- 14.01.99 09:03:53--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SAL_CALL SwXFootnotes::getElementType() throw(uno::RuntimeException) { return ::getCppuType((uno::Reference<XFootnote>*)0); } -/*-- 14.01.99 09:03:54--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXFootnotes::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1754,9 +1654,7 @@ sal_Bool SwXFootnotes::hasElements(void) throw( uno::RuntimeException ) throw uno::RuntimeException(); return GetDoc()->GetFtnIdxs().Count() > 0; } -/* -----------------------------05.09.00 12:48-------------------------------- - ---------------------------------------------------------------------------*/ Reference<XFootnote> SwXFootnotes::GetObject( SwDoc& rDoc, const SwFmtFtn& rFmt ) { return SwXFootnote::CreateXFootnote(rDoc, rFmt); @@ -1765,23 +1663,22 @@ Reference<XFootnote> SwXFootnotes::GetObject( SwDoc& rDoc, const SwFmtFtn& rF /****************************************************************** * ******************************************************************/ -/* -----------------------------06.04.00 12:44-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXReferenceMarks::getImplementationName(void) throw( RuntimeException ) { return C2U("SwXReferenceMarks"); } -/* -----------------------------06.04.00 12:44-------------------------------- +<<<<<<< local +BOOL SwXReferenceMarks::supportsService(const OUString& rServiceName) throw( RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXReferenceMarks::supportsService(const OUString& rServiceName) throw( RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.ReferenceMarks") == rServiceName; } -/* -----------------------------06.04.00 12:44-------------------------------- - ---------------------------------------------------------------------------*/ Sequence< OUString > SwXReferenceMarks::getSupportedServiceNames(void) throw( RuntimeException ) { Sequence< OUString > aRet(1); @@ -1789,22 +1686,16 @@ Sequence< OUString > SwXReferenceMarks::getSupportedServiceNames(void) throw( Ru pArray[0] = C2U("com.sun.star.text.ReferenceMarks"); return aRet; } -/*-- 14.01.99 09:03:16--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXReferenceMarks::SwXReferenceMarks(SwDoc* _pDoc) : SwUnoCollection(_pDoc) { } -/*-- 14.01.99 09:03:16--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXReferenceMarks::~SwXReferenceMarks() { } -/*-- 14.01.99 09:03:17--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXReferenceMarks::getCount(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1812,9 +1703,7 @@ sal_Int32 SwXReferenceMarks::getCount(void) throw( uno::RuntimeException ) throw uno::RuntimeException(); return GetDoc()->GetRefMarks(); } -/*-- 14.01.99 09:03:17--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXReferenceMarks::getByIndex(sal_Int32 nIndex) throw( IndexOutOfBoundsException, WrappedTargetException, uno::RuntimeException ) { @@ -1836,9 +1725,7 @@ uno::Any SwXReferenceMarks::getByIndex(sal_Int32 nIndex) throw IndexOutOfBoundsException(); return aRet; } -/*-- 14.01.99 09:03:17--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXReferenceMarks::getByName(const OUString& rName) throw( NoSuchElementException, WrappedTargetException, uno::RuntimeException ) { @@ -1859,9 +1746,7 @@ uno::Any SwXReferenceMarks::getByName(const OUString& rName) throw uno::RuntimeException(); return aRet; } -/*-- 14.01.99 09:03:17--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXReferenceMarks::getElementNames(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1879,9 +1764,7 @@ uno::Sequence< OUString > SwXReferenceMarks::getElementNames(void) throw( uno::R throw uno::RuntimeException(); return aRet; } -/*-- 14.01.99 09:03:17--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXReferenceMarks::hasByName(const OUString& rName) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1889,16 +1772,12 @@ sal_Bool SwXReferenceMarks::hasByName(const OUString& rName) throw( uno::Runtime throw uno::RuntimeException(); return 0 != GetDoc()->GetRefMark( rName); } -/*-- 14.01.99 09:03:18--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SAL_CALL SwXReferenceMarks::getElementType() throw(uno::RuntimeException) { return ::getCppuType((uno::Reference<XTextContent>*)0); } -/*-- 14.01.99 09:03:18--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXReferenceMarks::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1906,9 +1785,7 @@ sal_Bool SwXReferenceMarks::hasElements(void) throw( uno::RuntimeException ) throw uno::RuntimeException(); return 0 != GetDoc()->GetRefMarks(); } -/*-- 14.01.99 09:03:19--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXReferenceMark* SwXReferenceMarks::GetObject( SwDoc* pDoc, const SwFmtRefMark* pMark ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1919,9 +1796,7 @@ SwXReferenceMark* SwXReferenceMarks::GetObject( SwDoc* pDoc, const SwFmtRefMark* /****************************************************************** * ******************************************************************/ -/*-----------------11.03.98 11:18------------------- - Gueltigkeitspruefung ---------------------------------------------------*/ + void SwUnoCollection::Invalidate() { bObjectValid = sal_False; diff --git a/sw/source/core/unocore/unocrsrhelper.cxx b/sw/source/core/unocore/unocrsrhelper.cxx index ea8f94600272..e208dcd52f19 100644 --- a/sw/source/core/unocore/unocrsrhelper.cxx +++ b/sw/source/core/unocore/unocrsrhelper.cxx @@ -386,7 +386,7 @@ sal_Bool getCrsrPropertyValue(const SfxItemPropertySimpleEntry& rEntry { if( pAny ) { - SwXTextField* pField = CreateSwXTextField(*rPam.GetDoc(), + SwXTextField* pField = SwXTextField::CreateSwXTextField(*rPam.GetDoc(), pTxtAttr->GetFld()); *pAny <<= uno::Reference< XTextField >( pField ); } @@ -783,7 +783,7 @@ void getNumberingProperty(SwPaM& rPam, PropertyState& eState, Any * pAny ) * --------------------------------------------------*/ void GetCurPageStyle(SwPaM& rPaM, String &rString) { - const SwPageFrm* pPage = rPaM.GetCntntNode()->GetFrm()->FindPageFrm(); + const SwPageFrm* pPage = rPaM.GetCntntNode()->getLayoutFrm(rPaM.GetDoc()->GetCurrentLayout())->FindPageFrm(); if(pPage) SwStyleNameMapper::FillProgName( pPage->GetPageDesc()->GetName(), rString, nsSwGetPoolIdFromName::GET_POOLID_PAGEDESC, sal_True ); } diff --git a/sw/source/core/unocore/unodraw.cxx b/sw/source/core/unocore/unodraw.cxx index 2a2e1e497d13..f3fc03148bbe 100644 --- a/sw/source/core/unocore/unodraw.cxx +++ b/sw/source/core/unocore/unodraw.cxx @@ -61,7 +61,6 @@ #include <fmtornt.hxx> #include <fmtanchr.hxx> #include <fmtsrnd.hxx> -// OD 2004-04-21 #i26791# #include <fmtfollowtextflow.hxx> #include <rootfrm.hxx> #include <editeng/lrspitem.hxx> @@ -87,6 +86,7 @@ #include <vcl/svapp.hxx> #include <slist> #include <iterator> +#include <switerator.hxx> using ::rtl::OUString; using namespace ::com::sun::star; @@ -95,9 +95,6 @@ DECLARE_STL_USTRINGACCESS_MAP( uno::Sequence< sal_Int8 > *, SwShapeImplementati static SwShapeImplementationIdMap aImplementationIdMap; -/* -----------------22.01.99 13:19------------------- - * - * --------------------------------------------------*/ class SwShapeDescriptor_Impl { SwFmtHoriOrient* pHOrient; @@ -283,67 +280,50 @@ public: class SwFmDrawPage ****************************************************************************/ -/* -----------------28.01.99 12:03------------------- - * - * --------------------------------------------------*/ SwFmDrawPage::SwFmDrawPage( SdrPage* pPage ) : SvxFmDrawPage( pPage ), pPageView(0) { } -/*-- 22.01.99 11:13:07--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwFmDrawPage::~SwFmDrawPage() throw () { RemovePageView(); } -/*-- 22.01.99 11:13:07--------------------------------------------------- - -----------------------------------------------------------------------*/ const SdrMarkList& SwFmDrawPage::PreGroup(const uno::Reference< drawing::XShapes > & xShapes) { _SelectObjectsInView( xShapes, GetPageView() ); const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); return rMarkList; } -/*-- 22.01.99 11:13:08--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwFmDrawPage::PreUnGroup(const uno::Reference< drawing::XShapeGroup > xShapeGroup) { uno::Reference< drawing::XShape > xShape( xShapeGroup, uno::UNO_QUERY); _SelectObjectInView( xShape, GetPageView() ); } -/*-- 22.01.99 11:13:08--------------------------------------------------- - -----------------------------------------------------------------------*/ SdrPageView* SwFmDrawPage::GetPageView() { if(!pPageView) pPageView = mpView->ShowSdrPage( mpPage ); return pPageView; } -/*-- 22.01.99 11:13:08--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwFmDrawPage::RemovePageView() { if(pPageView && mpView) mpView->HideSdrPage(); pPageView = 0; } -/*-- 22.01.99 11:13:09--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< uno::XInterface > SwFmDrawPage::GetInterface( SdrObject* pObj ) { uno::Reference< XInterface > xShape; if( pObj ) { SwFrmFmt* pFmt = ::FindFrmFmt( pObj ); - SwXShape* pxShape = (SwXShape*)SwClientIter( *pFmt ). - First( TYPE( SwXShape )); + SwXShape* pxShape = SwIterator<SwXShape,SwFmt>::FirstElement( *pFmt ); if(pxShape) { xShape = *(cppu::OWeakObject*)pxShape; @@ -353,17 +333,12 @@ uno::Reference< uno::XInterface > SwFmDrawPage::GetInterface( SdrObject* pObj } return xShape; } -/*-- 22.01.99 11:13:09--------------------------------------------------- - -----------------------------------------------------------------------*/ SdrObject* SwFmDrawPage::_CreateSdrObject( const uno::Reference< drawing::XShape > & xShape ) throw () { //TODO: stimmt das so - kann die Methode weg? return SvxFmDrawPage::_CreateSdrObject( xShape ); } -/*-- 22.01.99 11:13:09--------------------------------------------------- - - -----------------------------------------------------------------------*/ uno::Reference< drawing::XShape > SwFmDrawPage::_CreateShape( SdrObject *pObj ) const throw () { @@ -508,23 +483,22 @@ uno::Reference< container::XEnumeration > SwXDrawPage::createEnumeration(void) t return uno::Reference< container::XEnumeration >( new SwXShapesEnumeration(this)); } -/* -----------------------------06.04.00 13:14-------------------------------- - ---------------------------------------------------------------------------*/ rtl::OUString SwXDrawPage::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXDrawPage"); } -/* -----------------------------06.04.00 13:14-------------------------------- +<<<<<<< local +BOOL SwXDrawPage::supportsService(const rtl::OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXDrawPage::supportsService(const rtl::OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.drawing.GenericDrawPage") == rServiceName; } -/* -----------------------------06.04.00 13:14-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< rtl::OUString > SwXDrawPage::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< rtl::OUString > aRet(1); @@ -532,17 +506,13 @@ uno::Sequence< rtl::OUString > SwXDrawPage::getSupportedServiceNames(void) throw pArray[0] = C2U("com.sun.star.drawing.GenericDrawPage"); return aRet; } -/*-- 22.01.99 11:22:25--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXDrawPage::SwXDrawPage(SwDoc* pDc) : pDoc(pDc), pDrawPage(0) { } -/*-- 22.01.99 11:22:25--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXDrawPage::~SwXDrawPage() { if(xPageAgg.is()) @@ -551,9 +521,7 @@ SwXDrawPage::~SwXDrawPage() xPageAgg->setDelegator(xInt); } } -/* -----------------------------15.06.00 15:00-------------------------------- - ---------------------------------------------------------------------------*/ uno::Any SwXDrawPage::queryInterface( const uno::Type& aType ) throw( uno::RuntimeException ) { @@ -573,9 +541,7 @@ uno::Any SwXDrawPage::queryInterface( const uno::Type& aType ) } return aRet; } -/* -----------------------------15.06.00 15:01-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< uno::Type > SwXDrawPage::getTypes() throw( uno::RuntimeException ) { uno::Sequence< uno::Type > aPageTypes = SwXDrawPageBaseClass::getTypes(); @@ -594,9 +560,7 @@ uno::Sequence< uno::Type > SwXDrawPage::getTypes() throw( uno::RuntimeException pPageTypes[nIndex] = ::getCppuType((uno::Reference<form::XFormsSupplier2>*)0); return aPageTypes; } -/*-- 22.01.99 11:33:44--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXDrawPage::getCount(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -610,9 +574,7 @@ sal_Int32 SwXDrawPage::getCount(void) throw( uno::RuntimeException ) return pDrawPage->getCount(); } } -/*-- 22.01.99 11:33:46--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXDrawPage::getByIndex(sal_Int32 nIndex) throw( lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) @@ -626,16 +588,12 @@ uno::Any SwXDrawPage::getByIndex(sal_Int32 nIndex) ((SwXDrawPage*)this)->GetSvxPage(); return pDrawPage->getByIndex( nIndex ); } -/* -----------------22.01.99 13:13------------------- - * - * --------------------------------------------------*/ + uno::Type SwXDrawPage::getElementType(void) throw( uno::RuntimeException ) { return ::getCppuType((const uno::Reference<drawing::XShape>*)0); } -/* -----------------22.01.99 13:13------------------- - * - * --------------------------------------------------*/ + sal_Bool SwXDrawPage::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -647,9 +605,6 @@ sal_Bool SwXDrawPage::hasElements(void) throw( uno::RuntimeException ) return ((SwXDrawPage*)this)->GetSvxPage()->hasElements(); } -/* -----------------22.01.99 12:42------------------- - * - * --------------------------------------------------*/ void SwXDrawPage::add(const uno::Reference< drawing::XShape > & xShape) throw( uno::RuntimeException ) { @@ -791,11 +746,11 @@ void SwXDrawPage::add(const uno::Reference< drawing::XShape > & xShape) else throw uno::RuntimeException(); } - else if ((aAnchor.GetAnchorId() != FLY_AT_PAGE) && pDoc->GetRootFrm()) + else if ((aAnchor.GetAnchorId() != FLY_AT_PAGE) && pDoc->GetCurrentLayout()) { SwCrsrMoveState aState( MV_SETONLYTEXT ); Point aTmp(MM100_TO_TWIP(aMM100Pos.X), MM100_TO_TWIP(aMM100Pos.Y)); - pDoc->GetRootFrm()->GetCrsrOfst( pPam->GetPoint(), aTmp, &aState ); + pDoc->GetCurrentLayout()->GetCrsrOfst( pPam->GetPoint(), aTmp, &aState ); //swmod 080218 aAnchor.SetAnchor( pPam->GetPoint() ); // --> OD 2004-08-18 #i32349# - adjustment of vertical positioning @@ -822,9 +777,7 @@ void SwXDrawPage::add(const uno::Reference< drawing::XShape > & xShape) delete pPam; delete pInternalPam; } -/* -----------------22.01.99 12:42------------------- - * - * --------------------------------------------------*/ + void SwXDrawPage::remove(const uno::Reference< drawing::XShape > & xShape) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -833,9 +786,7 @@ void SwXDrawPage::remove(const uno::Reference< drawing::XShape > & xShape) throw uno::Reference<lang::XComponent> xComp(xShape, uno::UNO_QUERY); xComp->dispose(); } -/* -----------------17.02.99 10:38------------------- - * - * --------------------------------------------------*/ + uno::Reference< drawing::XShapeGroup > SwXDrawPage::group(const uno::Reference< drawing::XShapes > & xShapes) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -889,9 +840,7 @@ uno::Reference< drawing::XShapeGroup > SwXDrawPage::group(const uno::Reference< } return xRet; } -/* -----------------17.02.99 10:38------------------- - * - * --------------------------------------------------*/ + void SwXDrawPage::ungroup(const uno::Reference< drawing::XShapeGroup > & xShapeGroup) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -915,9 +864,7 @@ void SwXDrawPage::ungroup(const uno::Reference< drawing::XShapeGroup > & xShapeG pPage->RemovePageView(); } } -/* -----------------05.05.98 17:05------------------- - * - * --------------------------------------------------*/ + SwFmDrawPage* SwXDrawPage::GetSvxPage() { if(!xPageAgg.is() && pDoc) @@ -953,17 +900,13 @@ void SwXDrawPage::InvalidateSwDoc() ****************************************************************************/ TYPEINIT1(SwXShape, SwClient); -/* -----------------------------10.03.00 18:02-------------------------------- - ---------------------------------------------------------------------------*/ const uno::Sequence< sal_Int8 > & SwXShape::getUnoTunnelId() { static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); return aSeq; } -/* -----------------------------10.03.00 18:04-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXShape::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw(uno::RuntimeException) { @@ -997,9 +940,7 @@ namespace } } -/* -----------------01.02.99 11:38------------------- - * - * --------------------------------------------------*/ + SwXShape::SwXShape(uno::Reference< uno::XInterface > & xShape) : m_pPropSet(aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_SHAPE)), m_pPropertyMapEntries(aSwMapProvider.GetPropertyMapEntries(PROPERTY_MAP_TEXT_SHAPE)), @@ -1049,9 +990,6 @@ SwXShape::SwXShape(uno::Reference< uno::XInterface > & xShape) : } } -/*-- 09.04.09 15:06:13--------------------------------------------------- - - -----------------------------------------------------------------------*/ void SwXShape::AddExistingShapeToFmt( SdrObject& _rObj ) { SdrObjListIter aIter( _rObj, IM_DEEPNOGROUPS ); @@ -1086,9 +1024,7 @@ void SwXShape::AddExistingShapeToFmt( SdrObject& _rObj ) } } -/*-- 22.01.99 11:42:26--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXShape::~SwXShape() { if (xShapeAgg.is()) @@ -1098,9 +1034,7 @@ SwXShape::~SwXShape() } delete pImpl; } -/* -----------------------------16.06.00 12:21-------------------------------- - ---------------------------------------------------------------------------*/ uno::Any SwXShape::queryInterface( const uno::Type& aType ) throw( uno::RuntimeException ) { uno::Any aRet = SwXShapeBaseClass::queryInterface(aType); @@ -1117,9 +1051,7 @@ uno::Any SwXShape::queryInterface( const uno::Type& aType ) throw( uno::RuntimeE // <-- return aRet; } -/* -----------------------------16.06.00 12:21-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< uno::Type > SwXShape::getTypes( ) throw(uno::RuntimeException) { uno::Sequence< uno::Type > aRet = SwXShapeBaseClass::getTypes(); @@ -1143,9 +1075,7 @@ uno::Sequence< uno::Type > SwXShape::getTypes( ) throw(uno::RuntimeException) } return aRet; } -/* -----------------------------04.04.01 07:37-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< sal_Int8 > SwXShape::getImplementationId( ) throw(uno::RuntimeException) { vos::OGuard aGuard( Application::GetSolarMutex() ); @@ -1187,9 +1117,7 @@ uno::Sequence< sal_Int8 > SwXShape::getImplementationId( ) throw(uno::RuntimeEx return *pImplementationId; } } -/*-- 22.01.99 11:42:26--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXShape::getPropertySetInfo(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1212,9 +1140,7 @@ uno::Reference< beans::XPropertySetInfo > SwXShape::getPropertySetInfo(void) th aRet = m_pPropSet->getPropertySetInfo(); return aRet; } -/*-- 22.01.99 11:42:27--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXShape::setPropertyValue(const rtl::OUString& rPropertyName, const uno::Any& aValue) throw( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, @@ -1357,7 +1283,7 @@ void SwXShape::setPropertyValue(const rtl::OUString& rPropertyName, const uno::A pFmt->SetPositionLayoutDir( nPositionLayoutDir ); } // <-- - else if( pDoc->GetRootFrm() ) + else if( pDoc->GetCurrentLayout()) //swmod 080218 { UnoActionContext aCtx(pDoc); if(RES_ANCHOR == pEntry->nWID && MID_ANCHOR_ANCHORTYPE == pEntry->nMemberId) @@ -1422,11 +1348,11 @@ void SwXShape::setPropertyValue(const rtl::OUString& rPropertyName, const uno::A //if the fly has been anchored at page then it needs to be connected //to the content position SwPaM aPam(pDoc->GetNodes().GetEndOfContent()); - if( pDoc->GetRootFrm() ) + if( pDoc->GetCurrentLayout() ) { SwCrsrMoveState aState( MV_SETONLYTEXT ); Point aTmp( pObj->GetSnapRect().TopLeft() ); - pDoc->GetRootFrm()->GetCrsrOfst( aPam.GetPoint(), aTmp, &aState ); + pDoc->GetCurrentLayout()->GetCrsrOfst( aPam.GetPoint(), aTmp, &aState ); } else { @@ -1541,7 +1467,7 @@ void SwXShape::setPropertyValue(const rtl::OUString& rPropertyName, const uno::A aKeepedPosition = getPosition(); } // <-- - if( pFmt && pFmt->GetDoc()->GetRootFrm() ) + if( pFmt && pFmt->GetDoc()->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { UnoActionContext aCtx(pFmt->GetDoc()); xPrSet->setPropertyValue(rPropertyName, aValue); @@ -1576,9 +1502,7 @@ void SwXShape::setPropertyValue(const rtl::OUString& rPropertyName, const uno::A } } } -/*-- 22.01.99 11:42:27--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXShape::getPropertyValue(const rtl::OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) @@ -1808,12 +1732,6 @@ uno::Any SwXShape::getPropertyValue(const rtl::OUString& rPropertyName) return aRet; } -/** method to get property from aggregation object - - OD 2004-10-28 #i36248# - - @author OD -*/ uno::Any SwXShape::_getPropAtAggrObj( const ::rtl::OUString& _rPropertyName ) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) @@ -1835,9 +1753,6 @@ uno::Any SwXShape::_getPropAtAggrObj( const ::rtl::OUString& _rPropertyName ) } -/* -----------------------------02.11.00 09:41-------------------------------- - - ---------------------------------------------------------------------------*/ beans::PropertyState SwXShape::getPropertyState( const rtl::OUString& rPropertyName ) throw(beans::UnknownPropertyException, uno::RuntimeException) { @@ -1848,9 +1763,7 @@ beans::PropertyState SwXShape::getPropertyState( const rtl::OUString& rPropertyN uno::Sequence< beans::PropertyState > aStates = getPropertyStates(aNames); return aStates.getConstArray()[0]; } -/* -----------------------------02.11.00 09:41-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< beans::PropertyState > SwXShape::getPropertyStates( const uno::Sequence< rtl::OUString >& aPropertyNames ) throw(beans::UnknownPropertyException, uno::RuntimeException) @@ -1952,9 +1865,7 @@ uno::Sequence< beans::PropertyState > SwXShape::getPropertyStates( throw uno::RuntimeException(); return aRet; } -/* -----------------------------02.11.00 09:41-------------------------------- - ---------------------------------------------------------------------------*/ void SwXShape::setPropertyToDefault( const rtl::OUString& rPropertyName ) throw(beans::UnknownPropertyException, uno::RuntimeException) { @@ -2016,9 +1927,7 @@ void SwXShape::setPropertyToDefault( const rtl::OUString& rPropertyName ) else throw uno::RuntimeException(); } -/* -----------------------------02.11.00 09:41-------------------------------- - ---------------------------------------------------------------------------*/ uno::Any SwXShape::getPropertyDefault( const rtl::OUString& rPropertyName ) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) @@ -2054,9 +1963,7 @@ uno::Any SwXShape::getPropertyDefault( const rtl::OUString& rPropertyName ) throw uno::RuntimeException(); return aRet; } -/*-- 22.01.99 11:42:27--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXShape::addPropertyChangeListener( const rtl::OUString& _propertyName, const uno::Reference< beans::XPropertyChangeListener > & _listener ) @@ -2071,9 +1978,7 @@ void SwXShape::addPropertyChangeListener( if ( xShapeAgg->queryAggregation( beans::XPropertySet::static_type() ) >>= xShapeProps ) xShapeProps->addPropertyChangeListener( _propertyName, _listener ); } -/*-- 22.01.99 11:42:27--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXShape::removePropertyChangeListener( const rtl::OUString& _propertyName, const uno::Reference< beans::XPropertyChangeListener > & _listener) @@ -2088,9 +1993,7 @@ void SwXShape::removePropertyChangeListener( if ( xShapeAgg->queryAggregation( beans::XPropertySet::static_type() ) >>= xShapeProps ) xShapeProps->removePropertyChangeListener( _propertyName, _listener ); } -/*-- 22.01.99 11:42:28--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXShape::addVetoableChangeListener( const rtl::OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/ ) @@ -2099,9 +2002,7 @@ void SwXShape::addVetoableChangeListener( { DBG_WARNING("not implemented"); } -/*-- 22.01.99 11:42:28--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXShape::removeVetoableChangeListener( const rtl::OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) @@ -2110,16 +2011,12 @@ void SwXShape::removeVetoableChangeListener( { DBG_WARNING("not implemented"); } -/*-- 22.01.99 11:42:28--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXShape::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXShape::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } -/* -----------------14.04.99 13:02------------------- - * - * --------------------------------------------------*/ + void SwXShape::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { @@ -2187,9 +2084,7 @@ void SwXShape::attach(const uno::Reference< text::XTextRange > & xTextRange) } } } -/* -----------------14.04.99 13:02------------------- - * - * --------------------------------------------------*/ + uno::Reference< text::XTextRange > SwXShape::getAnchor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2211,9 +2106,7 @@ uno::Reference< text::XTextRange > SwXShape::getAnchor(void) throw( uno::Runtim aRef = pImpl->GetTextRange(); return aRef; } -/* -----------------14.04.99 13:02------------------- - * - * --------------------------------------------------*/ + void SwXShape::dispose(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2264,9 +2157,7 @@ void SwXShape::dispose(void) throw( uno::RuntimeException ) xComp->dispose(); } } -/* -----------------14.04.99 13:02------------------- - * - * --------------------------------------------------*/ + void SwXShape::addEventListener( const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) @@ -2276,9 +2167,7 @@ void SwXShape::addEventListener( if(pSvxShape) pSvxShape->addEventListener(aListener); } -/* -----------------14.04.99 13:02------------------- - * - * --------------------------------------------------*/ + void SwXShape::removeEventListener( const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) @@ -2287,16 +2176,12 @@ void SwXShape::removeEventListener( if(pSvxShape) pSvxShape->removeEventListener(aListener); } -/* -----------------03.06.99 08:53------------------- - * - * --------------------------------------------------*/ + rtl::OUString SwXShape::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXShape"); } -/* -----------------03.06.99 08:53------------------- - * - * --------------------------------------------------*/ + sal_Bool SwXShape::supportsService(const rtl::OUString& rServiceName) throw( uno::RuntimeException ) { sal_Bool bRet = sal_False; @@ -2310,9 +2195,7 @@ sal_Bool SwXShape::supportsService(const rtl::OUString& rServiceName) throw( uno } return bRet; } -/* -----------------03.06.99 08:53------------------- - * - * --------------------------------------------------*/ + uno::Sequence< rtl::OUString > SwXShape::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< rtl::OUString > aSeq; @@ -2330,9 +2213,7 @@ uno::Sequence< rtl::OUString > SwXShape::getSupportedServiceNames(void) throw( u } return aSeq; } -/* -----------------------------15.03.00 14:54-------------------------------- - ---------------------------------------------------------------------------*/ SvxShape* SwXShape::GetSvxShape() { SvxShape* pSvxShape = 0; @@ -2910,9 +2791,7 @@ void SwXShape::_AdjustPositionProperties( const awt::Point _aPosition ) return aConvertedPath; } -/*-- 31.05.01 09:59:19--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXGroupShape::SwXGroupShape(uno::Reference< XInterface > & xShape) : SwXShape(xShape) { @@ -2922,15 +2801,11 @@ SwXGroupShape::SwXGroupShape(uno::Reference< XInterface > & xShape) : #endif } -/*-- 31.05.01 09:59:19--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXGroupShape::~SwXGroupShape() { } -/*-- 31.05.01 09:59:19--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXGroupShape::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException) { uno::Any aRet; @@ -2940,23 +2815,17 @@ uno::Any SwXGroupShape::queryInterface( const uno::Type& rType ) throw(uno::Runt aRet = SwXShape::queryInterface(rType); return aRet; } -/*-- 31.05.01 09:59:19--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXGroupShape::acquire( ) throw() { SwXShape::acquire(); } -/*-- 31.05.01 09:59:19--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXGroupShape::release( ) throw() { SwXShape::release(); } -/*-- 31.05.01 09:59:19--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXGroupShape::add( const uno::Reference< XShape >& xShape ) throw (uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3015,9 +2884,7 @@ void SwXGroupShape::add( const uno::Reference< XShape >& xShape ) throw (uno::Ru else throw uno::RuntimeException(); } -/*-- 31.05.01 09:59:20--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXGroupShape::remove( const uno::Reference< XShape >& xShape ) throw (uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3032,9 +2899,7 @@ void SwXGroupShape::remove( const uno::Reference< XShape >& xShape ) throw (uno: throw uno::RuntimeException(); xShapes->remove(xShape); } -/*-- 31.05.01 09:59:20--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXGroupShape::getCount(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3049,9 +2914,7 @@ sal_Int32 SwXGroupShape::getCount(void) throw( uno::RuntimeException ) throw uno::RuntimeException(); return xAcc->getCount(); } -/*-- 31.05.01 09:59:20--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXGroupShape::getByIndex(sal_Int32 nIndex) throw( lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) @@ -3068,9 +2931,7 @@ uno::Any SwXGroupShape::getByIndex(sal_Int32 nIndex) throw uno::RuntimeException(); return xAcc->getByIndex(nIndex); } -/*-- 31.05.01 09:59:20--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SwXGroupShape::getElementType( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3085,9 +2946,7 @@ uno::Type SwXGroupShape::getElementType( ) throw(uno::RuntimeException) throw uno::RuntimeException(); return xAcc->getElementType(); } -/*-- 31.05.01 09:59:22--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXGroupShape::hasElements( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx index f0a62ea968ac..b56eb7c0a535 100644 --- a/sw/source/core/unocore/unofield.cxx +++ b/sw/source/core/unocore/unofield.cxx @@ -93,6 +93,7 @@ #include <editeng/outliner.hxx> #include <docsh.hxx> #include <fmtmeta.hxx> // MetaFieldManager +#include <switerator.hxx> using ::rtl::OUString; using namespace ::com::sun::star; @@ -392,17 +393,13 @@ sal_uInt16 lcl_GetPropertyMapOfService( sal_uInt16 nServiceId ) * SwXFieldMaster ******************************************************************/ TYPEINIT1(SwXFieldMaster, SwClient); -/* -----------------------------13.03.00 12:15-------------------------------- - ---------------------------------------------------------------------------*/ const uno::Sequence< sal_Int8 > & SwXFieldMaster::getUnoTunnelId() { static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); return aSeq; } -/* -----------------------------10.03.00 18:04-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXFieldMaster::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw(uno::RuntimeException) { @@ -414,17 +411,18 @@ sal_Int64 SAL_CALL SwXFieldMaster::getSomething( const uno::Sequence< sal_Int8 > } return 0; } -/* -----------------------------06.04.00 13:22-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXFieldMaster::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXFieldMaster"); } -/* -----------------------------06.04.00 13:22-------------------------------- +<<<<<<< local +BOOL SwXFieldMaster::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXFieldMaster::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { sal_Bool bRet = sal_False; if(rServiceName.equalsAsciiL( @@ -452,9 +450,7 @@ sal_Bool SwXFieldMaster::supportsService(const OUString& rServiceName) throw( un } return bRet; } -/* -----------------------------06.04.00 13:22-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXFieldMaster::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(2); @@ -479,9 +475,7 @@ uno::Sequence< OUString > SwXFieldMaster::getSupportedServiceNames(void) throw( } return aRet; } -/*-- 14.12.98 11:08:33--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXFieldMaster::SwXFieldMaster(SwDoc* pDoc, sal_uInt16 nResId) : aLstnrCntnr( (XPropertySet*)this), nResTypeId(nResId), @@ -494,9 +488,7 @@ SwXFieldMaster::SwXFieldMaster(SwDoc* pDoc, sal_uInt16 nResId) : { pDoc->GetPageDescFromPool(RES_POOLPAGE_STANDARD)->Add(this); } -/*-- 14.12.98 11:08:33--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXFieldMaster::SwXFieldMaster(SwFieldType& rType, SwDoc* pDoc) : SwClient(&rType), aLstnrCntnr( (XPropertySet*)this), @@ -509,16 +501,12 @@ SwXFieldMaster::SwXFieldMaster(SwFieldType& rType, SwDoc* pDoc) : { } -/*-- 14.12.98 11:08:34--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXFieldMaster::~SwXFieldMaster() { } -/*-- 14.12.98 11:08:35--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXFieldMaster::getPropertySetInfo(void) throw( uno::RuntimeException ) { @@ -528,9 +516,7 @@ uno::Reference< beans::XPropertySetInfo > SwXFieldMaster::getPropertySetInfo(vo lcl_GetPropMapIdForFieldType( nResTypeId ) )->getPropertySetInfo(); return aRef; } -/*-- 14.12.98 11:08:35--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFieldMaster::setPropertyValue( const OUString& rPropertyName, const uno::Any& rValue) throw( beans::UnknownPropertyException, beans::PropertyVetoException, @@ -712,9 +698,7 @@ void SwXFieldMaster::setPropertyValue( const OUString& rPropertyName, } } } -/* -----------------------------30.03.01 14:40-------------------------------- - ---------------------------------------------------------------------------*/ SwFieldType* SwXFieldMaster::GetFldType(sal_Bool bDontCreate) const { if(!bDontCreate && RES_DBFLD == nResTypeId && m_bIsDescriptor && m_pDoc) @@ -743,9 +727,7 @@ SwFieldType* SwXFieldMaster::GetFldType(sal_Bool bDontCreate) const return (SwFieldType*)GetRegisteredIn(); } -/*-- 14.12.98 11:08:36--------------------------------------------------- - -----------------------------------------------------------------------*/ typedef SwFmtFld* SwFmtFldPtr; SV_DECL_PTRARR(SwDependentFields, SwFmtFldPtr, 5, 5) SV_IMPL_PTRARR(SwDependentFields, SwFmtFldPtr) @@ -772,21 +754,22 @@ uno::Any SwXFieldMaster::getPropertyValue(const OUString& rPropertyName) else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_DEPENDENT_TEXT_FIELDS)) ) { //fill all text fields into a sequence - SwClientIter aIter( *pType ); SwDependentFields aFldArr; - SwFmtFldPtr pFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + SwFmtFldPtr pFld = aIter.First(); while(pFld) { if(pFld->IsFldInDoc()) aFldArr.Insert(pFld, aFldArr.Count()); - pFld = (SwFmtFld*)aIter.Next(); + pFld = aIter.Next(); } + uno::Sequence<uno::Reference <text::XDependentTextField> > aRetSeq(aFldArr.Count()); uno::Reference<text::XDependentTextField>* pRetSeq = aRetSeq.getArray(); for(sal_uInt16 i = 0; i < aFldArr.Count(); i++) { pFld = aFldArr.GetObject(i); - SwXTextField * pInsert = CreateSwXTextField(*GetDoc(), *pFld); + SwXTextField * pInsert = SwXTextField::CreateSwXTextField(*GetDoc(), *pFld); pRetSeq[i] = uno::Reference<text::XDependentTextField>(pInsert); } @@ -900,38 +883,28 @@ uno::Any SwXFieldMaster::getPropertyValue(const OUString& rPropertyName) } return aRet; } -/*-- 14.12.98 11:08:36--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFieldMaster::addPropertyChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 14.12.98 11:08:36--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFieldMaster::removePropertyChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 14.12.98 11:08:37--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFieldMaster::addVetoableChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 14.12.98 11:08:37--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFieldMaster::removeVetoableChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 25.02.99 11:01:57--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFieldMaster::dispose(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -947,8 +920,8 @@ void SwXFieldMaster::dispose(void) throw( uno::RuntimeException ) } // zuerst alle Felder loeschen - SwClientIter aIter( *pFldType ); - SwFmtFld* pFld = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); + SwIterator<SwFmtFld,SwFieldType> aIter( *pFldType ); + SwFmtFld* pFld = aIter.First(); while(pFld) { // Feld im Undo? @@ -961,7 +934,7 @@ void SwXFieldMaster::dispose(void) throw( uno::RuntimeException ) aPam.Move(); GetDoc()->DeleteAndJoin(aPam); } - pFld = (SwFmtFld*)aIter.Next(); + pFld = aIter.Next(); } // dann den FieldType loeschen GetDoc()->RemoveFldType(nTypeIdx); @@ -969,9 +942,7 @@ void SwXFieldMaster::dispose(void) throw( uno::RuntimeException ) else throw uno::RuntimeException(); } -/*-- 25.02.99 11:02:00--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFieldMaster::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { @@ -979,9 +950,7 @@ void SwXFieldMaster::addEventListener(const uno::Reference< lang::XEventListener throw uno::RuntimeException(); aLstnrCntnr.AddListener(aListener); } -/*-- 25.02.99 11:02:02--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFieldMaster::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { @@ -989,10 +958,8 @@ void SwXFieldMaster::removeEventListener(const uno::Reference< lang::XEventListe throw uno::RuntimeException(); } -/*-- 14.12.98 11:08:38--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXFieldMaster::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXFieldMaster::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) @@ -1001,8 +968,9 @@ void SwXFieldMaster::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) m_pDoc = 0; } } -/* -----------------------------06.11.00 09:44-------------------------------- +<<<<<<< local +======= const Programmatic2UIName_Impl* lcl_GetFieldNameTable() { static sal_Bool bInitialized = sal_False; @@ -1026,6 +994,7 @@ const Programmatic2UIName_Impl* lcl_GetFieldNameTable() /* -----------------------------06.11.00 10:26-------------------------------- ---------------------------------------------------------------------------*/ +>>>>>>> other OUString SwXFieldMaster::GetProgrammaticName(const SwFieldType& rType, SwDoc& rDoc) { OUString sRet(rType.GetName()); @@ -1043,9 +1012,7 @@ OUString SwXFieldMaster::GetProgrammaticName(const SwFieldType& rType, SwDoc& rD } return sRet; } -/* -----------------------------06.11.00 14:12-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXFieldMaster::LocalizeFormula( const SwSetExpField& rFld, const OUString& rFormula, @@ -1068,12 +1035,11 @@ OUString SwXFieldMaster::LocalizeFormula( } -SwXTextField * CreateSwXTextField(SwDoc & rDoc, SwFmtFld const& rFmt) +SwXTextField* SwXTextField::CreateSwXTextField(SwDoc & rDoc, SwFmtFld const& rFmt) { - SwClientIter aIter(*rFmt.GetFld()->GetTyp()); + SwIterator<SwXTextField,SwFieldType> aIter(*rFmt.GetFld()->GetTyp()); SwXTextField * pField = 0; - SwXTextField * pTemp = - static_cast<SwXTextField*>(aIter.First( TYPE(SwXTextField) )); + SwXTextField * pTemp = aIter.First(); while (pTemp) { if (pTemp->GetFldFmt() == &rFmt) @@ -1081,7 +1047,7 @@ SwXTextField * CreateSwXTextField(SwDoc & rDoc, SwFmtFld const& rFmt) pField = pTemp; break; } - pTemp = static_cast<SwXTextField*>(aIter.Next()); + pTemp = aIter.Next(); } return pField ? pField : new SwXTextField( rFmt, &rDoc ); } @@ -1136,17 +1102,13 @@ struct SwFieldProperties_Impl }; TYPEINIT1(SwXTextField, SwClient); -/* -----------------------------13.03.00 12:15-------------------------------- - ---------------------------------------------------------------------------*/ const uno::Sequence< sal_Int8 > & SwXTextField::getUnoTunnelId() { static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); return aSeq; } -/* -----------------------------10.03.00 18:04-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXTextField::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw(uno::RuntimeException) { @@ -1158,9 +1120,6 @@ sal_Int64 SAL_CALL SwXTextField::getSomething( const uno::Sequence< sal_Int8 >& } return 0; } -/*-- 14.12.98 11:37:14--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXTextField::SwXTextField(sal_uInt16 nServiceId, SwDoc* pDoc) : aLstnrCntnr( (XTextContent*)this), @@ -1184,9 +1143,7 @@ SwXTextField::SwXTextField(sal_uInt16 nServiceId, SwDoc* pDoc) : m_pProps->nUSHORT2 = USHRT_MAX; } -/*-- 14.12.98 11:37:15--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextField::SwXTextField(const SwFmtFld& rFmt, SwDoc* pDc) : aLstnrCntnr( (XTextContent*)this), pFmtFld(&rFmt), @@ -1199,9 +1156,7 @@ SwXTextField::SwXTextField(const SwFmtFld& rFmt, SwDoc* pDc) : { pDc->GetUnoCallBack()->Add(this); } -/*-- 14.12.98 11:37:15--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextField::~SwXTextField() { if ( m_pTextObject ) @@ -1212,9 +1167,7 @@ SwXTextField::~SwXTextField() delete m_pProps; } -/*-- 14.12.98 11:37:16--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::attachTextFieldMaster(const uno::Reference< beans::XPropertySet > & xFieldMaster) throw( lang::IllegalArgumentException, uno::RuntimeException ) { @@ -1237,9 +1190,7 @@ void SwXTextField::attachTextFieldMaster(const uno::Reference< beans::XPropertyS throw lang::IllegalArgumentException(); } -/*-- 14.12.98 11:37:16--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySet > SwXTextField::getTextFieldMaster(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1254,16 +1205,14 @@ uno::Reference< beans::XPropertySet > SwXTextField::getTextFieldMaster(void) th throw uno::RuntimeException(); pType = pFmtFld->GetFld()->GetTyp(); } - SwXFieldMaster* pMaster = (SwXFieldMaster*) - SwClientIter(*pType).First(TYPE(SwXFieldMaster)); + + SwXFieldMaster* pMaster = SwIterator<SwXFieldMaster,SwFieldType>::FirstElement( *pType ); if(!pMaster) pMaster = new SwXFieldMaster(*pType, GetDoc()); return pMaster; } -/*-- 14.12.98 11:37:16--------------------------------------------------- - -----------------------------------------------------------------------*/ OUString SwXTextField::getPresentation(sal_Bool bShowCommand) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1278,9 +1227,7 @@ OUString SwXTextField::getPresentation(sal_Bool bShowCommand) throw( uno::Runtim : pField->ExpandField(true) ); return ret; } -/* -----------------18.02.99 13:39------------------- - * - * --------------------------------------------------*/ + void SwXTextField::attachToRange( const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) @@ -1854,18 +1801,14 @@ void SwXTextField::attachToRange( else throw lang::IllegalArgumentException(); } -/*-- 14.12.98 11:37:18--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); attachToRange( xTextRange ); } -/*-- 14.12.98 11:37:18--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextRange > SwXTextField::getAnchor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1886,9 +1829,7 @@ uno::Reference< text::XTextRange > SwXTextField::getAnchor(void) throw( uno::Ru return aRef; } -/*-- 14.12.98 11:37:18--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::dispose(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1911,26 +1852,20 @@ void SwXTextField::dispose(void) throw( uno::RuntimeException ) m_pTextObject = 0; } } -/*-- 14.12.98 11:37:18--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { if(!GetRegisteredIn()) throw uno::RuntimeException(); aLstnrCntnr.AddListener(aListener); } -/*-- 14.12.98 11:37:18--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { if(!GetRegisteredIn() || !aLstnrCntnr.RemoveListener(aListener)) throw uno::RuntimeException(); } -/*-- 14.12.98 11:37:19--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXTextField::getPropertySetInfo(void) throw( uno::RuntimeException ) { @@ -1952,9 +1887,7 @@ uno::Reference< beans::XPropertySetInfo > SwXTextField::getPropertySetInfo(void throw uno::RuntimeException(); return aRef; } -/*-- 14.12.98 11:37:19--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::setPropertyValue(const OUString& rPropertyName, const uno::Any& rValue) throw( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException ) @@ -2115,9 +2048,7 @@ void SwXTextField::setPropertyValue(const OUString& rPropertyName, const uno::An else throw uno::RuntimeException(); } -/*-- 14.12.98 11:37:19--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTextField::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -2303,37 +2234,27 @@ uno::Any SwXTextField::getPropertyValue(const OUString& rPropertyName) } return aRet; } -/*-- 14.12.98 11:37:20--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::addPropertyChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 14.12.98 11:37:20--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::removePropertyChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 14.12.98 11:37:20--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::addVetoableChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 14.12.98 11:37:20--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextField::removeVetoableChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/* -----------------------------23.03.01 13:15-------------------------------- - ---------------------------------------------------------------------------*/ void SwXTextField::update( ) throw (uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2384,22 +2305,17 @@ void SwXTextField::update( ) throw (uno::RuntimeException) } // --> FME 2004-10-06 #116480# // Text formatting has to be triggered. - const_cast<SwFmtFld*>(pFmtFld)->Modify( 0, 0 ); + const_cast<SwFmtFld*>(pFmtFld)->ModifyNotification( 0, 0 ); // <-- } else m_bCallUpdate = sal_True; } -/* -----------------19.03.99 14:11------------------- - * - * --------------------------------------------------*/ + OUString SwXTextField::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextField"); } -/* -----------------19.03.99 14:11------------------- - * - * --------------------------------------------------*/ static OUString OldNameToNewName_Impl( const OUString &rOld ) { @@ -2429,9 +2345,7 @@ sal_Bool SwXTextField::supportsService(const OUString& rServiceName) throw( uno: rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.text.TextContent")); } -/* -----------------19.03.99 14:11------------------- - * - * --------------------------------------------------*/ + uno::Sequence< OUString > SwXTextField::getSupportedServiceNames(void) throw( uno::RuntimeException ) { OUString sServiceName = SwXServiceProvider::GetProviderName(m_nServiceId); @@ -2461,10 +2375,8 @@ void SwXTextField::Invalidate() } } -/* -----------------14.12.98 12:00------------------- - * - * --------------------------------------------------*/ -void SwXTextField::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) + +void SwXTextField::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { switch( pOld ? pOld->Which() : 0 ) { @@ -2486,9 +2398,7 @@ void SwXTextField::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) break; } } -/*-- 14.12.98 11:37:21--------------------------------------------------- - -----------------------------------------------------------------------*/ const SwField* SwXTextField::GetField() const { if(GetRegisteredIn() && pFmtFld) @@ -2497,29 +2407,25 @@ const SwField* SwXTextField::GetField() const } /****************************************************************** - * - ******************************************************************/ -/****************************************************************** * SwXTextFieldMasters ******************************************************************/ -/* -----------------------------06.04.00 13:22-------------------------------- - - ---------------------------------------------------------------------------*/ OUString SwXTextFieldMasters::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextFieldMasters"); } +<<<<<<< local +BOOL SwXTextFieldMasters::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= /* -----------------------------06.04.00 13:22-------------------------------- ---------------------------------------------------------------------------*/ sal_Bool SwXTextFieldMasters::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.text.TextFieldMasters" )); } -/* -----------------------------06.04.00 13:22-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextFieldMasters::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -2527,21 +2433,17 @@ uno::Sequence< OUString > SwXTextFieldMasters::getSupportedServiceNames(void) th pArray[0] = C2U("com.sun.star.text.TextFieldMasters"); return aRet; } -/*-- 21.12.98 10:37:14--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFieldMasters::SwXTextFieldMasters(SwDoc* _pDoc) : SwUnoCollection(_pDoc) { } -/*-- 21.12.98 10:37:32--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFieldMasters::~SwXTextFieldMasters() { } -/*-- 21.12.98 10:37:33--------------------------------------------------- +/*----------------------------------------------------------------------- Iteration ueber nicht-Standard Feldtypen USER/SETEXP/DDE/DATABASE Der Name ist demnach: @@ -2613,17 +2515,14 @@ uno::Any SwXTextFieldMasters::getByName(const OUString& rName) SwFieldType* pType = GetDoc()->GetFldType(nResId, sName, sal_True); if(!pType) throw container::NoSuchElementException(); - SwXFieldMaster* pMaster = (SwXFieldMaster*) - SwClientIter(*pType).First(TYPE(SwXFieldMaster)); + SwXFieldMaster* pMaster = SwIterator<SwXFieldMaster,SwFieldType>::FirstElement( *pType ); if(!pMaster) pMaster = new SwXFieldMaster(*pType, GetDoc()); uno::Reference< beans::XPropertySet > aRef = pMaster; uno::Any aRet(&aRef, ::getCppuType( static_cast<const uno::Reference<beans::XPropertySet>* >(0))); return aRet; } -/*-- 06.03.2001 11:29:34,5------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextFieldMasters::getInstanceName( const SwFieldType& rFldType, String& rName) { @@ -2670,9 +2569,6 @@ sal_Bool SwXTextFieldMasters::getInstanceName( } -/*-- 21.12.98 10:37:33--------------------------------------------------- - - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextFieldMasters::getElementNames(void) throw( uno::RuntimeException ) { @@ -2710,9 +2606,7 @@ uno::Sequence< OUString > SwXTextFieldMasters::getElementNames(void) return aSeq; } -/*-- 21.12.98 10:37:33--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextFieldMasters::hasByName(const OUString& rName) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2729,17 +2623,13 @@ sal_Bool SwXTextFieldMasters::hasByName(const OUString& rName) throw( uno::Runti } return bRet; } -/*-- 21.12.98 10:37:34--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SwXTextFieldMasters::getElementType(void) throw( uno::RuntimeException ) { return ::getCppuType(static_cast<const uno::Reference<beans::XPropertySet>*>(0)); } -/*-- 21.12.98 10:37:34--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextFieldMasters::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2751,24 +2641,23 @@ sal_Bool SwXTextFieldMasters::hasElements(void) throw( uno::RuntimeException ) /****************************************************************** * ******************************************************************/ -/* -----------------------------06.04.00 13:24-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXTextFieldTypes::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextFieldTypes"); } -/* -----------------------------06.04.00 13:24-------------------------------- +<<<<<<< local +BOOL SwXTextFieldTypes::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTextFieldTypes::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.text.TextFields" )); } -/* -----------------------------06.04.00 13:24-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextFieldTypes::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -2776,31 +2665,23 @@ uno::Sequence< OUString > SwXTextFieldTypes::getSupportedServiceNames(void) thro pArray[0] = C2U("com.sun.star.text.TextFields"); return aRet; } -/*-- 21.12.98 10:35:15--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFieldTypes::SwXTextFieldTypes(SwDoc* _pDoc) : SwUnoCollection (_pDoc), aRefreshCont ( static_cast< XEnumerationAccess * >(this) ) { } -/*-- 21.12.98 10:35:16--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFieldTypes::~SwXTextFieldTypes() { } -/*-- 11.07.02 14:25:00--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextFieldTypes::Invalidate() { SwUnoCollection::Invalidate(); aRefreshCont.Disposing(); } -/*-- 21.12.98 10:35:17--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< container::XEnumeration > SwXTextFieldTypes::createEnumeration(void) throw( uno::RuntimeException ) { @@ -2810,16 +2691,12 @@ uno::Reference< container::XEnumeration > SwXTextFieldTypes::createEnumeration( return new SwXFieldEnumeration(GetDoc()); } -/*-- 21.12.98 10:35:17--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SwXTextFieldTypes::getElementType(void) throw( uno::RuntimeException ) { return ::getCppuType(static_cast<const uno::Reference<text::XDependentTextField>*>(0)); } -/*-- 21.12.98 10:35:17--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextFieldTypes::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2828,9 +2705,7 @@ sal_Bool SwXTextFieldTypes::hasElements(void) throw( uno::RuntimeException ) //es gibt sie immer return sal_True; } -/* -----------------24.02.99 16:19------------------- - * - * --------------------------------------------------*/ + void SwXTextFieldTypes::refresh(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2844,9 +2719,7 @@ void SwXTextFieldTypes::refresh(void) throw( uno::RuntimeException ) // call refresh listeners aRefreshCont.Refreshed(); } -/* -----------------24.02.99 16:19------------------- - * - * --------------------------------------------------*/ + void SwXTextFieldTypes::addRefreshListener(const uno::Reference< util::XRefreshListener > & l) throw( uno::RuntimeException ) { @@ -2855,9 +2728,7 @@ void SwXTextFieldTypes::addRefreshListener(const uno::Reference< util::XRefreshL throw uno::RuntimeException(); aRefreshCont.AddListener ( reinterpret_cast < const uno::Reference < lang::XEventListener > &> ( l )); } -/* -----------------24.02.99 16:19------------------- - * - * --------------------------------------------------*/ + void SwXTextFieldTypes::removeRefreshListener(const uno::Reference< util::XRefreshListener > & l) throw( uno::RuntimeException ) { @@ -2868,24 +2739,23 @@ void SwXTextFieldTypes::removeRefreshListener(const uno::Reference< util::XRefre /****************************************************************** * SwXFieldEnumeration ******************************************************************/ -/* -----------------------------06.04.00 13:25-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXFieldEnumeration::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXFieldEnumeration"); } -/* -----------------------------06.04.00 13:25-------------------------------- +<<<<<<< local +BOOL SwXFieldEnumeration::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXFieldEnumeration::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.text.FieldEnumeration" )); } -/* -----------------------------06.04.00 13:25-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXFieldEnumeration::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -2893,9 +2763,7 @@ uno::Sequence< OUString > SwXFieldEnumeration::getSupportedServiceNames(void) th pArray[0] = C2U("com.sun.star.text.FieldEnumeration"); return aRet; } -/* -----------------21.12.98 14:57------------------- - * - * --------------------------------------------------*/ + SwXFieldEnumeration::SwXFieldEnumeration(SwDoc* pDc) : nNextIndex(0), pDoc(pDc) @@ -2913,9 +2781,8 @@ SwXFieldEnumeration::SwXFieldEnumeration(SwDoc* pDc) : for(sal_uInt16 nType = 0; nType < nCount; ++nType) { const SwFieldType *pCurType = pFldTypes->GetObject(nType); - - SwClientIter aIter( *(SwFieldType*)pCurType ); - const SwFmtFld* pCurFldFmt = (SwFmtFld*)aIter.First( TYPE( SwFmtFld )); + SwIterator<SwFmtFld,SwFieldType> aIter( *pCurType ); + const SwFmtFld* pCurFldFmt = aIter.First(); while (pCurFldFmt) { const SwTxtFld *pTxtFld = pCurFldFmt->GetTxtFld(); @@ -2925,7 +2792,7 @@ SwXFieldEnumeration::SwXFieldEnumeration(SwDoc* pDc) : !pTxtFld->GetpTxtNode()->GetNodes().IsDocNodes(); if (!bSkip) pItems[ nFillPos++ ] = new SwXTextField(*pCurFldFmt, pDoc); - pCurFldFmt = (SwFmtFld*)aIter.Next(); + pCurFldFmt = aIter.Next(); // enlarge sequence if necessary if (aItems.getLength() == nFillPos) @@ -2954,25 +2821,19 @@ SwXFieldEnumeration::SwXFieldEnumeration(SwDoc* pDc) : // resize sequence to actual used size aItems.realloc( nFillPos ); } -/*-- 21.12.98 14:57:23--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXFieldEnumeration::~SwXFieldEnumeration() { } -/*-- 21.12.98 14:57:42--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXFieldEnumeration::hasMoreElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); return nNextIndex < aItems.getLength(); } -/*-- 21.12.98 14:57:42--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXFieldEnumeration::nextElement(void) throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -2990,10 +2851,8 @@ uno::Any SwXFieldEnumeration::nextElement(void) rxFld = 0; // free memory for item that is not longer used return aRet; } -/* -----------------21.12.98 15:08------------------- - * - * --------------------------------------------------*/ -void SwXFieldEnumeration::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) + +void SwXFieldEnumeration::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) diff --git a/sw/source/core/unocore/unoflatpara.cxx b/sw/source/core/unocore/unoflatpara.cxx index 00c02806d3b0..db22c9cb082c 100644 --- a/sw/source/core/unocore/unoflatpara.cxx +++ b/sw/source/core/unocore/unoflatpara.cxx @@ -308,7 +308,7 @@ SwXFlatParagraphIterator::~SwXFlatParagraphIterator() } -void SwXFlatParagraphIterator::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwXFlatParagraphIterator::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { ClientModify( this, pOld, pNew ); // check if document gets closed... @@ -388,7 +388,7 @@ uno::Reference< text::XFlatParagraph > SwXFlatParagraphIterator::getNextPara() if ( !pCurrentPage && !pStopPage ) { pStopPage = pStartPage; - pCurrentPage = static_cast<SwPageFrm*>(mpDoc->GetRootFrm()->Lower()); + pCurrentPage = static_cast<SwPageFrm*>(pViewShell->GetLayout()->Lower()); } } } diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx index 5ee3fc45f6f4..3466dc1cf20e 100644 --- a/sw/source/core/unocore/unoframe.cxx +++ b/sw/source/core/unocore/unoframe.cxx @@ -114,12 +114,10 @@ #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> #include <tools/urlobj.hxx> #include <editeng/frmdiritem.hxx> -// DVO, OD 01.10.2003 #i18732# #include <fmtfollowtextflow.hxx> -// OD 2004-05-05 #i28701# #include <fmtwrapinfluenceonobjpos.hxx> - #include <toolkit/helper/vclunohelper.hxx> +#include <switerator.hxx> // from fefly1.cxx extern sal_Bool lcl_ChkAndSetNewAnchor( const SwFlyFrm& rFly, SfxItemSet& rSet ); @@ -154,33 +152,31 @@ public: virtual sal_Bool AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, sal_Bool& rSizeFound) = 0; }; -/* -----------------------------12.06.01 15:46-------------------------------- - ---------------------------------------------------------------------------*/ BaseFrameProperties_Impl::~BaseFrameProperties_Impl() { } -/* -----------------------------12.06.01 15:43-------------------------------- +<<<<<<< local +void BaseFrameProperties_Impl::SetProperty(USHORT nWID, BYTE nMemberId, const uno::Any& rVal) +======= ---------------------------------------------------------------------------*/ void BaseFrameProperties_Impl::SetProperty(sal_uInt16 nWID, sal_uInt8 nMemberId, const uno::Any& rVal) +>>>>>>> other { aAnyMap.SetValue( nWID, nMemberId, rVal ); } -/* -----------------------------12.06.01 15:43-------------------------------- +<<<<<<< local +sal_Bool BaseFrameProperties_Impl::GetProperty(USHORT nWID, BYTE nMemberId, const uno::Any*& rpAny) +======= ---------------------------------------------------------------------------*/ sal_Bool BaseFrameProperties_Impl::GetProperty(sal_uInt16 nWID, sal_uInt8 nMemberId, const uno::Any*& rpAny) +>>>>>>> other { return aAnyMap.FillValue( nWID, nMemberId, rpAny ); } -//void BaseFrameProperties_Impl::GetProperty( const OUString &rPropertyName, const uno::Reference < beans::XPropertySet > &rxPropertySet, uno::Any & rAny ) -//{ -// rAny = rxPropertySet->getPropertyValue( rPropertyName ); -//} -/* -----------------29.06.98 09:55------------------- - * - * --------------------------------------------------*/ + sal_Bool BaseFrameProperties_Impl::FillBaseProperties(SfxItemSet& rToSet, const SfxItemSet& rFromSet, sal_Bool& rSizeFound) { sal_Bool bRet = sal_True; @@ -528,31 +524,21 @@ sal_Bool BaseFrameProperties_Impl::FillBaseProperties(SfxItemSet& rToSet, const return bRet; } -/* -----------------22.06.98 09:17------------------- - * - * --------------------------------------------------*/ class SwFrameProperties_Impl : public BaseFrameProperties_Impl { -protected: -// SwFrameProperties_Impl(/*const :: SfxItemPropertyMap* pMap*/) : -// BaseFrameProperties_Impl(/*pMap*/){} public: SwFrameProperties_Impl(); virtual ~SwFrameProperties_Impl(){} virtual sal_Bool AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, sal_Bool& rSizeFound); }; -/* -----------------22.06.98 09:17------------------- - * - * --------------------------------------------------*/ + SwFrameProperties_Impl::SwFrameProperties_Impl(): BaseFrameProperties_Impl(/*aSwMapProvider.GetPropertyMap(PROPERTY_MAP_TEXT_FRAME)*/ ) { } -/* -----------------22.06.98 11:27------------------- - * - * --------------------------------------------------*/ + inline void lcl_FillCol ( SfxItemSet &rToSet, const :: SfxItemSet &rFromSet, const :: uno::Any *pAny) { if ( pAny ) @@ -612,17 +598,13 @@ public: virtual sal_Bool AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, sal_Bool& rSizeFound); }; -/* -----------------27.06.98 14:53------------------- - * - * --------------------------------------------------*/ + SwGraphicProperties_Impl::SwGraphicProperties_Impl( ) : BaseFrameProperties_Impl(/*aSwMapProvider.GetPropertyMap(PROPERTY_MAP_TEXT_GRAPHIC)*/ ) { } -/* -----------------27.06.98 14:40------------------- - * - * --------------------------------------------------*/ + inline void lcl_FillMirror ( SfxItemSet &rToSet, const :: SfxItemSet &rFromSet, const ::uno::Any *pHEvenMirror, const ::uno::Any *pHOddMirror, const ::uno::Any *pVMirror, sal_Bool &rRet ) { if(pHEvenMirror || pHOddMirror || pVMirror ) @@ -709,9 +691,6 @@ sal_Bool SwGraphicProperties_Impl::AnyToItemSet( return bRet; } -/* -----------------4/1/2003 13:54------------------- - - --------------------------------------------------*/ class SwOLEProperties_Impl : public SwFrameProperties_Impl { @@ -722,9 +701,6 @@ public: virtual sal_Bool AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, sal_Bool& rSizeFound); }; -/* -----------------4/1/2003 15:32------------------- - - --------------------------------------------------*/ sal_Bool SwOLEProperties_Impl::AnyToItemSet( SwDoc* pDoc, SfxItemSet& rFrmSet, SfxItemSet& rSet, sal_Bool& rSizeFound) @@ -740,17 +716,13 @@ sal_Bool SwOLEProperties_Impl::AnyToItemSet( /****************************************************************** * SwXFrame ******************************************************************/ -/* -----------------------------10.03.00 18:02-------------------------------- - ---------------------------------------------------------------------------*/ const :: uno::Sequence< sal_Int8 > & SwXFrame::getUnoTunnelId() { static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); return aSeq; } -/* -----------------------------10.03.00 18:04-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXFrame::getSomething( const :: uno::Sequence< sal_Int8 >& rId ) throw(uno::RuntimeException) { @@ -762,30 +734,26 @@ sal_Int64 SAL_CALL SwXFrame::getSomething( const :: uno::Sequence< sal_Int8 >& r } return 0; } -/*-----------------24.03.98 14:49------------------- - ---------------------------------------------------*/ TYPEINIT1(SwXFrame, SwClient); -/* -----------------------------06.04.00 14:20-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXFrame::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXFrame"); } -/* -----------------------------06.04.00 14:20-------------------------------- +<<<<<<< local +BOOL SwXFrame::supportsService(const :: OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXFrame::supportsService(const :: OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return !rServiceName.compareToAscii("com.sun.star.text.BaseFrame")|| !rServiceName.compareToAscii("com.sun.star.text.TextContent") || !rServiceName.compareToAscii("com.sun.star.document.LinkTarget"); } -/* -----------------------------06.04.00 14:20-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXFrame::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(3); @@ -797,9 +765,6 @@ uno::Sequence< OUString > SwXFrame::getSupportedServiceNames(void) throw( uno::R } -/*-- 14.01.99 11:31:52--------------------------------------------------- - Dieser CTor legt den Frame als Descriptor an - -----------------------------------------------------------------------*/ SwXFrame::SwXFrame(FlyCntType eSet, const :: SfxItemPropertySet* pSet, SwDoc *pDoc) : aLstnrCntnr( (container::XNamed*)this), m_pPropSet(pSet), @@ -851,9 +816,7 @@ SwXFrame::SwXFrame(FlyCntType eSet, const :: SfxItemPropertySet* pSet, SwDoc *pD } } -/*-- 11.12.98 15:05:01--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXFrame::SwXFrame(SwFrmFmt& rFrmFmt, FlyCntType eSet, const :: SfxItemPropertySet* pSet) : SwClient( &rFrmFmt ), aLstnrCntnr( (container::XNamed*)this), @@ -866,20 +829,13 @@ SwXFrame::SwXFrame(SwFrmFmt& rFrmFmt, FlyCntType eSet, const :: SfxItemPropertyS { } -/*-- 11.12.98 15:05:02--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXFrame::~SwXFrame() { delete m_pCopySource; delete pProps; } -/*-- 11.12.98 15:05:03--------------------------------------------------- - - -----------------------------------------------------------------------*/ -/*-- 11.12.98 15:05:03--------------------------------------------------- - -----------------------------------------------------------------------*/ OUString SwXFrame::getName(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -893,9 +849,7 @@ OUString SwXFrame::getName(void) throw( uno::RuntimeException ) throw uno::RuntimeException(); return sRet; } -/*-- 11.12.98 15:05:03--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::setName(const :: OUString& rName) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -914,9 +868,7 @@ void SwXFrame::setName(const :: OUString& rName) throw( uno::RuntimeException ) else throw uno::RuntimeException(); } -/*-- 11.12.98 15:05:03--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXFrame::getPropertySetInfo(void) throw( uno::RuntimeException ) { uno::Reference< beans::XPropertySetInfo > xRef; @@ -945,9 +897,7 @@ uno::Reference< beans::XPropertySetInfo > SwXFrame::getPropertySetInfo(void) th } return xRef; } -/*-- 15.05.06 12:21:43--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::SetSelection(SwPaM& rCopySource) { if(m_pCopySource) @@ -956,9 +906,6 @@ void SwXFrame::SetSelection(SwPaM& rCopySource) m_pCopySource->SetMark(); *m_pCopySource->GetMark() = *rCopySource.End(); } -/*-- 11.12.98 15:05:04--------------------------------------------------- - - -----------------------------------------------------------------------*/ SdrObject *SwXFrame::GetOrCreateSdrObject( SwFlyFrmFmt *pFmt ) { @@ -1471,9 +1418,7 @@ void SwXFrame::setPropertyValue(const :: OUString& rPropertyName, const :: uno:: else throw uno::RuntimeException(); } -/*-- 11.12.98 15:05:04--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXFrame::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -1707,11 +1652,9 @@ uno::Any SwXFrame::getPropertyValue(const OUString& rPropertyName) // format document completely in order to get correct value pFmt->GetDoc()->GetEditShell()->CalcLayout(); - SwClientIter aIter( *pFmt ); - SwClient* pC = aIter.First( TYPE( SwFrm ) ); - if (pC) + SwFrm* pTmpFrm = SwIterator<SwFrm,SwFmt>::FirstElement( *pFmt ); + if ( pTmpFrm ) { - SwFrm *pTmpFrm = static_cast< SwFrm * >(pC); DBG_ASSERT( pTmpFrm->IsValid(), "frame not valid" ); const SwRect &rRect = pTmpFrm->Frm(); Size aMM100Size = OutputDevice::LogicToLogic( @@ -1743,45 +1686,35 @@ uno::Any SwXFrame::getPropertyValue(const OUString& rPropertyName) throw uno::RuntimeException(); return aAny; } -/*-- 11.12.98 15:05:04--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::addPropertyChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 15:05:05--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::removePropertyChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 15:05:05--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::addVetoableChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 15:05:05--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::removeVetoableChangeListener( const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 12.09.00 14:04:53--------------------------------------------------- - -----------------------------------------------------------------------*/ beans::PropertyState SwXFrame::getPropertyState( const OUString& rPropertyName ) throw(beans::UnknownPropertyException, uno::RuntimeException) { @@ -1792,9 +1725,7 @@ beans::PropertyState SwXFrame::getPropertyState( const OUString& rPropertyName ) uno::Sequence< beans::PropertyState > aStates = getPropertyStates(aPropertyNames); return aStates.getConstArray()[0]; } -/*-- 12.09.00 14:04:54--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< beans::PropertyState > SwXFrame::getPropertyStates( const uno::Sequence< OUString >& aPropertyNames ) throw(beans::UnknownPropertyException, uno::RuntimeException) @@ -1858,9 +1789,7 @@ uno::Sequence< beans::PropertyState > SwXFrame::getPropertyStates( throw uno::RuntimeException(); return aStates; } -/*-- 12.09.00 14:04:54--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::setPropertyToDefault( const OUString& rPropertyName ) throw(beans::UnknownPropertyException, uno::RuntimeException) { @@ -1957,9 +1886,7 @@ void SwXFrame::setPropertyToDefault( const OUString& rPropertyName ) throw uno::RuntimeException(); } -/*-- 12.09.00 14:04:55--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXFrame::getPropertyDefault( const OUString& rPropertyName ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) { @@ -1985,27 +1912,21 @@ uno::Any SwXFrame::getPropertyDefault( const OUString& rPropertyName ) throw uno::RuntimeException(); return aRet; } -/* -----------------22.04.99 14:59------------------- - * - * --------------------------------------------------*/ + void SwXFrame::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { if(!GetRegisteredIn()) throw uno::RuntimeException(); aLstnrCntnr.AddListener(aListener); } -/* -----------------22.04.99 14:59------------------- - * - * --------------------------------------------------*/ + void SwXFrame::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { if(!GetRegisteredIn() || !aLstnrCntnr.RemoveListener(aListener)) throw uno::RuntimeException(); } -/*-- 11.12.98 15:05:06--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXFrame::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXFrame::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) @@ -2017,9 +1938,7 @@ void SwXFrame::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) } } -/*-- 11.12.98 15:23:05--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::dispose(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2048,9 +1967,7 @@ void SwXFrame::dispose(void) throw( uno::RuntimeException ) } } -/*-- 11.12.98 16:02:27--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextRange > SwXFrame::getAnchor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2072,9 +1989,7 @@ uno::Reference< text::XTextRange > SwXFrame::getAnchor(void) throw( uno::Runtim throw uno::RuntimeException(); return aRef; } -/* -----------------14.01.99 12:02------------------- - * - * --------------------------------------------------*/ + void SwXFrame::ResetDescriptor() { bIsDescriptor = sal_False; @@ -2082,9 +1997,7 @@ void SwXFrame::ResetDescriptor() mxStyleFamily.clear(); DELETEZ(pProps); } -/* -----------------18.02.99 13:34------------------- - * - * --------------------------------------------------*/ + void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { @@ -2416,9 +2329,7 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan //setzt das Flag zurueck und loescht den Descriptor-Pointer ResetDescriptor(); } -/* -----------------------------04.04.01 14:27-------------------------------- - ---------------------------------------------------------------------------*/ void SwXFrame::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { @@ -2453,9 +2364,7 @@ void SwXFrame::attach(const uno::Reference< text::XTextRange > & xTextRange) throw lang::IllegalArgumentException(); } } -/*-- 22.04.99 08:03:20--------------------------------------------------- - -----------------------------------------------------------------------*/ awt::Point SwXFrame::getPosition(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2463,9 +2372,7 @@ awt::Point SwXFrame::getPosition(void) throw( uno::RuntimeException ) aRuntime.Message = C2U("position cannot be determined with this method"); throw aRuntime; } -/*-- 22.04.99 08:03:21--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::setPosition(const awt::Point& /*aPosition*/) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2473,27 +2380,21 @@ void SwXFrame::setPosition(const awt::Point& /*aPosition*/) throw( uno::RuntimeE aRuntime.Message = C2U("position cannot be changed with this method"); throw aRuntime; } -/*-- 22.04.99 08:03:21--------------------------------------------------- - -----------------------------------------------------------------------*/ awt::Size SwXFrame::getSize(void) throw( uno::RuntimeException ) { const ::uno::Any aVal = getPropertyValue(C2U("Size")); awt::Size* pRet = (awt::Size*)aVal.getValue(); return *pRet; } -/*-- 22.04.99 08:03:21--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXFrame::setSize(const awt::Size& aSize) throw( beans::PropertyVetoException, uno::RuntimeException ) { const ::uno::Any aVal(&aSize, ::getCppuType(static_cast<const awt::Size*>(0))); setPropertyValue(C2U("Size"), aVal); } -/*-- 22.04.99 08:03:21--------------------------------------------------- - -----------------------------------------------------------------------*/ OUString SwXFrame::getShapeType(void) throw( uno::RuntimeException ) { return C2U("FrameShape"); @@ -2503,46 +2404,34 @@ OUString SwXFrame::getShapeType(void) throw( uno::RuntimeException ) /****************************************************************** * SwXTextFrame ******************************************************************/ -/*-- 14.01.99 11:27:51--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFrame::SwXTextFrame( SwDoc *_pDoc ) : SwXText(0, CURSOR_FRAME), SwXFrame(FLYCNTTYPE_FRM, aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_FRAME), _pDoc ) { } -/*-- 11.12.98 15:23:01--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFrame::SwXTextFrame(SwFrmFmt& rFmt) : SwXText(rFmt.GetDoc(), CURSOR_FRAME), SwXFrame(rFmt, FLYCNTTYPE_FRM, aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_FRAME)) { } -/*-- 11.12.98 15:23:02--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextFrame::~SwXTextFrame() { } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextFrame::acquire( )throw() { SwXFrame::acquire(); } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextFrame::release( )throw() { SwXFrame::release(); } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ ::uno::Any SAL_CALL SwXTextFrame::queryInterface( const uno::Type& aType ) throw (uno::RuntimeException) { @@ -2553,9 +2442,7 @@ void SAL_CALL SwXTextFrame::release( )throw() aRet = SwXTextFrameBaseClass::queryInterface(aType); return aRet; } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< uno::Type > SAL_CALL SwXTextFrame::getTypes( ) throw(uno::RuntimeException) { uno::Sequence< uno::Type > aTextFrameTypes = SwXTextFrameBaseClass::getTypes(); @@ -2580,9 +2467,7 @@ uno::Sequence< uno::Type > SAL_CALL SwXTextFrame::getTypes( ) throw(uno::Runtim return aTextFrameTypes; } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< sal_Int8 > SAL_CALL SwXTextFrame::getImplementationId( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2595,16 +2480,12 @@ uno::Sequence< sal_Int8 > SAL_CALL SwXTextFrame::getImplementationId( ) throw(u } return aId; } -/*-- 11.12.98 15:23:03--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XText > SwXTextFrame::getText(void) throw( uno::RuntimeException ) { return this; } -/*-- 11.12.98 15:23:03--------------------------------------------------- - -----------------------------------------------------------------------*/ const SwStartNode *SwXTextFrame::GetStartNode() const { const SwStartNode *pSttNd = 0; @@ -2625,9 +2506,7 @@ SwXTextFrame::CreateCursor() throw (uno::RuntimeException) { return createTextCursor(); } -/*-- 11.12.98 15:23:03--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextCursor > SwXTextFrame::createTextCursor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2674,9 +2553,7 @@ uno::Reference< text::XTextCursor > SwXTextFrame::createTextCursor(void) throw( throw uno::RuntimeException(); return aRef; } -/*-- 11.12.98 15:23:03--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextCursor > SwXTextFrame::createTextCursorByRange(const uno::Reference< text::XTextRange > & aTextPosition) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2703,9 +2580,7 @@ uno::Reference< text::XTextCursor > SwXTextFrame::createTextCursorByRange(const throw uno::RuntimeException(); return aRef; } -/*-- 11.12.98 15:23:03--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< container::XEnumeration > SwXTextFrame::createEnumeration(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2726,77 +2601,57 @@ uno::Reference< container::XEnumeration > SwXTextFrame::createEnumeration(void) } return aRef; } -/*-- 11.12.98 15:23:04--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SwXTextFrame::getElementType(void) throw( uno::RuntimeException ) { return ::getCppuType(static_cast<uno::Reference<text::XTextRange>*>(0)); } -/*-- 11.12.98 15:23:04--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextFrame::hasElements(void) throw( uno::RuntimeException ) { return sal_True; } -/*-- 11.12.98 15:23:04--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextFrame::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { SwXFrame::attach(xTextRange); } -/*-- 11.12.98 15:23:04--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextRange > SwXTextFrame::getAnchor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); return SwXFrame::getAnchor(); } -/*-- 11.12.98 15:23:05--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextFrame::dispose(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); SwXFrame::dispose(); } -/*-- 11.12.98 15:23:05--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextFrame::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { SwXFrame::addEventListener(aListener); } -/*-- 11.12.98 15:23:05--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextFrame::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { SwXFrame::removeEventListener(aListener); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + OUString SwXTextFrame::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextFrame"); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + sal_Bool SwXTextFrame::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) { return COMPARE_EQUAL == rServiceName.compareToAscii("com.sun.star.text.Text")|| COMPARE_EQUAL == rServiceName.compareToAscii("com.sun.star.text.TextFrame")|| SwXFrame::supportsService(rServiceName); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + uno::Sequence< OUString > SwXTextFrame::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence < OUString > aRet = SwXFrame::getSupportedServiceNames(); @@ -2806,16 +2661,12 @@ uno::Sequence< OUString > SwXTextFrame::getSupportedServiceNames(void) throw( un pArray[aRet.getLength() - 1] = C2U("com.sun.star.text.Text"); return aRet; } -/* -----------------------------20.06.00 10:02-------------------------------- - ---------------------------------------------------------------------------*/ void * SAL_CALL SwXTextFrame::operator new( size_t t) throw() { return SwXTextFrameBaseClass::operator new( t); } -/* -----------------------------20.06.00 10:02-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextFrame::operator delete( void * p) throw() { SwXTextFrameBaseClass::operator delete(p); @@ -2826,9 +2677,7 @@ uno::Reference<container::XNameReplace > SAL_CALL SwXTextFrame::getEvents() { return new SwFrameEventDescriptor( *this ); } -/* -----------------------------10.01.01 13:27-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXTextFrame::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw(uno::RuntimeException) { @@ -2838,9 +2687,7 @@ sal_Int64 SAL_CALL SwXTextFrame::getSomething( const uno::Sequence< sal_Int8 >& return nRet; } -/* -----------------------------19.03.2002 16:43------------------------------ - ---------------------------------------------------------------------------*/ ::uno::Any SwXTextFrame::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -2860,45 +2707,33 @@ sal_Int64 SAL_CALL SwXTextFrame::getSomething( const uno::Sequence< sal_Int8 >& /****************************************************************** * SwXTextGraphicObject ******************************************************************/ -/*-- 14.01.99 11:27:51--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextGraphicObject::SwXTextGraphicObject( SwDoc *pDoc ) : SwXFrame(FLYCNTTYPE_GRF, aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_GRAPHIC), pDoc) { } -/*-- 11.12.98 16:02:25--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextGraphicObject::SwXTextGraphicObject(SwFrmFmt& rFmt) : SwXFrame(rFmt, FLYCNTTYPE_GRF, aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_GRAPHIC)) { } -/*-- 11.12.98 16:02:26--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextGraphicObject::~SwXTextGraphicObject() { } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextGraphicObject::acquire( )throw() { SwXFrame::acquire(); } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextGraphicObject::release( )throw() { SwXFrame::release(); } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ ::uno::Any SAL_CALL SwXTextGraphicObject::queryInterface( const uno::Type& aType ) throw(uno::RuntimeException) { @@ -2907,9 +2742,7 @@ void SAL_CALL SwXTextGraphicObject::release( )throw() aRet = SwXTextGraphicObjectBaseClass::queryInterface(aType); return aRet; } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< uno::Type > SAL_CALL SwXTextGraphicObject::getTypes( ) throw(uno::RuntimeException) { @@ -2929,9 +2762,7 @@ uno::Sequence< uno::Type > SAL_CALL return aGraphicTypes; } -/* -----------------------------15.03.00 16:30-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< sal_Int8 > SAL_CALL SwXTextGraphicObject::getImplementationId( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2944,63 +2775,47 @@ uno::Sequence< sal_Int8 > SAL_CALL SwXTextGraphicObject::getImplementationId( ) } return aId; } -/*-- 11.12.98 16:02:27--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextGraphicObject::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { SwXFrame::attach(xTextRange); } -/*-- 11.12.98 16:02:27--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextRange > SwXTextGraphicObject::getAnchor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); return SwXFrame::getAnchor(); } -/*-- 11.12.98 16:02:28--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextGraphicObject::dispose(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); SwXFrame::dispose(); } -/*-- 11.12.98 16:02:29--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextGraphicObject::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { SwXFrame::addEventListener(aListener); } -/*-- 11.12.98 16:02:29--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextGraphicObject::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { SwXFrame::removeEventListener(aListener); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + OUString SwXTextGraphicObject::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextGraphicObject"); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + sal_Bool SwXTextGraphicObject::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) { return COMPARE_EQUAL == rServiceName.compareToAscii("com.sun.star.text.TextGraphicObject") || SwXFrame::supportsService(rServiceName); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + uno::Sequence< OUString > SwXTextGraphicObject::getSupportedServiceNames(void) throw( uno::RuntimeException ) { @@ -3010,23 +2825,17 @@ uno::Sequence< OUString > SwXTextGraphicObject::getSupportedServiceNames(void) pArray[aRet.getLength() - 1] = C2U("com.sun.star.text.TextGraphicObject"); return aRet; } -/* -----------------------------20.06.00 10:02-------------------------------- - ---------------------------------------------------------------------------*/ void * SAL_CALL SwXTextGraphicObject::operator new( size_t t) throw() { return SwXTextGraphicObjectBaseClass::operator new(t); } -/* -----------------------------20.06.00 10:02-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextGraphicObject::operator delete( void * p) throw() { SwXTextGraphicObjectBaseClass::operator delete(p); } -/* -----------------------------15.12.00 12:45-------------------------------- - ---------------------------------------------------------------------------*/ uno::Reference<container::XNameReplace> SAL_CALL SwXTextGraphicObject::getEvents() throw(uno::RuntimeException) @@ -3037,48 +2846,33 @@ uno::Reference<container::XNameReplace> SAL_CALL /****************************************************************** * ******************************************************************/ -/*-- 11.12.98 16:16:53--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextEmbeddedObject::SwXTextEmbeddedObject( SwDoc *pDoc ) : SwXFrame(FLYCNTTYPE_OLE, aSwMapProvider.GetPropertySet(PROPERTY_MAP_EMBEDDED_OBJECT), pDoc) { } -/*-- 11.12.98 16:16:53--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextEmbeddedObject::SwXTextEmbeddedObject(SwFrmFmt& rFmt) : SwXFrame(rFmt, FLYCNTTYPE_OLE, aSwMapProvider.GetPropertySet(PROPERTY_MAP_EMBEDDED_OBJECT)) { } -/*-- 11.12.98 16:16:54--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextEmbeddedObject::~SwXTextEmbeddedObject() { } -/*-- 11.12.98 16:16:54--------------------------------------------------- - - -----------------------------------------------------------------------*/ -/* -----------------------------15.03.00 16:32-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextEmbeddedObject::acquire()throw() { SwXFrame::acquire(); } -/* -----------------------------15.03.00 16:32-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextEmbeddedObject::release()throw() { SwXFrame::release(); } -/* -----------------------------15.03.00 16:32-------------------------------- - ---------------------------------------------------------------------------*/ ::uno::Any SAL_CALL SwXTextEmbeddedObject::queryInterface( const uno::Type& aType ) throw( uno::RuntimeException) { @@ -3087,9 +2881,7 @@ void SAL_CALL SwXTextEmbeddedObject::release()throw() aRet = SwXTextEmbeddedObjectBaseClass::queryInterface(aType); return aRet; } -/* -----------------------------15.03.00 16:32-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< uno::Type > SAL_CALL SwXTextEmbeddedObject::getTypes( ) throw(uno::RuntimeException) { uno::Sequence< uno::Type > aTextEmbeddedTypes = SwXTextEmbeddedObjectBaseClass::getTypes(); @@ -3109,9 +2901,7 @@ uno::Sequence< uno::Type > SAL_CALL SwXTextEmbeddedObject::getTypes( ) throw(un return aTextEmbeddedTypes; } -/* -----------------------------15.03.00 16:32-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< sal_Int8 > SAL_CALL SwXTextEmbeddedObject::getImplementationId( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3124,46 +2914,33 @@ uno::Sequence< sal_Int8 > SAL_CALL SwXTextEmbeddedObject::getImplementationId( } return aId; } -/*-- 11.12.98 16:16:54--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextEmbeddedObject::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { SwXFrame::attach(xTextRange); } -/*-- 11.12.98 16:16:54--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextRange > SwXTextEmbeddedObject::getAnchor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); return SwXFrame::getAnchor(); } -/*-- 11.12.98 16:16:54--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextEmbeddedObject::dispose(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); SwXFrame::dispose(); } -/*-- 11.12.98 16:16:55--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextEmbeddedObject::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { SwXFrame::addEventListener(aListener); } -/*-- 11.12.98 16:16:55--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextEmbeddedObject::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { SwXFrame::removeEventListener(aListener); } -/*-- 11.12.98 16:16:55--------------------------------------------------- - - -----------------------------------------------------------------------*/ uno::Reference< lang::XComponent > SwXTextEmbeddedObject::getEmbeddedObject(void) throw( uno::RuntimeException ) { @@ -3191,9 +2968,7 @@ uno::Reference< lang::XComponent > SwXTextEmbeddedObject::getEmbeddedObject(voi uno::Reference< frame::XModel > xModel( xRet, uno::UNO_QUERY); if( xBrdcst.is() && xModel.is() ) { - SwClientIter aIter( *pFmt ); - SwXOLEListener* pListener = (SwXOLEListener*)aIter. - First( TYPE( SwXOLEListener )); + SwXOLEListener* pListener = SwIterator<SwXOLEListener,SwFmt>::FirstElement( *pFmt ); //create a new one if the OLE object doesn't have one already if( !pListener ) { @@ -3206,11 +2981,6 @@ uno::Reference< lang::XComponent > SwXTextEmbeddedObject::getEmbeddedObject(voi return xRet; } -/* --18.05.2006 16:39--------------------------------------------------- - - -----------------------------------------------------------------------*/ - - uno::Reference< embed::XEmbeddedObject > SAL_CALL SwXTextEmbeddedObject::getExtendedControlOverEmbeddedObject() throw( uno::RuntimeException ) { @@ -3238,9 +3008,7 @@ uno::Reference< embed::XEmbeddedObject > SAL_CALL SwXTextEmbeddedObject::getExte uno::Reference< frame::XModel > xModel( xComp, uno::UNO_QUERY); if( xBrdcst.is() && xModel.is() ) { - SwClientIter aIter( *pFmt ); - SwXOLEListener* pListener = (SwXOLEListener*)aIter. - First( TYPE( SwXOLEListener )); + SwXOLEListener* pListener = SwIterator<SwXOLEListener,SwFmt>::FirstElement( *pFmt ); //create a new one if the OLE object doesn't have one already if( !pListener ) { @@ -3304,25 +3072,19 @@ uno::Reference< graphic::XGraphic > SAL_CALL SwXTextEmbeddedObject::getReplaceme return uno::Reference< graphic::XGraphic >(); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + OUString SwXTextEmbeddedObject::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextEmbeddedObject"); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + sal_Bool SwXTextEmbeddedObject::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) { return COMPARE_EQUAL == rServiceName.compareToAscii("com.sun.star.text.TextEmbeddedObject")|| SwXFrame::supportsService(rServiceName); } -/* -----------------03.05.99 12:28------------------- - * - * --------------------------------------------------*/ + uno::Sequence< OUString > SwXTextEmbeddedObject::getSupportedServiceNames(void) throw( uno::RuntimeException ) { @@ -3332,23 +3094,17 @@ uno::Sequence< OUString > SwXTextEmbeddedObject::getSupportedServiceNames(void) pArray[aRet.getLength() - 1] = C2U("com.sun.star.text.TextEmbeddedObject"); return aRet; } -/* -----------------------------20.06.00 10:02-------------------------------- - ---------------------------------------------------------------------------*/ void * SAL_CALL SwXTextEmbeddedObject::operator new( size_t t) throw() { return SwXTextEmbeddedObjectBaseClass::operator new(t); } -/* -----------------------------20.06.00 10:02-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXTextEmbeddedObject::operator delete( void * p) throw() { SwXTextEmbeddedObjectBaseClass::operator delete(p); } -/* -----------------------------15.12.00 12:45-------------------------------- - ---------------------------------------------------------------------------*/ uno::Reference<container::XNameReplace> SAL_CALL SwXTextEmbeddedObject::getEvents() throw(uno::RuntimeException) @@ -3361,17 +3117,13 @@ uno::Reference<container::XNameReplace> SAL_CALL * ******************************************************************/ TYPEINIT1(SwXOLEListener, SwClient); -/* -----------------------------18.01.2002 09:59------------------------------ - ---------------------------------------------------------------------------*/ SwXOLEListener::SwXOLEListener( SwFmt& rOLEFmt, uno::Reference< XModel > xOLE) : SwClient(&rOLEFmt), xOLEModel(xOLE) { } -/* -----------------------------18.01.2002 09:59------------------------------ - ---------------------------------------------------------------------------*/ SwXOLEListener::~SwXOLEListener() {} @@ -3434,7 +3186,7 @@ void SwXOLEListener::disposing( const lang::EventObject& rEvent ) /* --------------------------------------------------------------------------- ---------------------------------------------------------------------------*/ -void SwXOLEListener::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew ) +void SwXOLEListener::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) diff --git a/sw/source/core/unocore/unoftn.cxx b/sw/source/core/unocore/unoftn.cxx index d0d74fa023c7..e9c0d21b8fc9 100644 --- a/sw/source/core/unocore/unoftn.cxx +++ b/sw/source/core/unocore/unoftn.cxx @@ -99,9 +99,9 @@ public: } void Invalidate(); - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; @@ -122,7 +122,7 @@ void SwXFootnote::Impl::Invalidate() /* -----------------18.01.99 09:12------------------- * * --------------------------------------------------*/ -void SwXFootnote::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXFootnote::Impl::Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); @@ -136,7 +136,7 @@ void SwXFootnote::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) { case RES_FOOTNOTE_DELETED: if (static_cast<const void*>(m_pFmtFtn) == - static_cast<SwPtrMsgPoolItem *>(pOld)->pObject) + static_cast<const SwPtrMsgPoolItem *>(pOld)->pObject) { Invalidate(); } @@ -177,24 +177,6 @@ SwXFootnote::GetXFootnote( // to do this properly requires the SwXFootnote to register at the // SwFmtFtn directly, not at the unocallback // also this function must return a uno Reference! -#if 0 - SwClientIter aIter( rUnoCB ); - SwXFootnote::Impl * pXFootnote = static_cast<SwXFootnote::Impl*>( - aIter.First( TYPE( SwXFootnote::Impl ))); - while (pXFootnote) - { - SwDoc *const pDoc = pXFootnote->m_rThis.GetDoc(); - if (pDoc) - { - SwFmtFtn const*const pFtn = pXFootnote->GetFootnoteFormat(); - if (pFtn == &rFootnoteFmt) - { - return & pXFootnote->m_rThis; - } - } - pXFootnote = static_cast<SwXFootnote::Impl*>(aIter.Next()); - } -#endif return 0; } diff --git a/sw/source/core/unocore/unoidx.cxx b/sw/source/core/unocore/unoidx.cxx index 7fc598921b72..cc4a31c5af9b 100644 --- a/sw/source/core/unocore/unoidx.cxx +++ b/sw/source/core/unocore/unoidx.cxx @@ -147,8 +147,8 @@ lcl_ReAssignTOXType(SwDoc* pDoc, SwTOXBase& rTOXBase, const OUString& rNewName) SwTOXType aNewType(TOX_USER, rNewName); pNewType = pDoc->InsertTOXType( aNewType ); } - //has to be non-const-casted - ((SwTOXType*)pNewType)->Add(&rTOXBase); + + rTOXBase.RegisterToTOXType( *((SwTOXType*)pNewType) ); } //----------------------------------------------------------------------------- static const char cUserDefined[] = "User-Defined"; @@ -404,16 +404,16 @@ public: ? SwForm::GetFormMaxLevel(m_eTOXType) : rSection.GetTOXForm().GetFormMax(); } - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; /*-- 14.12.98 09:35:07--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXDocumentIndex::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXDocumentIndex::Impl::Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); @@ -1247,6 +1247,13 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException, case WID_INDEX_MARKS: { SwTOXMarks aMarks; +<<<<<<< local + const SwTOXType* pType = pTOXBase->GetTOXType(); + SwTOXMark::InsertTOXMarks( aMarks, *pType ); + uno::Sequence< uno::Reference<text::XDocumentIndexMark> > aXMarks(aMarks.Count()); + uno::Reference<text::XDocumentIndexMark>* pxMarks = aXMarks.getArray(); + for(USHORT i = 0; i < aMarks.Count(); i++) +======= SwTOXType const*const pType = pTOXBase->GetTOXType(); SwClientIter aIter(*pType); SwTOXMark * pMark = @@ -1264,8 +1271,9 @@ throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::Reference<text::XDocumentIndexMark>* pxMarks = aXMarks.getArray(); for(sal_uInt16 i = 0; i < aMarks.Count(); i++) +>>>>>>> other { - pMark = aMarks.GetObject(i); + SwTOXMark* pMark = aMarks.GetObject(i); pxMarks[i] = SwXDocumentIndexMark::CreateXDocumentIndexMark( *m_pImpl->m_pDoc, *const_cast<SwTOXType*>(pType), *pMark); @@ -1666,9 +1674,9 @@ public: } void Invalidate(); - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; /* -----------------------------16.10.00 11:24-------------------------------- @@ -1696,7 +1704,7 @@ void SwXDocumentIndexMark::Impl::Invalidate() /*-- 14.12.98 10:25:47--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXDocumentIndexMark::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXDocumentIndexMark::Impl::Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); diff --git a/sw/source/core/unocore/unoobj.cxx b/sw/source/core/unocore/unoobj.cxx index d09f195e4dc4..7be5ca8130c2 100644 --- a/sw/source/core/unocore/unoobj.cxx +++ b/sw/source/core/unocore/unoobj.cxx @@ -396,7 +396,7 @@ SwUnoCursorHelper::SetPageDesc( { throw lang::IllegalArgumentException(); } - pPageDesc->Add( pNewDesc.get() ); + pNewDesc.get()->RegisterToPageDesc( *pPageDesc ); bPut = sal_True; } if(!bPut) @@ -827,13 +827,13 @@ public: m_bIsDisposed = true; m_ListenerContainer.Disposing(); } - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; -void SwXTextCursor::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextCursor::Impl::Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); diff --git a/sw/source/core/unocore/unoobj2.cxx b/sw/source/core/unocore/unoobj2.cxx index 3990355937d4..3231b73b023c 100644 --- a/sw/source/core/unocore/unoobj2.cxx +++ b/sw/source/core/unocore/unoobj2.cxx @@ -117,16 +117,13 @@ #include <dcontact.hxx> #include <dflyobj.hxx> #include <crsskip.hxx> -// OD 2004-05-07 #i28701# #include <vector> -// OD 2004-05-24 #i28701# #include <sortedobjs.hxx> #include <sortopt.hxx> - #include <algorithm> #include <iterator> #include <boost/bind.hpp> - +#include <switerator.hxx> using namespace ::com::sun::star; using ::rtl::OUString; @@ -213,9 +210,9 @@ void CollectFrameAtNode( SwClient& rClnt, const SwNodeIndex& rIdx, ? FLY_AT_CHAR : FLY_AT_PARA); const SwCntntFrm* pCFrm; const SwCntntNode* pCNd; - if( pDoc->GetRootFrm() && + if( pDoc->GetCurrentViewShell() && //swmod 071108//swmod 071225 0 != (pCNd = rIdx.GetNode().GetCntntNode()) && - 0 != (pCFrm = pCNd->GetFrm()) ) + 0 != (pCFrm = pCNd->getLayoutFrm( pDoc->GetCurrentLayout())) ) { const SwSortedObjs *pObjs = pCFrm->GetDrawObjs(); if( pObjs ) @@ -273,22 +270,19 @@ void CollectFrameAtNode( SwClient& rClnt, const SwNodeIndex& rIdx, UnoActionContext::UnoActionContext(SwDoc *const pDoc) : m_pDoc(pDoc) { - SwRootFrm *const pRootFrm = m_pDoc->GetRootFrm(); + SwRootFrm *const pRootFrm = m_pDoc->GetCurrentLayout(); if (pRootFrm) { pRootFrm->StartAllAction(); } } -/*-----------------04.03.98 11:56------------------- - ---------------------------------------------------*/ UnoActionContext::~UnoActionContext() { // Doc may already have been removed here if (m_pDoc) { - SwRootFrm *const pRootFrm = m_pDoc->GetRootFrm(); + SwRootFrm *const pRootFrm = m_pDoc->GetCurrentLayout(); if (pRootFrm) { pRootFrm->EndAllAction(); @@ -302,7 +296,7 @@ UnoActionContext::~UnoActionContext() UnoActionRemoveContext::UnoActionRemoveContext(SwDoc *const pDoc) : m_pDoc(pDoc) { - SwRootFrm *const pRootFrm = m_pDoc->GetRootFrm(); + SwRootFrm *const pRootFrm = m_pDoc->GetCurrentLayout(); if (pRootFrm) { pRootFrm->UnoRemoveAllActions(); @@ -314,7 +308,7 @@ UnoActionRemoveContext::UnoActionRemoveContext(SwDoc *const pDoc) * --------------------------------------------------*/ UnoActionRemoveContext::~UnoActionRemoveContext() { - SwRootFrm *const pRootFrm = m_pDoc->GetRootFrm(); + SwRootFrm *const pRootFrm = m_pDoc->GetCurrentLayout(); if (pRootFrm) { pRootFrm->UnoRestoreAllActions(); @@ -322,10 +316,7 @@ UnoActionRemoveContext::~UnoActionRemoveContext() } -/*-- 10.12.98 11:52:15--------------------------------------------------- - - -----------------------------------------------------------------------*/ -void ClientModify(SwClient* pClient, SfxPoolItem *pOld, SfxPoolItem *pNew) +void ClientModify(SwClient* pClient, const SfxPoolItem *pOld, const SfxPoolItem *pNew) { switch( pOld ? pOld->Which() : 0 ) { @@ -345,9 +336,6 @@ void ClientModify(SwClient* pClient, SfxPoolItem *pOld, SfxPoolItem *pNew) } -/*-- 09.12.98 14:19:03--------------------------------------------------- - - -----------------------------------------------------------------------*/ void SwUnoCursorHelper::SetCrsrAttr(SwPaM & rPam, const SfxItemSet& rSet, const SetAttrMode nAttrMode, const bool bTableMode) @@ -391,9 +379,7 @@ void SwUnoCursorHelper::SetCrsrAttr(SwPaM & rPam, } //<-end,zhaojianwei } -/*-- 09.12.98 14:19:04--------------------------------------------------- - -----------------------------------------------------------------------*/ // --> OD 2006-07-12 #i63870# // split third parameter <bCurrentAttrOnly> into new parameters <bOnlyTxtAttr> // and <bGetFromChrFmt> to get better control about resulting <SfxItemSet> @@ -535,20 +521,17 @@ public: uno::Reference< text::XTextContent > NextElement_Impl() throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException); - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; -void SwXParagraphEnumeration::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXParagraphEnumeration::Impl::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } -/*-- 10.12.98 11:52:12--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXParagraphEnumeration::SwXParagraphEnumeration( uno::Reference< text::XText > const& xParent, ::std::auto_ptr<SwUnoCrsr> pCursor, @@ -558,24 +541,17 @@ SwXParagraphEnumeration::SwXParagraphEnumeration( pStartNode, pTable) ) { } -/*-- 10.12.98 11:52:12--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXParagraphEnumeration::~SwXParagraphEnumeration() { } -/* -----------------------------06.04.00 16:33-------------------------------- - - ---------------------------------------------------------------------------*/ OUString SAL_CALL SwXParagraphEnumeration::getImplementationName() throw (uno::RuntimeException) { return C2U("SwXParagraphEnumeration"); } -/* -----------------------------06.04.00 16:33-------------------------------- - ---------------------------------------------------------------------------*/ static char const*const g_ServicesParagraphEnum[] = { "com.sun.star.text.ParagraphEnumeration", @@ -590,9 +566,7 @@ throw (uno::RuntimeException) return ::sw::SupportsServiceImpl( g_nServicesParagraphEnum, g_ServicesParagraphEnum, rServiceName); } -/* -----------------------------06.04.00 16:33-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SAL_CALL SwXParagraphEnumeration::getSupportedServiceNames() throw (uno::RuntimeException) @@ -601,9 +575,6 @@ throw (uno::RuntimeException) g_nServicesParagraphEnum, g_ServicesParagraphEnum); } -/*-- 10.12.98 11:52:13--------------------------------------------------- - - -----------------------------------------------------------------------*/ sal_Bool SAL_CALL SwXParagraphEnumeration::hasMoreElements() throw (uno::RuntimeException) { @@ -611,9 +582,6 @@ SwXParagraphEnumeration::hasMoreElements() throw (uno::RuntimeException) return (m_pImpl->m_bFirstParagraph) ? sal_True : m_pImpl->m_xNextPara.is(); } -/*-- 14.08.03 13:10:14--------------------------------------------------- - - -----------------------------------------------------------------------*/ //!! compare to SwShellTableCrsr::FillRects() in viscrs.cxx static SwTableNode * @@ -754,9 +722,7 @@ throw (container::NoSuchElementException, lang::WrappedTargetException, return xRef; } -/*-- 10.12.98 11:52:14--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SAL_CALL SwXParagraphEnumeration::nextElement() throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) @@ -826,13 +792,13 @@ public: } const ::sw::mark::IMark * GetBookmark() const { return m_pMark; } - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; -void SwXTextRange::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextRange::Impl::Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew) { const bool bAlreadyRegistered = 0 != GetRegisteredIn(); ClientModify(this, pOld, pNew); @@ -1268,8 +1234,7 @@ CreateParentXText(SwDoc & rDoc, const SwPosition& rPos) SwFrmFmt *const pFmt = pSttNode->GetFlyFmt(); if (0 != pFmt) { - SwXTextFrame* pFrame( static_cast<SwXTextFrame*>( - SwClientIter( *pFmt ).First( TYPE( SwXTextFrame ) ) ) ); + SwXTextFrame* pFrame = SwIterator<SwXTextFrame,SwFmt>::FirstElement( *pFmt ); xParentText = pFrame ? pFrame : new SwXTextFrame( *pFmt ); } } @@ -1625,23 +1590,17 @@ public: } void MakeRanges(); - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; -/*-- 10.12.98 13:57:02--------------------------------------------------- - - -----------------------------------------------------------------------*/ -void SwXTextRanges::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextRanges::Impl::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } -/* -----------------10.12.98 14:25------------------- - * - * --------------------------------------------------*/ void SwXTextRanges::Impl::MakeRanges() { SwUnoCrsr *const pCursor = GetCursor(); @@ -1668,32 +1627,21 @@ const SwUnoCrsr* SwXTextRanges::GetCursor() const return m_pImpl->GetCursor(); } -/*-- 10.12.98 13:57:22--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXTextRanges::SwXTextRanges(SwPaM *const pPaM) : m_pImpl( new SwXTextRanges::Impl(pPaM) ) { } -/*-- 10.12.98 13:57:22--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXTextRanges::~SwXTextRanges() { } -/* -----------------------------13.03.00 12:15-------------------------------- - - ---------------------------------------------------------------------------*/ const uno::Sequence< sal_Int8 > & SwXTextRanges::getUnoTunnelId() { static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); return aSeq; } -/* -----------------------------10.03.00 18:04-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXTextRanges::getSomething(const uno::Sequence< sal_Int8 >& rId) throw (uno::RuntimeException) @@ -1707,17 +1655,12 @@ throw (uno::RuntimeException) * danach wird ein Array mit uno::Reference< XTextPosition > angelegt * ****************************************************************************/ -/* -----------------------------06.04.00 16:36-------------------------------- - - ---------------------------------------------------------------------------*/ OUString SAL_CALL SwXTextRanges::getImplementationName() throw (uno::RuntimeException) { return C2U("SwXTextRanges"); } -/* -----------------------------06.04.00 16:36-------------------------------- - ---------------------------------------------------------------------------*/ static char const*const g_ServicesTextRanges[] = { "com.sun.star.text.TextRanges", @@ -1732,9 +1675,6 @@ throw (uno::RuntimeException) g_nServicesTextRanges, g_ServicesTextRanges, rServiceName); } -/* -----------------------------06.04.00 16:36-------------------------------- - - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SAL_CALL SwXTextRanges::getSupportedServiceNames() throw (uno::RuntimeException) { @@ -1742,18 +1682,13 @@ SwXTextRanges::getSupportedServiceNames() throw (uno::RuntimeException) g_nServicesTextRanges, g_ServicesTextRanges); } -/*-- 10.12.98 13:57:24--------------------------------------------------- - - -----------------------------------------------------------------------*/ sal_Int32 SAL_CALL SwXTextRanges::getCount() throw (uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); return static_cast<sal_Int32>(m_pImpl->m_Ranges.size()); } -/*-- 10.12.98 13:57:25--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SAL_CALL SwXTextRanges::getByIndex(sal_Int32 nIndex) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) @@ -1770,26 +1705,18 @@ throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, return ret; } -/*-- 10.12.98 13:57:25--------------------------------------------------- - - -----------------------------------------------------------------------*/ uno::Type SAL_CALL SwXTextRanges::getElementType() throw (uno::RuntimeException) { return text::XTextRange::static_type(); } -/*-- 10.12.98 13:57:26--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SAL_CALL SwXTextRanges::hasElements() throw (uno::RuntimeException) { // no mutex necessary: getCount() does locking return getCount() > 0; } -/* -----------------11.12.98 10:07------------------- - * - * --------------------------------------------------*/ void SwUnoCursorHelper::SetString(SwCursor & rCursor, const OUString& rString) { // Start/EndAction @@ -1846,22 +1773,18 @@ public: return static_cast<SwUnoCrsr*>( const_cast<SwModify*>(GetRegisteredIn())); } - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; -/*-- 23.03.99 13:22:37--------------------------------------------------- - - -----------------------------------------------------------------------*/ - struct InvalidFrameDepend { bool operator() (::boost::shared_ptr<SwDepend> const & rEntry) { return !rEntry->GetRegisteredIn(); } }; -void SwXParaFrameEnumeration::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXParaFrameEnumeration::Impl::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) @@ -1879,9 +1802,6 @@ void SwXParaFrameEnumeration::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) } } -/* -----------------23.03.99 13:38------------------- - * - * --------------------------------------------------*/ static sal_Bool lcl_CreateNextObject(SwUnoCrsr& i_rUnoCrsr, uno::Reference<text::XTextContent> & o_rNextObject, @@ -1896,9 +1816,7 @@ lcl_CreateNextObject(SwUnoCrsr& i_rUnoCrsr, // the format should be valid here, otherwise the client // would have been removed in ::Modify // check for a shape first - SwClientIter aIter(*pFormat); - SwDrawContact * const pContact = - static_cast<SwDrawContact*>( aIter.First(TYPE(SwDrawContact)) ); + SwDrawContact* const pContact = SwIterator<SwDrawContact,SwFmt>::FirstElement( *pFormat ); if (pContact) { SdrObject * const pSdr = pContact->GetMaster(); @@ -1946,9 +1864,6 @@ lcl_FillFrame(SwClient & rEnum, SwUnoCrsr& rUnoCrsr, } } -/*-- 23.03.99 13:22:29--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXParaFrameEnumeration::SwXParaFrameEnumeration( const SwPaM& rPaM, const enum ParaFrameMode eParaFrameMode, SwFrmFmt *const pFmt) @@ -2006,16 +1921,11 @@ SwXParaFrameEnumeration::SwXParaFrameEnumeration( lcl_FillFrame(*m_pImpl.get(), *m_pImpl->GetCursor(), m_pImpl->m_Frames); } } -/*-- 23.03.99 13:22:30--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXParaFrameEnumeration::~SwXParaFrameEnumeration() { } -/*-- 23.03.99 13:22:32--------------------------------------------------- - - -----------------------------------------------------------------------*/ sal_Bool SAL_CALL SwXParaFrameEnumeration::hasMoreElements() throw (uno::RuntimeException) { @@ -2029,9 +1939,7 @@ SwXParaFrameEnumeration::hasMoreElements() throw (uno::RuntimeException) : lcl_CreateNextObject(*m_pImpl->GetCursor(), m_pImpl->m_xNextObject, m_pImpl->m_Frames); } -/*-- 23.03.99 13:22:33--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SAL_CALL SwXParaFrameEnumeration::nextElement() throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) @@ -2058,18 +1966,12 @@ throw (container::NoSuchElementException, return aRet; } -/* -----------------------------06.04.00 16:39-------------------------------- - - ---------------------------------------------------------------------------*/ OUString SAL_CALL SwXParaFrameEnumeration::getImplementationName() throw (uno::RuntimeException) { return C2U("SwXParaFrameEnumeration"); } -/* -----------------------------06.04.00 16:39-------------------------------- - - ---------------------------------------------------------------------------*/ static char const*const g_ServicesParaFrameEnum[] = { "com.sun.star.util.ContentEnumeration", @@ -2085,9 +1987,6 @@ throw (uno::RuntimeException) g_nServicesParaFrameEnum, g_ServicesParaFrameEnum, rServiceName); } -/* -----------------------------06.04.00 16:39-------------------------------- - - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SAL_CALL SwXParaFrameEnumeration::getSupportedServiceNames() throw (uno::RuntimeException) diff --git a/sw/source/core/unocore/unoparagraph.cxx b/sw/source/core/unocore/unoparagraph.cxx index 0c26b7efc849..6557e7fc918d 100644 --- a/sw/source/core/unocore/unoparagraph.cxx +++ b/sw/source/core/unocore/unoparagraph.cxx @@ -151,7 +151,7 @@ public: return static_cast<const SwTxtNode*>(GetRegisteredIn()); } SwTxtNode * GetTxtNode() { - return static_cast<SwTxtNode*>(pRegisteredIn); + return static_cast<SwTxtNode*>(GetRegisteredInNonConst()); } SwTxtNode & GetTxtNodeOrThrow() { @@ -183,16 +183,16 @@ public: const uno::Sequence< ::rtl::OUString >& rPropertyNames, bool bDirectValuesOnly) throw (uno::RuntimeException); - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; /*-- 11.12.98 08:12:58--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXParagraph::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXParagraph::Impl::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew ) { ClientModify(this, pOld, pNew); if (!GetRegisteredIn()) diff --git a/sw/source/core/unocore/unoport.cxx b/sw/source/core/unocore/unoport.cxx index 6e68c8582d26..7e97a582dc8f 100644 --- a/sw/source/core/unocore/unoport.cxx +++ b/sw/source/core/unocore/unoport.cxx @@ -63,7 +63,7 @@ using ::rtl::OUString; * SwXTextPortion ******************************************************************/ -static void init(SwXTextPortion & rPortion, const SwUnoCrsr* pPortionCursor) +void SwXTextPortion::init(const SwUnoCrsr* pPortionCursor) { SwUnoCrsr* pUnoCursor = pPortionCursor->GetDoc()->CreateUnoCrsr(*pPortionCursor->GetPoint()); @@ -72,7 +72,7 @@ static void init(SwXTextPortion & rPortion, const SwUnoCrsr* pPortionCursor) pUnoCursor->SetMark(); *pUnoCursor->GetMark() = *pPortionCursor->GetMark(); } - pUnoCursor->Add(& rPortion); + pUnoCursor->Add(this); } /*-- 11.12.98 09:56:55--------------------------------------------------- @@ -97,7 +97,7 @@ SwXTextPortion::SwXTextPortion(const SwUnoCrsr* pPortionCrsr, , m_ePortionType(eType) , m_bIsCollapsed(false) { - init(*this, pPortionCrsr); + init( pPortionCrsr); } /* -----------------24.03.99 16:30------------------- @@ -119,7 +119,7 @@ SwXTextPortion::SwXTextPortion(const SwUnoCrsr* pPortionCrsr, , m_ePortionType(PORTION_FRAME) , m_bIsCollapsed(false) { - init(*this, pPortionCrsr); + init( pPortionCrsr); } /* -----------------------------19.02.01 10:52-------------------------------- @@ -142,7 +142,7 @@ SwXTextPortion::SwXTextPortion(const SwUnoCrsr* pPortionCrsr, , m_ePortionType( bIsEnd ? PORTION_RUBY_END : PORTION_RUBY_START ) , m_bIsCollapsed(false) { - init(*this, pPortionCrsr); + init( pPortionCrsr); if (!bIsEnd) { @@ -1061,7 +1061,7 @@ throw( uno::RuntimeException ) /*-- 11.12.98 09:57:01--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXTextPortion::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextPortion::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if (!m_FrameDepend.GetRegisteredIn()) diff --git a/sw/source/core/unocore/unoportenum.cxx b/sw/source/core/unocore/unoportenum.cxx index 560fdc27a5b3..138f3d615ae2 100644 --- a/sw/source/core/unocore/unoportenum.cxx +++ b/sw/source/core/unocore/unoportenum.cxx @@ -755,7 +755,7 @@ lcl_ExportHints( xRef = pPortion = new SwXTextPortion( pUnoCrsr, xParent, PORTION_FIELD); Reference<XTextField> xField = - CreateSwXTextField(*pDoc, pAttr->GetFld()); + SwXTextField::CreateSwXTextField(*pDoc, pAttr->GetFld()); pPortion->SetTextField(xField); } break; @@ -1219,7 +1219,7 @@ lcl_CreatePortions( /*-- 27.01.99 10:44:45--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXTextPortionEnumeration::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextPortionEnumeration::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } diff --git a/sw/source/core/unocore/unoredline.cxx b/sw/source/core/unocore/unoredline.cxx index 9e9d042c519d..4eb142d01c9e 100644 --- a/sw/source/core/unocore/unoredline.cxx +++ b/sw/source/core/unocore/unoredline.cxx @@ -57,24 +57,18 @@ using ::rtl::OUString; using ::rtl::OUStringBuffer; -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ SwXRedlineText::SwXRedlineText(SwDoc* _pDoc, SwNodeIndex aIndex) : SwXText(_pDoc, CURSOR_REDLINE), aNodeIndex(aIndex) { } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ const SwStartNode* SwXRedlineText::GetStartNode() const { return aNodeIndex.GetNode().GetStartNode(); } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Any SwXRedlineText::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException) { @@ -97,9 +91,7 @@ uno::Any SwXRedlineText::queryInterface( const uno::Type& rType ) return aRet; } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence<uno::Type> SwXRedlineText::getTypes() throw(uno::RuntimeException) { @@ -113,9 +105,7 @@ uno::Sequence<uno::Type> SwXRedlineText::getTypes() return aTypes; } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence<sal_Int8> SwXRedlineText::getImplementationId() throw(uno::RuntimeException) { @@ -129,9 +119,7 @@ uno::Sequence<sal_Int8> SwXRedlineText::getImplementationId() } return aId; } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Reference<text::XTextCursor> SwXRedlineText::createTextCursor(void) throw( uno::RuntimeException ) { @@ -174,9 +162,7 @@ uno::Reference<text::XTextCursor> SwXRedlineText::createTextCursor(void) return static_cast<text::XWordCursor*>(pXCursor); } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Reference<text::XTextCursor> SwXRedlineText::createTextCursorByRange( const uno::Reference<text::XTextRange> & aTextRange) throw( uno::RuntimeException ) @@ -186,9 +172,7 @@ uno::Reference<text::XTextCursor> SwXRedlineText::createTextCursorByRange( xCursor->gotoRange(aTextRange->getEnd(), sal_True); return xCursor; } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Reference<container::XEnumeration> SwXRedlineText::createEnumeration(void) throw( uno::RuntimeException ) { @@ -199,23 +183,17 @@ uno::Reference<container::XEnumeration> SwXRedlineText::createEnumeration(void) GetDoc()->CreateUnoCrsr(*aPam.Start(), sal_False)); return new SwXParagraphEnumeration(this, pUnoCursor, CURSOR_REDLINE); } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Type SwXRedlineText::getElementType( ) throw(uno::RuntimeException) { return ::getCppuType((uno::Reference<text::XTextRange>*)0); } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ sal_Bool SwXRedlineText::hasElements( ) throw(uno::RuntimeException) { return sal_True; // we always have a content index } -/* -----------------------------19.12.00 11:36-------------------------------- - ---------------------------------------------------------------------------*/ SwXRedlinePortion::SwXRedlinePortion( const SwRedline* pRed, const SwUnoCrsr* pPortionCrsr, uno::Reference< text::XText > xParent, sal_Bool bStart) : @@ -226,15 +204,11 @@ SwXRedlinePortion::SwXRedlinePortion( const SwRedline* pRed, { SetCollapsed(!pRedline->HasMark()); } -/*-- 19.12.00 11:37:24--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXRedlinePortion::~SwXRedlinePortion() { } -/* -----------------------------19.12.00 11:46-------------------------------- - ---------------------------------------------------------------------------*/ static util::DateTime lcl_DateTimeToUno(const DateTime& rDT) { util::DateTime aRetDT; @@ -317,9 +291,7 @@ uno::Any SwXRedlinePortion::getPropertyValue( const OUString& rPropertyName ) } return aRet; } -/* -----------------------------19.12.00 15:16-------------------------------- - ---------------------------------------------------------------------------*/ void SwXRedlinePortion::Validate() throw( uno::RuntimeException ) { SwUnoCrsr* pUnoCrsr = GetCursor(); @@ -334,9 +306,7 @@ void SwXRedlinePortion::Validate() throw( uno::RuntimeException ) if(!bFound) throw uno::RuntimeException(); } -/* -----------------------------21.03.00 15:39-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< sal_Int8 > SAL_CALL SwXRedlinePortion::getImplementationId( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -349,9 +319,7 @@ uno::Sequence< sal_Int8 > SAL_CALL SwXRedlinePortion::getImplementationId( ) th } return aId; } -/* -----------------------------11.01.01 16:39-------------------------------- - ---------------------------------------------------------------------------*/ uno::Any SwXRedlinePortion::GetPropertyValue( const OUString& rPropertyName, const SwRedline& rRedline ) throw() { uno::Any aRet; @@ -391,9 +359,7 @@ uno::Any SwXRedlinePortion::GetPropertyValue( const OUString& rPropertyName, co } return aRet; } -/* -----------------------------11.01.01 11:22-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< beans::PropertyValue > SwXRedlinePortion::CreateRedlineProperties( const SwRedline& rRedline, sal_Bool bIsStart ) throw() { @@ -447,9 +413,7 @@ uno::Sequence< beans::PropertyValue > SwXRedlinePortion::CreateRedlineProperties aRet.realloc(nPropIdx); return aRet; } -/*-- 11.01.01 17:06:07--------------------------------------------------- - -----------------------------------------------------------------------*/ TYPEINIT1(SwXRedline, SwClient); SwXRedline::SwXRedline(SwRedline& rRedline, SwDoc& rDoc) : SwXText(&rDoc, CURSOR_REDLINE), @@ -458,24 +422,18 @@ SwXRedline::SwXRedline(SwRedline& rRedline, SwDoc& rDoc) : { pDoc->GetPageDescFromPool(RES_POOLPAGE_STANDARD)->Add(this); } -/*-- 11.01.01 17:06:08--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXRedline::~SwXRedline() { } -/*-- 11.01.01 17:06:08--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXRedline::getPropertySetInfo( ) throw(uno::RuntimeException) { static uno::Reference< beans::XPropertySetInfo > xRef = aSwMapProvider.GetPropertySet(PROPERTY_MAP_REDLINE)->getPropertySetInfo(); return xRef; } -/*-- 11.01.01 17:06:08--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXRedline::setPropertyValue( const OUString& rPropertyName, const uno::Any& aValue ) throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) @@ -545,9 +503,7 @@ void SwXRedline::setPropertyValue( const OUString& rPropertyName, const uno::Any throw lang::IllegalArgumentException(); } } -/*-- 11.01.01 17:06:08--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXRedline::getPropertyValue( const OUString& rPropertyName ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) { @@ -617,43 +573,33 @@ uno::Any SwXRedline::getPropertyValue( const OUString& rPropertyName ) aRet = SwXRedlinePortion::GetPropertyValue(rPropertyName, *pRedline); return aRet; } -/*-- 11.01.01 17:06:09--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXRedline::addPropertyChangeListener( const OUString& /*aPropertyName*/, const uno::Reference< beans::XPropertyChangeListener >& /*xListener*/ ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) { } -/*-- 11.01.01 17:06:09--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXRedline::removePropertyChangeListener( const OUString& /*aPropertyName*/, const uno::Reference< beans::XPropertyChangeListener >& /*aListener*/ ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) { } -/*-- 11.01.01 17:06:09--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXRedline::addVetoableChangeListener( const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener >& /*aListener*/ ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) { } -/*-- 11.01.01 17:06:09--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXRedline::removeVetoableChangeListener( const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener >& /*aListener*/ ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) { } -/*-- 11.01.01 17:06:10--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXRedline::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXRedline::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) @@ -662,9 +608,7 @@ void SwXRedline::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) pRedline = 0; } } -/*-- 19.12.00 11:37:25--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< container::XEnumeration > SwXRedline::createEnumeration(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -683,25 +627,19 @@ uno::Reference< container::XEnumeration > SwXRedline::createEnumeration(void) t } return xRet; } -/* -----------------------------19.12.00 12:34-------------------------------- - ---------------------------------------------------------------------------*/ uno::Type SwXRedline::getElementType( ) throw(uno::RuntimeException) { return ::getCppuType((uno::Reference<text::XTextRange>*)0); } -/* -----------------------------19.12.00 12:34-------------------------------- - ---------------------------------------------------------------------------*/ sal_Bool SwXRedline::hasElements( ) throw(uno::RuntimeException) { if(!pDoc) throw uno::RuntimeException(); return 0 != pRedline->GetContentIdx(); } -/* -----------------------------19.12.00 15:11-------------------------------- - ---------------------------------------------------------------------------*/ uno::Reference< text::XTextCursor > SwXRedline::createTextCursor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -737,18 +675,14 @@ uno::Reference< text::XTextCursor > SwXRedline::createTextCursor(void) throw( u } return xRet; } -/* -----------------------------19.12.00 15:11-------------------------------- - ---------------------------------------------------------------------------*/ uno::Reference< text::XTextCursor > SwXRedline::createTextCursorByRange( const uno::Reference< text::XTextRange > & /*aTextPosition*/) throw( uno::RuntimeException ) { throw uno::RuntimeException(); } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Any SwXRedline::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException) { @@ -759,9 +693,7 @@ uno::Any SwXRedline::queryInterface( const uno::Type& rType ) } return aRet; } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence<uno::Type> SwXRedline::getTypes() throw(uno::RuntimeException) { @@ -775,9 +707,7 @@ uno::Sequence<uno::Type> SwXRedline::getTypes() pTypes[nCurType++] = pBaseTypes[nType]; return aTypes; } -/* --------------------------------------------------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence<sal_Int8> SwXRedline::getImplementationId() throw(uno::RuntimeException) { diff --git a/sw/source/core/unocore/unoredlines.cxx b/sw/source/core/unocore/unoredlines.cxx index 774e9732e949..9061d6b9af5d 100644 --- a/sw/source/core/unocore/unoredlines.cxx +++ b/sw/source/core/unocore/unoredlines.cxx @@ -42,27 +42,20 @@ #include <doc.hxx> #include <docary.hxx> #include <redline.hxx> - +#include <switerator.hxx> using namespace ::com::sun::star; using ::rtl::OUString; -/*-- 11.01.01 15:28:54--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXRedlines::SwXRedlines(SwDoc* _pDoc) : SwUnoCollection(_pDoc) { } -/*-- 11.01.01 15:28:55--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXRedlines::~SwXRedlines() { } -/*-- 11.01.01 15:28:55--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXRedlines::getCount( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -71,9 +64,7 @@ sal_Int32 SwXRedlines::getCount( ) throw(uno::RuntimeException) const SwRedlineTbl& rRedTbl = GetDoc()->GetRedlineTbl(); return rRedTbl.Count(); } -/*-- 11.01.01 15:28:55--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXRedlines::getByIndex(sal_Int32 nIndex) throw( lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -91,9 +82,7 @@ uno::Any SwXRedlines::getByIndex(sal_Int32 nIndex) throw lang::IndexOutOfBoundsException(); return aRet; } -/*-- 11.01.01 15:28:55--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< container::XEnumeration > SwXRedlines::createEnumeration(void) throw( uno::RuntimeException ) { @@ -102,16 +91,12 @@ uno::Reference< container::XEnumeration > SwXRedlines::createEnumeration(void) throw uno::RuntimeException(); return uno::Reference< container::XEnumeration >(new SwXRedlineEnumeration(*GetDoc())); } -/*-- 11.01.01 15:28:55--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SwXRedlines::getElementType( ) throw(uno::RuntimeException) { return ::getCppuType((uno::Reference<beans::XPropertySet>*)0); } -/*-- 11.01.01 15:28:56--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXRedlines::hasElements( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -120,76 +105,70 @@ sal_Bool SwXRedlines::hasElements( ) throw(uno::RuntimeException) const SwRedlineTbl& rRedTbl = GetDoc()->GetRedlineTbl(); return rRedTbl.Count() > 0; } -/*-- 11.01.01 15:28:56--------------------------------------------------- - -----------------------------------------------------------------------*/ OUString SwXRedlines::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXRedlines"); } -/*-- 11.01.01 15:28:56--------------------------------------------------- +<<<<<<< local +BOOL SwXRedlines::supportsService(const rtl::OUString& /*ServiceName*/) +======= -----------------------------------------------------------------------*/ sal_Bool SwXRedlines::supportsService(const rtl::OUString& /*ServiceName*/) +>>>>>>> other throw( uno::RuntimeException ) { DBG_ERROR("not implemented"); return sal_False; } -/*-- 11.01.01 15:28:57--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXRedlines::getSupportedServiceNames(void) throw( uno::RuntimeException ) { DBG_ERROR("not implemented"); return uno::Sequence< OUString >(); } -/*-- 11.01.01 15:28:57--------------------------------------------------- - -----------------------------------------------------------------------*/ beans::XPropertySet* SwXRedlines::GetObject( SwRedline& rRedline, SwDoc& rDoc ) { SwPageDesc* pStdDesc = rDoc.GetPageDescFromPool(RES_POOLPAGE_STANDARD); - SwClientIter aIter(*pStdDesc); - SwXRedline* pxRedline = (SwXRedline*)aIter.First( TYPE( SwXRedline )); + SwIterator<SwXRedline,SwPageDesc> aIter(*pStdDesc); + SwXRedline* pxRedline = aIter.First(); while(pxRedline) { if(pxRedline->GetRedline() == &rRedline) break; - pxRedline = (SwXRedline*)aIter.Next(); + pxRedline = aIter.Next(); } if( !pxRedline ) pxRedline = new SwXRedline(rRedline, rDoc); return pxRedline; } -/*-- 12.01.01 15:06:10--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXRedlineEnumeration::SwXRedlineEnumeration(SwDoc& rDoc) : pDoc(&rDoc), nCurrentIndex(0) { pDoc->GetPageDescFromPool(RES_POOLPAGE_STANDARD)->Add(this); } -/*-- 12.01.01 15:06:10--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXRedlineEnumeration::~SwXRedlineEnumeration() { } -/*-- 12.01.01 15:06:10--------------------------------------------------- +<<<<<<< local +BOOL SwXRedlineEnumeration::hasMoreElements(void) throw( uno::RuntimeException ) +======= -----------------------------------------------------------------------*/ sal_Bool SwXRedlineEnumeration::hasMoreElements(void) throw( uno::RuntimeException ) +>>>>>>> other { if(!pDoc) throw uno::RuntimeException(); return pDoc->GetRedlineTbl().Count() > nCurrentIndex; } -/*-- 12.01.01 15:06:10--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXRedlineEnumeration::nextElement(void) throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -203,31 +182,28 @@ uno::Any SwXRedlineEnumeration::nextElement(void) aRet <<= xRet; return aRet; } -/*-- 12.01.01 15:06:10--------------------------------------------------- - -----------------------------------------------------------------------*/ rtl::OUString SwXRedlineEnumeration::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXRedlineEnumeration"); } -/*-- 12.01.01 15:06:10--------------------------------------------------- +<<<<<<< local +BOOL SwXRedlineEnumeration::supportsService(const rtl::OUString& /*ServiceName*/) throw( uno::RuntimeException ) +======= -----------------------------------------------------------------------*/ sal_Bool SwXRedlineEnumeration::supportsService(const rtl::OUString& /*ServiceName*/) throw( uno::RuntimeException ) +>>>>>>> other { return sal_False; } -/*-- 12.01.01 15:06:11--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXRedlineEnumeration::getSupportedServiceNames(void) throw( uno::RuntimeException ) { return uno::Sequence< OUString >(); } -/*-- 12.01.01 15:06:11--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXRedlineEnumeration::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXRedlineEnumeration::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) diff --git a/sw/source/core/unocore/unorefmk.cxx b/sw/source/core/unocore/unorefmk.cxx index 1bb59d0eee65..eace03960692 100644 --- a/sw/source/core/unocore/unorefmk.cxx +++ b/sw/source/core/unocore/unorefmk.cxx @@ -82,9 +82,9 @@ public: bool IsValid() const { return 0 != GetRegisteredIn(); } void InsertRefMark( SwPaM & rPam, SwXTextCursor const*const pCursor ); void Invalidate(); - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); }; @@ -105,7 +105,7 @@ void SwXReferenceMark::Impl::Invalidate() /*-- 11.12.98 10:28:37--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXReferenceMark::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXReferenceMark::Impl::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); @@ -119,7 +119,7 @@ void SwXReferenceMark::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) { case RES_REFMARK_DELETED: if (static_cast<const void*>(m_pMarkFmt) == - static_cast<SwPtrMsgPoolItem *>(pOld)->pObject) + static_cast<const SwPtrMsgPoolItem *>(pOld)->pObject) { Invalidate(); } @@ -152,20 +152,6 @@ SwXReferenceMark::GetReferenceMark( // #i105557#: do not iterate over the registered clients: race condition // to do this properly requires the SwXReferenceMark to register at the // SwFmtRefMark directly, not at the unocallback -#if 0 - SwClientIter aIter( rUnoCB ); - SwXReferenceMark::Impl * pXMark = - static_cast<SwXReferenceMark::Impl*>( - aIter.First( TYPE( SwXReferenceMark::Impl ) )); - while (pXMark) - { - if (pXMark->m_pMarkFmt == &rMarkFmt) - { - return &pXMark->m_rThis; - } - pXMark = static_cast<SwXReferenceMark::Impl*>(aIter.Next()); - } -#endif return 0; } @@ -773,9 +759,9 @@ public: inline const ::sw::Meta * GetMeta() const; // only for SwXMetaField! inline const ::sw::MetaField * GetMetaField() const; - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); }; @@ -785,7 +771,7 @@ inline const ::sw::Meta * SwXMeta::Impl::GetMeta() const } // SwModify -void SwXMeta::Impl::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwXMeta::Impl::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { m_pTextPortions.reset(); // throw away cache (SwTxtNode changed) diff --git a/sw/source/core/unocore/unosect.cxx b/sw/source/core/unocore/unosect.cxx index f95ac3385938..b87754c28b3c 100644 --- a/sw/source/core/unocore/unosect.cxx +++ b/sw/source/core/unocore/unosect.cxx @@ -169,16 +169,16 @@ public: const uno::Sequence< ::rtl::OUString >& rPropertyNames) throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException); - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; /*-- 10.12.98 14:42:52--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXTextSection::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextSection::Impl::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if (!GetRegisteredIn()) diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx index b175cbc709d4..06607e70303a 100644 --- a/sw/source/core/unocore/unosett.cxx +++ b/sw/source/core/unocore/unosett.cxx @@ -537,7 +537,7 @@ uno::Any SwXFootnoteProperties::getPropertyValue(const OUString& rPropertyName) case WID_PAGE_STYLE : { String aString; - if( rFtnInfo.GetPageDescDep()->GetRegisteredIn() ) + if( rFtnInfo.KnowsPageDesc() ) { SwStyleNameMapper::FillProgName( rFtnInfo.GetPageDesc( *pDoc )->GetName(), @@ -809,7 +809,7 @@ uno::Any SwXEndnoteProperties::getPropertyValue(const OUString& rPropertyName) case WID_PAGE_STYLE : { String aString; - if( rEndInfo.GetPageDescDep()->GetRegisteredIn() ) + if( rEndInfo.KnowsPageDesc() ) { SwStyleNameMapper::FillProgName( rEndInfo.GetPageDesc( *pDoc )->GetName(), @@ -1087,7 +1087,7 @@ Any SwXLineNumberingProperties::getPropertyValue(const OUString& rPropertyName) String aString; // return empty string if no char format is set // otherwise it would be created here - if(rInfo.GetRegisteredIn()) + if(rInfo.HasCharFormat()) { SwStyleNameMapper::FillProgName( rInfo.GetCharFmt(*pDoc)->GetName(), @@ -2445,7 +2445,7 @@ void SwXNumberingRules::setName(const OUString& /*rName*/) throw( RuntimeExcepti /*-- 14.12.98 14:58:00--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXNumberingRules::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXNumberingRules::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx index a039160d8360..8a784aa5268d 100644 --- a/sw/source/core/unocore/unostyle.cxx +++ b/sw/source/core/unocore/unostyle.cxx @@ -1478,7 +1478,7 @@ SwXStyle::~SwXStyle() /*-- 17.12.98 08:26:51--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXStyle::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXStyle::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) @@ -2006,7 +2006,7 @@ void lcl_SetStyleProperty(const SfxItemPropertySimpleEntry& rEntry, SwPageDesc* pPageDesc = ::GetPageDescByName_Impl(*pDoc, sDescName); if(pPageDesc) { - pPageDesc->Add( pNewDesc ); + pNewDesc->RegisterToPageDesc( *pPageDesc ); bPut = sal_True; } else @@ -3890,7 +3890,7 @@ SwXAutoStyleFamily::~SwXAutoStyleFamily() { } -void SwXAutoStyleFamily::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXAutoStyleFamily::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) @@ -4035,7 +4035,7 @@ SwXAutoStylesEnumerator::~SwXAutoStylesEnumerator() delete pImpl; } -void SwXAutoStylesEnumerator::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXAutoStylesEnumerator::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) @@ -4091,7 +4091,7 @@ SwXAutoStyle::~SwXAutoStyle() { } -void SwXAutoStyle::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXAutoStyle::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); if(!GetRegisteredIn()) diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx index 6160f196d987..744336bf11c2 100644 --- a/sw/source/core/unocore/unotbl.cxx +++ b/sw/source/core/unocore/unotbl.cxx @@ -101,7 +101,7 @@ #include <unochart.hxx> #include <sortopt.hxx> #include <rtl/math.hxx> - +#include <switerator.hxx> using namespace ::com::sun::star; using ::rtl::OUString; @@ -113,9 +113,6 @@ extern void lcl_GetTblBoxColStr( sal_uInt16 nCol, String& rNm ); #define UNO_TABLE_COLUMN_SUM 10000 -/* -----------------17.07.98 15:47------------------- - * - * --------------------------------------------------*/ table::BorderLine lcl_SvxLineToLine(const SvxBorderLine* pLine) { table::BorderLine aLine; @@ -130,9 +127,7 @@ table::BorderLine lcl_SvxLineToLine(const SvxBorderLine* pLine) aLine.Color = aLine.InnerLineWidth = aLine.OuterLineWidth = aLine.LineDistance = 0; return aLine; } -/* -----------------17.07.98 15:52------------------- - * - * --------------------------------------------------*/ + sal_Bool lcl_LineToSvxLine(const table::BorderLine& rLine, SvxBorderLine& rSvxLine) { rSvxLine.SetColor( Color(rLine.Color)); @@ -142,9 +137,7 @@ sal_Bool lcl_LineToSvxLine(const table::BorderLine& rLine, SvxBorderLine& rSvxLi sal_Bool bRet = rLine.InnerLineWidth > 0 || rLine.OuterLineWidth > 0; return bRet; } -/* -----------------11.12.98 14:22------------------- - * - * --------------------------------------------------*/ + void lcl_SetSpecialProperty(SwFrmFmt* pFmt, const SfxItemPropertySimpleEntry* pEntry, const uno::Any& aValue) throw (lang::IllegalArgumentException) { @@ -226,9 +219,6 @@ void lcl_SetSpecialProperty(SwFrmFmt* pFmt, const SfxItemPropertySimpleEntry* pE } } -/* -----------------27.04.98 08:50------------------- - * - * --------------------------------------------------*/ uno::Any lcl_GetSpecialProperty(SwFrmFmt* pFmt, const SfxItemPropertySimpleEntry* pEntry ) { uno::Any aRet; @@ -326,10 +316,6 @@ uno::Any lcl_GetSpecialProperty(SwFrmFmt* pFmt, const SfxItemPropertySimpleEntry } return aRet; } -/* -----------------19.10.05 08:32------------------- - * - * --------------------------------------------------*/ - // returns the position for the cell with the specified name // (note that the indices rColumn and rRow are 0 based here) @@ -465,10 +451,6 @@ int lcl_CompareCellRanges( } -/* -----------------25.06.98 08:32------------------- - * - * --------------------------------------------------*/ - // returns the cell name for the cell at the specified position // (note that the indices nColumn and nRow are 0 based here) String lcl_GetCellName( sal_Int32 nColumn, sal_Int32 nRow ) @@ -530,9 +512,6 @@ const SwTableBox* lcl_FindCornerTableBox(const SwTableLines& rTableLines, const return pBox; } -/* -----------------21.11.05 14:46------------------- - - --------------------------------------------------*/ // start cell should be in the upper-left corner of the range and // end cell in the lower-right. // I.e. from the four possible representation @@ -570,9 +549,6 @@ void SwRangeDescriptor::Normalize() } -/* -----------------25.06.98 08:32------------------- - * - * --------------------------------------------------*/ SwXCell* lcl_CreateXCell(SwFrmFmt* pFmt, sal_Int32 nColumn, sal_Int32 nRow) { SwXCell* pXCell = 0; @@ -585,9 +561,7 @@ SwXCell* lcl_CreateXCell(SwFrmFmt* pFmt, sal_Int32 nColumn, sal_Int32 nRow) } return pXCell; } -/* -----------------20.07.98 12:35------------------- - * - * --------------------------------------------------*/ + void lcl_InspectLines(SwTableLines& rLines, SvStrings& rAllNames) { for( sal_uInt16 i = 0; i < rLines.Count(); i++ ) @@ -607,27 +581,23 @@ void lcl_InspectLines(SwTableLines& rLines, SvStrings& rAllNames) } } } -/* -----------------02.10.98 15:55------------------- - * - * --------------------------------------------------*/ + void lcl_FormatTable(SwFrmFmt* pTblFmt) { - SwClientIter aIter( *pTblFmt ); - for( SwClient* pC = aIter.First( TYPE( SwFrm )); - pC; pC = aIter.Next() ) + SwIterator<SwFrm,SwFmt> aIter( *pTblFmt ); + for( SwFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { - if( ((SwFrm*)pC)->IsTabFrm() ) + // mba: no TYPEINFO for SwTabFrm + if( pFrm->IsTabFrm() ) { - if(((SwFrm*)pC)->IsValid()) - ((SwFrm*)pC)->InvalidatePos(); - ((SwTabFrm*)pC)->SetONECalcLowers(); - ((SwTabFrm*)pC)->Calc(); + if(pFrm->IsValid()) + pFrm->InvalidatePos(); + ((SwTabFrm*)pFrm)->SetONECalcLowers(); + ((SwTabFrm*)pFrm)->Calc(); } } } -/* -----------------20.07.98 13:15------------------- - * - * --------------------------------------------------*/ + void lcl_CrsrSelect(SwPaM* pCrsr, sal_Bool bExpand) { if(bExpand) @@ -639,9 +609,7 @@ void lcl_CrsrSelect(SwPaM* pCrsr, sal_Bool bExpand) pCrsr->DeleteMark(); } -/* -----------------17.07.98 14:36------------------- - * - * --------------------------------------------------*/ + void lcl_GetTblSeparators(uno::Any& rRet, SwTable* pTable, SwTableBox* pBox, sal_Bool bRow) { SwTabCols aCols; @@ -670,9 +638,7 @@ void lcl_GetTblSeparators(uno::Any& rRet, SwTable* pTable, SwTableBox* pBox, sal rRet.setValue(&aColSeq, ::getCppuType((uno::Sequence< text::TableColumnSeparator>*)0)); } -/* -----------------17.07.98 14:36------------------- - * - * --------------------------------------------------*/ + void lcl_SetTblSeparators(const uno::Any& rVal, SwTable* pTable, SwTableBox* pBox, sal_Bool bRow, SwDoc* pDoc) { SwTabCols aOldCols; @@ -716,17 +682,13 @@ void lcl_SetTblSeparators(const uno::Any& rVal, SwTable* pTable, SwTableBox* pBo } } } -/* -----------------30.04.02 08:00------------------- - * - * --------------------------------------------------*/ + inline rtl::OUString lcl_getString( SwXCell &rCell ) { // getString is a member function of the base class... return rCell.getString(); } -/* -----------------30.04.02 08:00------------------- - * non UNO function call to set string in SwXCell - * --------------------------------------------------*/ +/* non UNO function call to set string in SwXCell */ void lcl_setString( SwXCell &rCell, const rtl::OUString &rTxt, sal_Bool bKeepNumberFmt ) { @@ -742,9 +704,7 @@ void lcl_setString( SwXCell &rCell, const rtl::OUString &rTxt, } rCell.SwXText::setString(rTxt); } -/* -----------------30.04.02 08:00------------------- - * non UNO function call to get value from SwXCell - * --------------------------------------------------*/ +/* non UNO function call to get value from SwXCell */ double lcl_getValue( SwXCell &rCell ) { double fRet; @@ -754,9 +714,7 @@ double lcl_getValue( SwXCell &rCell ) ::rtl::math::setNan( &fRet ); return fRet; } -/* -----------------30.04.02 08:00------------------- - * non UNO function call to set value in SwXCell - * --------------------------------------------------*/ +/* non UNO function call to set value in SwXCell */ void lcl_setValue( SwXCell &rCell, double nVal ) { if(rCell.IsValid()) @@ -794,9 +752,7 @@ void lcl_setValue( SwXCell &rCell, double nVal ) * SwXCell ******************************************************************/ TYPEINIT1(SwXCell, SwClient); -/*-- 11.12.98 10:56:23--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXCell::SwXCell(SwFrmFmt* pTblFmt, SwTableBox* pBx, sal_uInt16 nPos ) : SwXText(pTblFmt->GetDoc(), CURSOR_TBLTEXT), SwClient(pTblFmt), @@ -806,9 +762,7 @@ SwXCell::SwXCell(SwFrmFmt* pTblFmt, SwTableBox* pBx, sal_uInt16 nPos ) : nFndPos(nPos) { } -/* -----------------------------09.08.00 15:59-------------------------------- - ---------------------------------------------------------------------------*/ SwXCell::SwXCell(SwFrmFmt* pTblFmt, const SwStartNode& rStartNode) : SwXText(pTblFmt->GetDoc(), CURSOR_TBLTEXT), SwClient(pTblFmt), @@ -819,24 +773,17 @@ SwXCell::SwXCell(SwFrmFmt* pTblFmt, const SwStartNode& rStartNode) : { } -/*-- 11.12.98 10:56:24--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXCell::~SwXCell() { } -/* -----------------------------10.03.00 18:02-------------------------------- - ---------------------------------------------------------------------------*/ const uno::Sequence< sal_Int8 > & SwXCell::getUnoTunnelId() { static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); return aSeq; } -/* -----------------------------10.03.00 18:04-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXCell::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw(uno::RuntimeException) { @@ -849,9 +796,7 @@ sal_Int64 SAL_CALL SwXCell::getSomething( const uno::Sequence< sal_Int8 >& rId ) else return SwXText::getSomething(rId); } -/* -----------------------------18.05.00 10:18-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< uno::Type > SAL_CALL SwXCell::getTypes( ) throw(uno::RuntimeException) { static uno::Sequence< uno::Type > aRetTypes; @@ -873,9 +818,7 @@ uno::Sequence< uno::Type > SAL_CALL SwXCell::getTypes( ) throw(uno::RuntimeExce } return aRetTypes; } -/* -----------------------------18.05.00 10:18-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< sal_Int8 > SAL_CALL SwXCell::getImplementationId( ) throw(uno::RuntimeException) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -888,23 +831,17 @@ uno::Sequence< sal_Int8 > SAL_CALL SwXCell::getImplementationId( ) throw(uno::R } return aId; } -/* -----------------------------18.05.00 10:18-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXCell::acquire( ) throw() { SwXCellBaseClass::acquire(); } -/* -----------------------------18.05.00 10:18-------------------------------- - ---------------------------------------------------------------------------*/ void SAL_CALL SwXCell::release( ) throw() { SwXCellBaseClass::release(); } -/* -----------------------------18.05.00 10:23-------------------------------- - ---------------------------------------------------------------------------*/ uno::Any SAL_CALL SwXCell::queryInterface( const uno::Type& aType ) throw (uno::RuntimeException) { @@ -913,9 +850,7 @@ uno::Any SAL_CALL SwXCell::queryInterface( const uno::Type& aType ) aRet = SwXText::queryInterface(aType); return aRet; } -/*-- 11.12.98 10:56:24--------------------------------------------------- - -----------------------------------------------------------------------*/ const SwStartNode *SwXCell::GetStartNode() const { const SwStartNode *pSttNd = 0; @@ -931,9 +866,7 @@ SwXCell::CreateCursor() throw (uno::RuntimeException) { return createTextCursor(); } -/*-- 11.12.98 10:56:24--------------------------------------------------- - -----------------------------------------------------------------------*/ bool SwXCell::IsValid() const { // FIXME: this is now a const method, to make SwXText::IsValid invisible @@ -955,9 +888,7 @@ bool SwXCell::IsValid() const } return 0 != pBox; } -/*-- 11.12.98 10:56:25--------------------------------------------------- - -----------------------------------------------------------------------*/ OUString SwXCell::getFormula(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -971,9 +902,7 @@ OUString SwXCell::getFormula(void) throw( uno::RuntimeException ) } return sRet; } -/*-- 11.12.98 10:56:26--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCell::setFormula(const OUString& rFormula) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1004,9 +933,7 @@ void SwXCell::setFormula(const OUString& rFormula) throw( uno::RuntimeException pMyDoc->UpdateTblFlds( &aTblUpdate ); } } -/*-- 11.12.98 10:56:26--------------------------------------------------- - -----------------------------------------------------------------------*/ double SwXCell::getValue(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1015,17 +942,13 @@ double SwXCell::getValue(void) throw( uno::RuntimeException ) // #i112652# a table cell may contain NaN as a value, do not filter that return fRet; } -/*-- 11.12.98 10:56:26--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCell::setValue(double rValue) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); lcl_setValue( *this, rValue ); } -/*-- 11.12.98 10:56:26--------------------------------------------------- - -----------------------------------------------------------------------*/ table::CellContentType SwXCell::getType(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1043,27 +966,21 @@ table::CellContentType SwXCell::getType(void) throw( uno::RuntimeException ) } return nRes; } -/* -----------------27.04.99 12:06------------------- - * - * --------------------------------------------------*/ + void SwXCell::setString(const OUString& aString) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); lcl_setString( *this, aString ); } -/*-- 11.12.98 10:56:27--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXCell::getError(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); OUString sContent = getString(); return sContent.equals(ViewShell::GetShellRes()->aCalc_Error); } -/*-- 11.12.98 10:56:28--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextCursor > SwXCell::createTextCursor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1087,9 +1004,7 @@ uno::Reference< text::XTextCursor > SwXCell::createTextCursor(void) throw( uno: throw uno::RuntimeException(); return aRef; } -/*-- 11.12.98 10:56:28--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextCursor > SwXCell::createTextCursorByRange(const uno::Reference< text::XTextRange > & xTextPosition) throw( uno::RuntimeException ) { @@ -1116,17 +1031,13 @@ uno::Reference< text::XTextCursor > SwXCell::createTextCursorByRange(const uno: throw uno::RuntimeException(); return aRef; } -/*-- 11.12.98 10:56:33--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXCell::getPropertySetInfo(void) throw( uno::RuntimeException ) { static uno::Reference< beans::XPropertySetInfo > xRef = m_pPropSet->getPropertySetInfo(); return xRef; } -/*-- 11.12.98 10:56:34--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCell::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue) throw( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -1156,9 +1067,7 @@ void SwXCell::setPropertyValue(const OUString& rPropertyName, const uno::Any& aV } } } -/*-- 11.12.98 10:56:34--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXCell::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -1214,37 +1123,27 @@ uno::Any SwXCell::getPropertyValue(const OUString& rPropertyName) } return aRet; } -/*-- 11.12.98 10:56:35--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCell::addPropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 10:56:35--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCell::removePropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 10:56:36--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCell::addVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 10:56:36--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCell::removeVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 10:56:37--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< container::XEnumeration > SwXCell::createEnumeration(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1273,31 +1172,23 @@ uno::Reference< container::XEnumeration > SwXCell::createEnumeration(void) thro } return aRef; } -/*-- 11.12.98 10:56:38--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SAL_CALL SwXCell::getElementType(void) throw( uno::RuntimeException ) { return ::getCppuType((const uno::Reference<text::XTextRange>*)0); } -/*-- 11.12.98 10:56:38--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXCell::hasElements(void) throw( uno::RuntimeException ) { return sal_True; } -/*-- 11.12.98 10:56:37--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXCell::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXCell::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } -/* -----------------12.06.98 07:54------------------- - * - * --------------------------------------------------*/ + SwXCell* SwXCell::CreateXCell(SwFrmFmt* pTblFmt, SwTableBox* pBox, SwTable *pTable ) { SwXCell* pRet = 0; @@ -1312,15 +1203,14 @@ SwXCell* SwXCell::CreateXCell(SwFrmFmt* pTblFmt, SwTableBox* pBox, SwTable *pTab //wenn es die Box gibt, dann wird auch eine Zelle zurueckgegeben if(pFoundBox) { - SwClientIter aIter( *pTblFmt ); - SwXCell* pXCell = (SwXCell*)aIter. - First( TYPE( SwXCell )); + SwIterator<SwXCell,SwFmt> aIter( *pTblFmt ); + SwXCell* pXCell = aIter.First(); while( pXCell ) { // gibt es eine passende Zelle bereits? if(pXCell->GetTblBox() == pBox) break; - pXCell = (SwXCell*)aIter.Next(); + pXCell = aIter.Next(); } //sonst anlegen if(!pXCell) @@ -1330,9 +1220,7 @@ SwXCell* SwXCell::CreateXCell(SwFrmFmt* pTblFmt, SwTableBox* pBox, SwTable *pTab } return pRet; } -/* -----------------12.06.98 07:37------------------- - * exitstiert die Box in der angegebenen Tabelle? - * --------------------------------------------------*/ +/* does box exist in given table? */ SwTableBox* SwXCell::FindBox(SwTable* pTable, SwTableBox* pBox2) { // check if nFndPos happens to point to the right table box @@ -1348,24 +1236,27 @@ SwTableBox* SwXCell::FindBox(SwTable* pTable, SwTableBox* pBox2) nFndPos = USHRT_MAX; return 0; } -/* -----------------------------19.04.00 15:20-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXCell::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXCell"); } +<<<<<<< local +======= /* -----------------------------19.04.00 15:20-------------------------------- +>>>>>>> other +<<<<<<< local +BOOL SwXCell::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXCell::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { String sServiceName(rServiceName); return sServiceName.EqualsAscii("com.sun.star.text.CellProperties"); } -/* -----------------------------19.04.00 15:20-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXCell::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -1377,23 +1268,26 @@ uno::Sequence< OUString > SwXCell::getSupportedServiceNames(void) throw( uno::Ru /****************************************************************** * SwXTextTableRow ******************************************************************/ -/* -----------------------------19.04.00 15:20-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXTextTableRow::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextTableRow"); } +<<<<<<< local +======= /* -----------------------------19.04.00 15:20-------------------------------- +>>>>>>> other +<<<<<<< local +BOOL SwXTextTableRow::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTextTableRow::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.TextTableRow") == rServiceName; } -/* -----------------------------19.04.00 15:20-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextTableRow::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -1402,9 +1296,7 @@ uno::Sequence< OUString > SwXTextTableRow::getSupportedServiceNames(void) throw( return aRet; } TYPEINIT1(SwXTextTableRow, SwClient); -/*-- 11.12.98 12:04:44--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextTableRow::SwXTextTableRow(SwFrmFmt* pFmt, SwTableLine* pLn) : SwClient(pFmt), m_pPropSet(aSwMapProvider.GetPropertySet(PROPERTY_MAP_TEXT_TABLE_ROW)), @@ -1412,24 +1304,18 @@ SwXTextTableRow::SwXTextTableRow(SwFrmFmt* pFmt, SwTableLine* pLn) : { } -/*-- 11.12.98 12:04:45--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextTableRow::~SwXTextTableRow() { } -/*-- 11.12.98 12:04:46--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXTextTableRow::getPropertySetInfo(void) throw( uno::RuntimeException ) { static uno::Reference< beans::XPropertySetInfo > xRef = m_pPropSet->getPropertySetInfo(); return xRef; } -/*-- 11.12.98 12:04:46--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableRow::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue) throw( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException ) @@ -1490,9 +1376,7 @@ void SwXTextTableRow::setPropertyValue(const OUString& rPropertyName, } } } -/*-- 11.12.98 12:04:47--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTextTableRow::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1539,44 +1423,32 @@ uno::Any SwXTextTableRow::getPropertyValue(const OUString& rPropertyName) throw( } return aRet; } -/*-- 11.12.98 12:04:47--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableRow::addPropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:04:48--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableRow::removePropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:04:48--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableRow::addVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:04:49--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableRow::removeVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:04:49--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXTextTableRow::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextTableRow::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } -/*-- 11.12.98 12:04:50--------------------------------------------------- - -----------------------------------------------------------------------*/ SwTableLine* SwXTextTableRow::FindLine(SwTable* pTable, SwTableLine* pLine) { SwTableLine* pRet = 0; @@ -1593,17 +1465,22 @@ SwTableLine* SwXTextTableRow::FindLine(SwTable* pTable, SwTableLine* pLine) /****************************************************************** * SwXTextTableCursor ******************************************************************/ -/* -----------------------------19.04.00 15:21-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXTextTableCursor::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextTableCursor"); } +<<<<<<< local +======= /* -----------------------------19.04.00 15:21-------------------------------- +>>>>>>> other +<<<<<<< local +BOOL SwXTextTableCursor::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTextTableCursor::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.TextTableCursor") == rServiceName; } @@ -1615,9 +1492,7 @@ const SwDoc* SwXTextTableCursor::GetDoc() const { return GetFrmFmt()->Ge SwDoc* SwXTextTableCursor::GetDoc() { return GetFrmFmt()->GetDoc(); } const SwUnoCrsr* SwXTextTableCursor::GetCrsr() const { return (SwUnoCrsr*)aCrsrDepend.GetRegisteredIn(); } SwUnoCrsr* SwXTextTableCursor::GetCrsr() { return (SwUnoCrsr*)aCrsrDepend.GetRegisteredIn(); } -/* -----------------------------19.04.00 15:21-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextTableCursor::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -1626,9 +1501,6 @@ uno::Sequence< OUString > SwXTextTableCursor::getSupportedServiceNames(void) thr return aRet; } -/*-- 11.12.98 12:16:13--------------------------------------------------- - - -----------------------------------------------------------------------*/ SwXTextTableCursor::SwXTextTableCursor(SwFrmFmt* pFmt, SwTableBox* pBox) : SwClient(pFmt), aCrsrDepend(this, 0), @@ -1643,9 +1515,7 @@ SwXTextTableCursor::SwXTextTableCursor(SwFrmFmt* pFmt, SwTableBox* pBox) : SwUnoTableCrsr* pTblCrsr = dynamic_cast<SwUnoTableCrsr*>(pUnoCrsr); pTblCrsr->MakeBoxSels(); } -/*-- 11.12.98 12:16:14--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextTableCursor::SwXTextTableCursor(SwFrmFmt& rTableFmt, const SwTableCursor* pTableSelection) : SwClient(&rTableFmt), aCrsrDepend(this, 0), @@ -1666,9 +1536,7 @@ SwXTextTableCursor::SwXTextTableCursor(SwFrmFmt& rTableFmt, const SwTableCursor* SwUnoTableCrsr* pTblCrsr = dynamic_cast<SwUnoTableCrsr*>(pUnoCrsr); pTblCrsr->MakeBoxSels(); } -/*-- 11.12.98 12:16:14--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextTableCursor::~SwXTextTableCursor() { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1676,9 +1544,7 @@ SwXTextTableCursor::~SwXTextTableCursor() if(pUnoCrsr) delete pUnoCrsr; } -/*-- 11.12.98 12:16:15--------------------------------------------------- - -----------------------------------------------------------------------*/ OUString SwXTextTableCursor::getRangeName(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1718,9 +1584,7 @@ OUString SwXTextTableCursor::getRangeName(void) throw( uno::RuntimeException ) } return aRet; } -/*-- 11.12.98 12:16:15--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTableCursor::gotoCellByName(const OUString& CellName, sal_Bool Expand) throw( uno::RuntimeException ) { @@ -1736,9 +1600,7 @@ sal_Bool SwXTextTableCursor::gotoCellByName(const OUString& CellName, sal_Bool E } return bRet; } -/*-- 11.12.98 12:16:15--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTableCursor::goLeft(sal_Int16 Count, sal_Bool Expand) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1752,9 +1614,7 @@ sal_Bool SwXTextTableCursor::goLeft(sal_Int16 Count, sal_Bool Expand) throw( uno } return bRet; } -/*-- 11.12.98 12:16:15--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTableCursor::goRight(sal_Int16 Count, sal_Bool Expand) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1768,9 +1628,7 @@ sal_Bool SwXTextTableCursor::goRight(sal_Int16 Count, sal_Bool Expand) throw( un } return bRet; } -/*-- 11.12.98 12:16:16--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTableCursor::goUp(sal_Int16 Count, sal_Bool Expand) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1784,9 +1642,7 @@ sal_Bool SwXTextTableCursor::goUp(sal_Int16 Count, sal_Bool Expand) throw( uno:: } return bRet; } -/*-- 11.12.98 12:16:16--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTableCursor::goDown(sal_Int16 Count, sal_Bool Expand) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1800,9 +1656,7 @@ sal_Bool SwXTextTableCursor::goDown(sal_Int16 Count, sal_Bool Expand) throw( uno } return bRet; } -/*-- 11.12.98 12:16:16--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableCursor::gotoStart(sal_Bool Expand) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1814,9 +1668,7 @@ void SwXTextTableCursor::gotoStart(sal_Bool Expand) throw( uno::RuntimeException pTblCrsr->MoveTable(fnTableCurr, fnTableStart); } } -/*-- 11.12.98 12:16:16--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableCursor::gotoEnd(sal_Bool Expand) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1828,9 +1680,7 @@ void SwXTextTableCursor::gotoEnd(sal_Bool Expand) throw( uno::RuntimeException ) pTblCrsr->MoveTable(fnTableCurr, fnTableEnd); } } -/*-- 11.12.98 12:16:16--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTableCursor::mergeRange(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1859,9 +1709,7 @@ sal_Bool SwXTextTableCursor::mergeRange(void) throw( uno::RuntimeException ) } return bRet; } -/*-- 11.12.98 12:16:16--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTextTableCursor::splitRange(sal_Int16 Count, sal_Bool Horizontal) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -1885,17 +1733,13 @@ sal_Bool SwXTextTableCursor::splitRange(sal_Int16 Count, sal_Bool Horizontal) th } return bRet; } -/*-- 11.12.98 12:16:17--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXTextTableCursor::getPropertySetInfo(void) throw( uno::RuntimeException ) { static uno::Reference< beans::XPropertySetInfo > xRef = m_pPropSet->getPropertySetInfo(); return xRef; } -/*-- 11.12.98 12:16:17--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableCursor::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue) throw( beans::UnknownPropertyException, @@ -1961,9 +1805,7 @@ void SwXTextTableCursor::setPropertyValue(const OUString& rPropertyName, throw beans::UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) ); } } -/*-- 11.12.98 12:16:17--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTextTableCursor::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -2023,38 +1865,28 @@ uno::Any SwXTextTableCursor::getPropertyValue(const OUString& rPropertyName) } return aRet; } -/*-- 11.12.98 12:16:18--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableCursor::addPropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:16:18--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableCursor::removePropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:16:18--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableCursor::addVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:16:19--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTableCursor::removeVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:16:19--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXTextTableCursor::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextTableCursor::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } @@ -2078,36 +1910,32 @@ public: void ApplyTblAttr(const SwTable& rTbl, SwDoc& rDoc); }; -/* -----------------22.06.98 09:43------------------- - * - * --------------------------------------------------*/ + SwTableProperties_Impl::SwTableProperties_Impl() { } -/* -----------------22.06.98 09:51------------------- - * - * --------------------------------------------------*/ + SwTableProperties_Impl::~SwTableProperties_Impl() { } +<<<<<<< local + +void SwTableProperties_Impl::SetProperty(USHORT nWhichId, USHORT nMemberId, const uno::Any& rVal) +======= /* -----------------22.06.98 09:51------------------- * * --------------------------------------------------*/ void SwTableProperties_Impl::SetProperty(sal_uInt16 nWhichId, sal_uInt16 nMemberId, const uno::Any& rVal) +>>>>>>> other { aAnyMap.SetValue( nWhichId, nMemberId, rVal ); } -/* -----------------22.06.98 09:51------------------- - * - * --------------------------------------------------*/ sal_Bool SwTableProperties_Impl::GetProperty(sal_uInt16 nWhichId, sal_uInt16 nMemberId, const uno::Any*& rpAny ) { return aAnyMap.FillValue( nWhichId, nMemberId, rpAny ); } -/* -----------------13.01.99 15:42------------------- - * - * --------------------------------------------------*/ + void SwTableProperties_Impl::ApplyTblAttr(const SwTable& rTbl, SwDoc& rDoc) { SfxItemSet aSet(rDoc.GetAttrPool(), @@ -2286,17 +2114,13 @@ void SwTableProperties_Impl::ApplyTblAttr(const SwTable& rTbl, SwDoc& rDoc) rDoc.SetAttr( aSet, *rTbl.GetFrmFmt() ); } } -/* -----------------------------10.03.00 18:02-------------------------------- - ---------------------------------------------------------------------------*/ const uno::Sequence< sal_Int8 > & SwXTextTable::getUnoTunnelId() { static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); return aSeq; } -/* -----------------------------10.03.00 18:04-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXTextTable::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw(uno::RuntimeException) { @@ -2308,14 +2132,10 @@ sal_Int64 SAL_CALL SwXTextTable::getSomething( const uno::Sequence< sal_Int8 >& } return 0; } -/*-- 11.12.98 12:42:43--------------------------------------------------- - -----------------------------------------------------------------------*/ TYPEINIT1(SwXTextTable, SwClient) -/*-- 11.12.98 12:42:43--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextTable::SwXTextTable() : aLstnrCntnr( (text::XTextTable*)this), aChartLstnrCntnr( (text::XTextTable*)this), @@ -2327,11 +2147,8 @@ SwXTextTable::SwXTextTable() : bFirstRowAsLabel(sal_False), bFirstColumnAsLabel(sal_False) { - } -/*-- 11.12.98 12:42:44--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextTable::SwXTextTable(SwFrmFmt& rFrmFmt) : SwClient( &rFrmFmt ), aLstnrCntnr( (text::XTextTable*)this), @@ -2344,18 +2161,13 @@ SwXTextTable::SwXTextTable(SwFrmFmt& rFrmFmt) : bFirstRowAsLabel(sal_False), bFirstColumnAsLabel(sal_False) { - } -/*-- 11.12.98 12:42:44--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTextTable::~SwXTextTable() { delete pTableProps; } -/*-- 11.12.98 12:42:44--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::initialize(sal_Int32 nR, sal_Int32 nC) throw( uno::RuntimeException ) { if(!bIsDescriptor || nR <= 0 || nC <= 0 || nR >= USHRT_MAX || nC >= USHRT_MAX ) @@ -2366,17 +2178,14 @@ void SwXTextTable::initialize(sal_Int32 nR, sal_Int32 nC) throw( uno::RuntimeExc nColumns = (sal_uInt16)nC; } } -/*-- 11.12.98 12:42:45--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XTableRows > SwXTextTable::getRows(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); uno::Reference< table::XTableRows > xRet; if (SwFrmFmt* pFmt = GetFrmFmt()) { - SwXTableRows* pRows = (SwXTableRows*)SwClientIter(*pFmt). - First(TYPE(SwXTableRows)); + SwXTableRows* pRows = SwIterator<SwXTableRows,SwFmt>::FirstElement(*pFmt); if (!pRows) pRows = new SwXTableRows(*pFmt); xRet = pRows; @@ -2385,17 +2194,14 @@ uno::Reference< table::XTableRows > SwXTextTable::getRows(void) throw( uno::Run throw uno::RuntimeException(); return xRet; } -/*-- 11.12.98 12:42:45--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XTableColumns > SwXTextTable::getColumns(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); uno::Reference< table::XTableColumns > xRet; if (SwFrmFmt* pFmt = GetFrmFmt()) { - SwXTableColumns* pCols = (SwXTableColumns*)SwClientIter(*pFmt). - First(TYPE(SwXTableColumns)); + SwXTableColumns* pCols = SwIterator<SwXTableColumns,SwFmt>::FirstElement(*pFmt); if (!pCols) pCols = new SwXTableColumns(*pFmt); xRet = pCols; @@ -2404,9 +2210,7 @@ uno::Reference< table::XTableColumns > SwXTextTable::getColumns(void) throw( un throw uno::RuntimeException(); return xRet; } -/*-- 11.12.98 12:42:45--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XCell > SwXTextTable::getCellByName(const OUString& CellName) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2426,9 +2230,7 @@ uno::Reference< table::XCell > SwXTextTable::getCellByName(const OUString& Cell throw uno::RuntimeException(); return xRet; } -/*-- 11.12.98 12:42:45--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextTable::getCellNames(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2453,9 +2255,7 @@ uno::Sequence< OUString > SwXTextTable::getCellNames(void) throw( uno::RuntimeEx } return uno::Sequence< OUString >(); } -/*-- 11.12.98 12:42:45--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextTableCursor > SwXTextTable::createCursorByCellName(const OUString& CellName) throw( uno::RuntimeException ) { @@ -2476,9 +2276,7 @@ uno::Reference< text::XTextTableCursor > SwXTextTable::createCursorByCellName(c throw uno::RuntimeException(); return xRet; } -/* -----------------18.02.99 13:36------------------- - * - * --------------------------------------------------*/ + void SwXTextTable::attachToRange(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { @@ -2528,18 +2326,7 @@ void SwXTextTable::attachToRange(const uno::Reference< text::XTextRange > & xTex // hier muessen die Properties des Descriptors ausgewertet werden pTableProps->ApplyTblAttr(*pTable, *pDoc); SwFrmFmt* pTblFmt = pTable->GetFrmFmt(); - SwClientIter aIter( *pTblFmt ); - for( SwClient* pC = aIter.First( TYPE( SwFrm )); - pC; pC = aIter.Next() ) - { - if( ((SwFrm*)pC)->IsTabFrm() ) - { - if(((SwFrm*)pC)->IsValid()) - ((SwFrm*)pC)->InvalidatePos(); - ((SwTabFrm*)pC)->SetONECalcLowers(); - ((SwTabFrm*)pC)->Calc(); - } - } + lcl_FormatTable( pTblFmt ); pTblFmt->Add(this); if(m_sTableName.Len()) @@ -2571,18 +2358,14 @@ void SwXTextTable::attachToRange(const uno::Reference< text::XTextRange > & xTex else throw lang::IllegalArgumentException(); } -/*-- 11.12.98 12:42:45--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::attach(const uno::Reference< text::XTextRange > & xTextRange) throw( lang::IllegalArgumentException, uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); attachToRange( xTextRange ); } -/*-- 11.12.98 12:42:46--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< text::XTextRange > SwXTextTable::getAnchor(void) throw( uno::RuntimeException ) { @@ -2593,9 +2376,7 @@ uno::Reference< text::XTextRange > SwXTextTable::getAnchor(void) uno::Reference< text::XTextRange > xRet = new SwXTextRange(*pFmt); return xRet; } -/*-- 11.12.98 12:42:46--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::dispose(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -2611,26 +2392,20 @@ void SwXTextTable::dispose(void) throw( uno::RuntimeException ) else throw uno::RuntimeException(); } -/*-- 11.12.98 12:42:46--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { if(!GetRegisteredIn()) throw uno::RuntimeException(); aLstnrCntnr.AddListener(aListener); } -/*-- 11.12.98 12:42:46--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException ) { if(!GetRegisteredIn() || !aLstnrCntnr.RemoveListener(aListener)) throw uno::RuntimeException(); } -/*-- 11.12.98 12:42:46--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XCell > SwXTextTable::getCellByPosition(sal_Int32 nColumn, sal_Int32 nRow) throw( uno::RuntimeException, lang::IndexOutOfBoundsException ) { @@ -2649,9 +2424,7 @@ uno::Reference< table::XCell > SwXTextTable::getCellByPosition(sal_Int32 nColum return aRef; } -/* -----------------11.12.98 13:26------------------- - * - * --------------------------------------------------*/ + uno::Reference< table::XCellRange > SwXTextTable::GetRangeByName(SwFrmFmt* pFmt, SwTable* pTable, const String& rTLName, const String& rBRName, SwRangeDescriptor& rDesc) @@ -2688,9 +2461,7 @@ uno::Reference< table::XCellRange > SwXTextTable::GetRangeByName(SwFrmFmt* pFmt } return aRef; } -/*-- 11.12.98 12:42:46--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XCellRange > SwXTextTable::getCellRangeByPosition(sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom) throw( uno::RuntimeException, lang::IndexOutOfBoundsException ) @@ -2723,9 +2494,7 @@ uno::Reference< table::XCellRange > SwXTextTable::getCellRangeByPosition(sal_In throw lang::IndexOutOfBoundsException(); return aRef; } -/*-- 11.12.98 12:42:47--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XCellRange > SwXTextTable::getCellRangeByName(const OUString& aRange) throw( uno::RuntimeException ) { @@ -2760,9 +2529,7 @@ uno::Reference< table::XCellRange > SwXTextTable::getCellRangeByName(const OUSt throw uno::RuntimeException(); return aRef; } -/*-- 29.04.02 11:42:47--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< uno::Sequence< uno::Any > > SAL_CALL SwXTextTable::getDataArray() throw (uno::RuntimeException) { @@ -2822,9 +2589,7 @@ uno::Sequence< uno::Sequence< uno::Any > > SAL_CALL SwXTextTable::getDataArray() throw uno::RuntimeException(); return aRowSeq; } -/*-- 29.04.02 11:42:47--------------------------------------------------- - -----------------------------------------------------------------------*/ void SAL_CALL SwXTextTable::setDataArray( const uno::Sequence< uno::Sequence< uno::Any > >& rArray ) throw (uno::RuntimeException) @@ -2892,9 +2657,7 @@ void SAL_CALL SwXTextTable::setDataArray( } } } -/*-- 11.12.98 12:42:47--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< uno::Sequence< double > > SwXTextTable::getData(void) throw( uno::RuntimeException ) { @@ -2936,9 +2699,7 @@ uno::Sequence< uno::Sequence< double > > SwXTextTable::getData(void) throw uno::RuntimeException(); return aRowSeq; } -/*-- 11.12.98 12:42:47--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::setData(const uno::Sequence< uno::Sequence< double > >& rData) throw( uno::RuntimeException ) { @@ -2986,9 +2747,7 @@ void SwXTextTable::setData(const uno::Sequence< uno::Sequence< double > >& rData aChartLstnrCntnr.ChartDataChanged(); } } -/*-- 11.12.98 12:42:47--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextTable::getRowDescriptions(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3028,9 +2787,7 @@ uno::Sequence< OUString > SwXTextTable::getRowDescriptions(void) throw( uno::Run throw uno::RuntimeException(); return aRet; } -/*-- 11.12.98 12:42:47--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::setRowDescriptions(const uno::Sequence< OUString >& rRowDesc) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3065,9 +2822,7 @@ void SwXTextTable::setRowDescriptions(const uno::Sequence< OUString >& rRowDesc) else throw uno::RuntimeException(); } -/*-- 11.12.98 12:42:48--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTextTable::getColumnDescriptions(void) throw( uno::RuntimeException ) { @@ -3108,9 +2863,7 @@ uno::Sequence< OUString > SwXTextTable::getColumnDescriptions(void) throw uno::RuntimeException(); return aRet; } -/*-- 11.12.98 12:42:48--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::setColumnDescriptions(const uno::Sequence< OUString >& rColumnDesc) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3147,9 +2900,7 @@ void SwXTextTable::setColumnDescriptions(const uno::Sequence< OUString >& rColum else throw uno::RuntimeException(); } -/*-- 11.12.98 12:42:48--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::addChartDataChangeEventListener( const uno::Reference< chart::XChartDataChangeEventListener > & aListener) throw( uno::RuntimeException ) @@ -3158,9 +2909,7 @@ void SwXTextTable::addChartDataChangeEventListener( throw uno::RuntimeException(); aChartLstnrCntnr.AddListener(aListener.get()); } -/*-- 11.12.98 12:42:48--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::removeChartDataChangeEventListener( const uno::Reference< chart::XChartDataChangeEventListener > & aListener) throw( uno::RuntimeException ) @@ -3168,27 +2917,21 @@ void SwXTextTable::removeChartDataChangeEventListener( if(!GetRegisteredIn() || !aChartLstnrCntnr.RemoveListener(aListener.get())) throw uno::RuntimeException(); } -/* -----------------08.03.99 15:33------------------- - * - * --------------------------------------------------*/ + sal_Bool SwXTextTable::isNotANumber(double nNumber) throw( uno::RuntimeException ) { // We use DBL_MIN because starcalc does (which uses it because chart // wants it that way!) return ( nNumber == DBL_MIN ); } -/* -----------------08.03.99 15:34------------------- - * - * --------------------------------------------------*/ + double SwXTextTable::getNotANumber(void) throw( uno::RuntimeException ) { // We use DBL_MIN because starcalc does (which uses it because chart // wants it that way!) return DBL_MIN; } -/*-- 11.12.98 12:42:48--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< beans::PropertyValue > SwXTextTable::createSortDescriptor(void) throw( uno::RuntimeException ) { @@ -3196,9 +2939,7 @@ uno::Sequence< beans::PropertyValue > SwXTextTable::createSortDescriptor(void) return SwUnoCursorHelper::CreateSortDescriptor(true); } -/*-- 11.12.98 12:42:49--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::sort(const uno::Sequence< beans::PropertyValue >& rDescriptor) throw( uno::RuntimeException ) { @@ -3220,9 +2961,7 @@ void SwXTextTable::sort(const uno::Sequence< beans::PropertyValue >& rDescriptor pFmt->GetDoc()->SortTbl(aBoxes, aSortOpt); } } -/*-- 11.12.98 12:42:49--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::autoFormat(const OUString& aName) throw( lang::IllegalArgumentException, uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3255,17 +2994,13 @@ void SwXTextTable::autoFormat(const OUString& aName) throw( lang::IllegalArgumen else throw uno::RuntimeException(); } -/*-- 11.12.98 12:42:49--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXTextTable::getPropertySetInfo(void) throw( uno::RuntimeException ) { static uno::Reference< beans::XPropertySetInfo > xRef = m_pPropSet->getPropertySetInfo(); return xRef; } -/*-- 11.12.98 12:42:50--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue) throw( beans::UnknownPropertyException, beans::PropertyVetoException, @@ -3327,9 +3062,9 @@ void SwXTextTable::setPropertyValue(const OUString& rPropertyName, && pBorder) { SwDoc* pDoc = pFmt->GetDoc(); - SwClientIter aIter( *pFmt ); + SwFrm* pFrm = SwIterator<SwFrm,SwFmt>::FirstElement( *pFmt ); //Tabellen ohne Layout (unsichtbare Header/Footer ) - if(0 != aIter.First( TYPE( SwFrm ))) + if( pFrm ) { lcl_FormatTable(pFmt); SwTable* pTable = SwTable::FindTable( pFmt ); @@ -3475,9 +3210,7 @@ void SwXTextTable::setPropertyValue(const OUString& rPropertyName, else throw uno::RuntimeException(); } -/*-- 11.12.98 12:42:51--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTextTable::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3524,9 +3257,9 @@ uno::Any SwXTextTable::getPropertyValue(const OUString& rPropertyName) throw( be case FN_UNO_TABLE_BORDER: { SwDoc* pDoc = pFmt->GetDoc(); - SwClientIter aIter( *pFmt ); + SwFrm* pFrm = SwIterator<SwFrm,SwFmt>::FirstElement( *pFmt ); //Tabellen ohne Layout (unsichtbare Header/Footer ) - if(0 != aIter.First( TYPE( SwFrm ))) + if( pFrm ) { lcl_FormatTable(pFmt); SwTable* pTable = SwTable::FindTable( pFmt ); @@ -3690,37 +3423,27 @@ uno::Any SwXTextTable::getPropertyValue(const OUString& rPropertyName) throw( be throw uno::RuntimeException(); return aRet; } -/*-- 11.12.98 12:42:51--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::addPropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:42:52--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::removePropertyChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:42:58--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::addVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:42:58--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::removeVetoableChangeListener(const OUString& /*rPropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*xListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 12:42:58--------------------------------------------------- - -----------------------------------------------------------------------*/ OUString SwXTextTable::getName(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3736,9 +3459,7 @@ OUString SwXTextTable::getName(void) throw( uno::RuntimeException ) sRet = m_sTableName; return sRet; } -/*-- 11.12.98 12:42:59--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTextTable::setName(const OUString& rName) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3796,9 +3517,7 @@ void SwXTextTable::setName(const OUString& rName) throw( uno::RuntimeException ) else m_sTableName = sNewTblName; } -/*-----------------11.02.98 09:58------------------- ---------------------------------------------------*/ sal_uInt16 SwXTextTable::getRowCount(void) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3814,9 +3533,7 @@ sal_uInt16 SwXTextTable::getRowCount(void) } return nRet; } -/*-----------------11.02.98 09:58------------------- ---------------------------------------------------*/ sal_uInt16 SwXTextTable::getColumnCount(void) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -3834,10 +3551,8 @@ sal_uInt16 SwXTextTable::getColumnCount(void) } return nRet; } -/*-- 11.12.98 12:42:59--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXTextTable::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTextTable::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { if(pOld && pOld->Which() == RES_REMOVE_UNO_OBJECT && (void*)GetRegisteredIn() == ((SwPtrMsgPoolItem *)pOld)->pObject ) @@ -3852,16 +3567,12 @@ void SwXTextTable::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) else aChartLstnrCntnr.ChartDataChanged(); } -/* -----------------25.10.99 15:12------------------- - --------------------------------------------------*/ OUString SAL_CALL SwXTextTable::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTextTable"); } -/* -----------------25.10.99 15:12------------------- - --------------------------------------------------*/ sal_Bool SwXTextTable::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) { String sServiceName(rServiceName); @@ -3870,9 +3581,7 @@ sal_Bool SwXTextTable::supportsService(const OUString& rServiceName) throw( uno: sServiceName.EqualsAscii("com.sun.star.text.TextContent") || sServiceName.EqualsAscii("com.sun.star.text.TextSortable")); } -/* -----------------25.10.99 15:12------------------- - --------------------------------------------------*/ uno::Sequence< OUString > SwXTextTable::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(4); @@ -3887,17 +3596,13 @@ uno::Sequence< OUString > SwXTextTable::getSupportedServiceNames(void) throw( un /****************************************************************** * ******************************************************************/ -/* -----------------------------10.03.00 18:02-------------------------------- - ---------------------------------------------------------------------------*/ const uno::Sequence< sal_Int8 > & SwXCellRange::getUnoTunnelId() { static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId(); return aSeq; } -/* -----------------------------10.03.00 18:04-------------------------------- - ---------------------------------------------------------------------------*/ sal_Int64 SAL_CALL SwXCellRange::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw(uno::RuntimeException) { @@ -3909,21 +3614,24 @@ sal_Int64 SAL_CALL SwXCellRange::getSomething( const uno::Sequence< sal_Int8 >& } return 0; } -/* -----------------28.04.98 10:29------------------- - * - * --------------------------------------------------*/ + TYPEINIT1(SwXCellRange, SwClient); -/* -----------------------------19.04.00 15:21-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXCellRange::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXCellRange"); } +<<<<<<< local +======= /* -----------------------------19.04.00 15:21-------------------------------- +>>>>>>> other +<<<<<<< local +BOOL SwXCellRange::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXCellRange::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "com.sun.star.text.CellRange" ) ) || @@ -3934,9 +3642,7 @@ sal_Bool SwXCellRange::supportsService(const OUString& rServiceName) throw( uno: rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "com.sun.star.style.ParagraphPropertiesAsian" ) ) || rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM ( "com.sun.star.style.ParagraphPropertiesComplex" ) ); } -/* -----------------------------19.04.00 15:21-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXCellRange::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(7); @@ -3951,9 +3657,7 @@ uno::Sequence< OUString > SwXCellRange::getSupportedServiceNames(void) throw( un return aRet; } -/*-- 11.12.98 14:27:33--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXCellRange::SwXCellRange(SwUnoCrsr* pCrsr, SwFrmFmt& rFrmFmt, SwRangeDescriptor& rDesc) : @@ -3968,17 +3672,13 @@ SwXCellRange::SwXCellRange(SwUnoCrsr* pCrsr, SwFrmFmt& rFrmFmt, { aRgDesc.Normalize(); } -/*-- 11.12.98 14:27:33--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXCellRange::~SwXCellRange() { vos::OGuard aGuard(Application::GetSolarMutex()); delete pTblCrsr; } -/*-- 11.12.98 14:27:34--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XCell > SwXCellRange::getCellByPosition(sal_Int32 nColumn, sal_Int32 nRow) throw( uno::RuntimeException, lang::IndexOutOfBoundsException ) { @@ -4000,9 +3700,7 @@ uno::Reference< table::XCell > SwXCellRange::getCellByPosition(sal_Int32 nColum throw lang::IndexOutOfBoundsException(); return aRet; } -/*-- 11.12.98 14:27:34--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XCellRange > SwXCellRange::getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom) throw( uno::RuntimeException, lang::IndexOutOfBoundsException ) @@ -4058,9 +3756,7 @@ uno::Reference< table::XCellRange > SwXCellRange::getCellRangeByPosition( return aRet; } -/*-- 11.12.98 14:27:34--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< table::XCellRange > SwXCellRange::getCellRangeByName(const OUString& rRange) throw( uno::RuntimeException ) { @@ -4078,17 +3774,13 @@ uno::Reference< table::XCellRange > SwXCellRange::getCellRangeByName(const OUSt return getCellRangeByPosition(aDesc.nLeft - aRgDesc.nLeft, aDesc.nTop - aRgDesc.nTop, aDesc.nRight - aRgDesc.nLeft, aDesc.nBottom - aRgDesc.nTop); } -/*-- 11.12.98 14:27:35--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Reference< beans::XPropertySetInfo > SwXCellRange::getPropertySetInfo(void) throw( uno::RuntimeException ) { static uno::Reference< beans::XPropertySetInfo > xRef = m_pPropSet->getPropertySetInfo(); return xRef; } -/*-- 11.12.98 14:27:35--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue) throw( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, @@ -4207,9 +3899,7 @@ void SwXCellRange::setPropertyValue(const OUString& rPropertyName, throw beans::UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) ); } } -/*-- 11.12.98 14:27:35--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXCellRange::getPropertyValue(const OUString& rPropertyName) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -4291,39 +3981,27 @@ uno::Any SwXCellRange::getPropertyValue(const OUString& rPropertyName) throw( be } return aRet; } -/*-- 11.12.98 14:27:35--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::addPropertyChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 14:27:35--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::removePropertyChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XPropertyChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 14:27:36--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::addVetoableChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*-- 11.12.98 14:27:36--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::removeVetoableChangeListener(const OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener > & /*aListener*/) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException ) { DBG_WARNING("not implemented"); } -/*----------------------------------------------------------------------- - - -----------------------------------------------------------------------*/ - void SwXCellRange::GetDataSequence( uno::Sequence< uno::Any > *pAnySeq, //-> first pointer != 0 is used uno::Sequence< OUString > *pTxtSeq, //-> as output sequence @@ -4468,9 +4146,6 @@ void SwXCellRange::GetDataSequence( pDblSeq->realloc( nDtaCnt ); } -/*-- 29.04.02 11:42:47--------------------------------------------------- - - -----------------------------------------------------------------------*/ uno::Sequence< uno::Sequence< uno::Any > > SAL_CALL SwXCellRange::getDataArray() throw (uno::RuntimeException) { @@ -4532,9 +4207,7 @@ uno::Sequence< uno::Sequence< uno::Any > > SAL_CALL SwXCellRange::getDataArray() } return aRowSeq; } -/*-- 29.04.02 11:42:47--------------------------------------------------- - -----------------------------------------------------------------------*/ void SAL_CALL SwXCellRange::setDataArray( const uno::Sequence< uno::Sequence< uno::Any > >& rArray ) throw (uno::RuntimeException) @@ -4600,9 +4273,7 @@ void SAL_CALL SwXCellRange::setDataArray( } } } -/*-- 11.12.98 14:27:36--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< uno::Sequence< double > > SwXCellRange::getData(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -4641,9 +4312,7 @@ uno::Sequence< uno::Sequence< double > > SwXCellRange::getData(void) throw( uno: } return aRowSeq; } -/*-- 11.12.98 14:27:37--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::setData(const uno::Sequence< uno::Sequence< double > >& rData) throw( uno::RuntimeException ) { @@ -4686,9 +4355,7 @@ void SwXCellRange::setData(const uno::Sequence< uno::Sequence< double > >& rData } } } -/*-- 11.12.98 14:27:37--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXCellRange::getRowDescriptions(void) throw( uno::RuntimeException ) { @@ -4728,9 +4395,7 @@ uno::Sequence< OUString > SwXCellRange::getRowDescriptions(void) throw uno::RuntimeException(); return aRet; } -/*-- 11.12.98 14:27:37--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::setRowDescriptions(const uno::Sequence< OUString >& rRowDesc) throw( uno::RuntimeException ) { @@ -4764,9 +4429,7 @@ void SwXCellRange::setRowDescriptions(const uno::Sequence< OUString >& rRowDesc) } } } -/*-- 11.12.98 14:27:37--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< OUString > SwXCellRange::getColumnDescriptions(void) throw( uno::RuntimeException ) { @@ -4806,9 +4469,7 @@ uno::Sequence< OUString > SwXCellRange::getColumnDescriptions(void) throw uno::RuntimeException(); return aRet; } -/*-- 11.12.98 14:27:37--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::setColumnDescriptions(const uno::Sequence< OUString >& ColumnDesc) throw( uno::RuntimeException ) { @@ -4839,52 +4500,40 @@ void SwXCellRange::setColumnDescriptions(const uno::Sequence< OUString >& Column } } } -/*-- 11.12.98 14:27:38--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::addChartDataChangeEventListener(const uno::Reference< chart::XChartDataChangeEventListener > & aListener) throw( uno::RuntimeException ) { if(!GetRegisteredIn()) throw uno::RuntimeException(); aChartLstnrCntnr.AddListener(aListener.get()); } -/*-- 11.12.98 14:27:38--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXCellRange::removeChartDataChangeEventListener(const uno::Reference< chart::XChartDataChangeEventListener > & aListener) throw( uno::RuntimeException ) { if(!GetRegisteredIn() || !aChartLstnrCntnr.RemoveListener(aListener.get())) throw uno::RuntimeException(); } -/* -----------------08.03.99 15:36------------------- - * - * --------------------------------------------------*/ + sal_Bool SwXCellRange::isNotANumber(double /*fNumber*/) throw( uno::RuntimeException ) { DBG_WARNING("not implemented"); return sal_False; } -/* -----------------08.03.99 15:36------------------- - * - * --------------------------------------------------*/ + double SwXCellRange::getNotANumber(void) throw( uno::RuntimeException ) { DBG_WARNING("not implemented"); return 0.; } -/*-- 11.12.98 14:27:38--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Sequence< beans::PropertyValue > SwXCellRange::createSortDescriptor(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); return SwUnoCursorHelper::CreateSortDescriptor(true); } -/*-- 11.12.98 14:27:39--------------------------------------------------- - -----------------------------------------------------------------------*/ void SAL_CALL SwXCellRange::sort(const uno::Sequence< beans::PropertyValue >& rDescriptor) throw( uno::RuntimeException ) { @@ -4900,23 +4549,17 @@ void SAL_CALL SwXCellRange::sort(const uno::Sequence< beans::PropertyValue >& rD pFmt->GetDoc()->SortTbl(pTableCrsr->GetBoxes(), aSortOpt); } } -/* -----------------27.04.98 16:54------------------- - * - * --------------------------------------------------*/ + sal_uInt16 SwXCellRange::getColumnCount(void) { return static_cast< sal_uInt16 >(aRgDesc.nRight - aRgDesc.nLeft + 1); } -/* -----------------27.04.98 16:54------------------- - * - * --------------------------------------------------*/ + sal_uInt16 SwXCellRange::getRowCount(void) { return static_cast< sal_uInt16 >(aRgDesc.nBottom - aRgDesc.nTop + 1); } -/* -----------------------------05.06.01 09:19-------------------------------- - ---------------------------------------------------------------------------*/ const SwUnoCrsr* SwXCellRange::GetTblCrsr() const { const SwUnoCrsr* pRet = 0; @@ -4926,10 +4569,8 @@ const SwUnoCrsr* SwXCellRange::GetTblCrsr() const return pRet; } -/*-- 11.12.98 14:27:39--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXCellRange::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXCellRange::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew ); if(!GetRegisteredIn() || !aCursorDepend.GetRegisteredIn()) @@ -4946,26 +4587,30 @@ void SwXCellRange::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) else aChartLstnrCntnr.ChartDataChanged(); } + /****************************************************************** * SwXTableRows ******************************************************************/ -/* -----------------------------19.04.00 15:22-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXTableRows::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTableRows"); } +<<<<<<< local +======= /* -----------------------------19.04.00 15:22-------------------------------- +>>>>>>> other +<<<<<<< local +BOOL SwXTableRows::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTableRows::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.TableRows") == rServiceName; } -/* -----------------------------19.04.00 15:22-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTableRows::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -4974,21 +4619,16 @@ uno::Sequence< OUString > SwXTableRows::getSupportedServiceNames(void) throw( un return aRet; } TYPEINIT1(SwXTableRows, SwClient); -/*-- 03.02.99 07:37:41--------------------------------------------------- - -----------------------------------------------------------------------*/ + SwXTableRows::SwXTableRows(SwFrmFmt& rFrmFmt) : SwClient(&rFrmFmt) { } -/*-- 03.02.99 07:37:41--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTableRows::~SwXTableRows() { } -/*-- 03.02.99 07:37:41--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXTableRows::getCount(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -5003,9 +4643,7 @@ sal_Int32 SwXTableRows::getCount(void) throw( uno::RuntimeException ) } return nRet; } -/*-- 03.02.99 07:37:41--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTableRows::getByIndex(sal_Int32 nIndex) throw( lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -5020,15 +4658,14 @@ uno::Any SwXTableRows::getByIndex(sal_Int32 nIndex) if(pTable->GetTabLines().Count() > nIndex) { SwTableLine* pLine = pTable->GetTabLines().GetObject((sal_uInt16)nIndex); - SwClientIter aIter( *pFrmFmt ); - SwXTextTableRow* pXRow = (SwXTextTableRow*)aIter. - First( TYPE( SwXTextTableRow )); + SwIterator<SwXTextTableRow,SwFmt> aIter( *pFrmFmt ); + SwXTextTableRow* pXRow = aIter.First(); while( pXRow ) { // gibt es eine passende Zelle bereits? if(pXRow->GetTblRow() == pLine) break; - pXRow = (SwXTextTableRow*)aIter.Next(); + pXRow = aIter.Next(); } //sonst anlegen if(!pXRow) @@ -5042,16 +4679,12 @@ uno::Any SwXTableRows::getByIndex(sal_Int32 nIndex) } return aRet; } -/*-- 03.02.99 07:37:42--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Type SAL_CALL SwXTableRows::getElementType(void) throw( uno::RuntimeException ) { return ::getCppuType((const uno::Reference<beans::XPropertySet>*)0); } -/*-- 03.02.99 07:37:42--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTableRows::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -5061,9 +4694,7 @@ sal_Bool SwXTableRows::hasElements(void) throw( uno::RuntimeException ) //es gibt keine Tabelle ohne Zeilen return sal_True; } -/*-- 03.02.99 07:37:42--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTableRows::insertByIndex(sal_Int32 nIndex, sal_Int32 nCount) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -5117,9 +4748,7 @@ void SwXTableRows::insertByIndex(sal_Int32 nIndex, sal_Int32 nCount) throw( uno: } } } -/*-- 03.02.99 07:37:43--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTableRows::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -5179,10 +4808,8 @@ void SwXTableRows::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) throw( uno: } } } -/*-- 03.02.99 07:37:43--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXTableRows::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTableRows::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } @@ -5190,23 +4817,26 @@ void SwXTableRows::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) /****************************************************************** * SwXTableColumns ******************************************************************/ -/* -----------------------------19.04.00 15:23-------------------------------- - ---------------------------------------------------------------------------*/ OUString SwXTableColumns::getImplementationName(void) throw( uno::RuntimeException ) { return C2U("SwXTableColumns"); } +<<<<<<< local +======= /* -----------------------------19.04.00 15:23-------------------------------- +>>>>>>> other +<<<<<<< local +BOOL SwXTableColumns::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +======= ---------------------------------------------------------------------------*/ sal_Bool SwXTableColumns::supportsService(const OUString& rServiceName) throw( uno::RuntimeException ) +>>>>>>> other { return C2U("com.sun.star.text.TableColumns") == rServiceName; } -/* -----------------------------19.04.00 15:23-------------------------------- - ---------------------------------------------------------------------------*/ uno::Sequence< OUString > SwXTableColumns::getSupportedServiceNames(void) throw( uno::RuntimeException ) { uno::Sequence< OUString > aRet(1); @@ -5215,21 +4845,16 @@ uno::Sequence< OUString > SwXTableColumns::getSupportedServiceNames(void) throw( return aRet; } TYPEINIT1(SwXTableColumns, SwClient); -/*-- 03.02.99 07:37:41--------------------------------------------------- - -----------------------------------------------------------------------*/ + SwXTableColumns::SwXTableColumns(SwFrmFmt& rFrmFmt) : SwClient(&rFrmFmt) { } -/*-- 03.02.99 07:37:41--------------------------------------------------- - -----------------------------------------------------------------------*/ SwXTableColumns::~SwXTableColumns() { } -/*-- 03.02.99 07:37:41--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Int32 SwXTableColumns::getCount(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -5249,9 +4874,7 @@ sal_Int32 SwXTableColumns::getCount(void) throw( uno::RuntimeException ) } return nRet; } -/*-- 03.02.99 07:37:41--------------------------------------------------- - -----------------------------------------------------------------------*/ uno::Any SwXTableColumns::getByIndex(sal_Int32 nIndex) throw( lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) { @@ -5276,17 +4899,12 @@ uno::Any SwXTableColumns::getByIndex(sal_Int32 nIndex) } return uno::Any(&xRet, ::getCppuType((const uno::Reference<uno::XInterface>*)0)); } -/*-- 03.02.99 07:37:42--------------------------------------------------- - - -----------------------------------------------------------------------*/ uno::Type SAL_CALL SwXTableColumns::getElementType(void) throw( uno::RuntimeException ) { return ::getCppuType((uno::Reference<uno::XInterface>*)0); } -/*-- 03.02.99 07:37:42--------------------------------------------------- - -----------------------------------------------------------------------*/ sal_Bool SwXTableColumns::hasElements(void) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -5295,9 +4913,7 @@ sal_Bool SwXTableColumns::hasElements(void) throw( uno::RuntimeException ) throw uno::RuntimeException(); return sal_True; } -/*-- 03.02.99 07:37:42--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTableColumns::insertByIndex(sal_Int32 nIndex, sal_Int32 nCount) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -5350,9 +4966,7 @@ void SwXTableColumns::insertByIndex(sal_Int32 nIndex, sal_Int32 nCount) throw( u } } } -/*-- 03.02.99 07:37:43--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwXTableColumns::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) throw( uno::RuntimeException ) { vos::OGuard aGuard(Application::GetSolarMutex()); @@ -5412,16 +5026,12 @@ void SwXTableColumns::removeByIndex(sal_Int32 nIndex, sal_Int32 nCount) throw( u } } } -/*-- 03.02.99 07:37:43--------------------------------------------------- - -----------------------------------------------------------------------*/ -void SwXTableColumns::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXTableColumns::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } -/* -----------------------------22.09.00 11:11-------------------------------- - ---------------------------------------------------------------------------*/ void SwChartEventListenerContainer::ChartDataChanged() { if(pListenerArr) diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx index 875d0e23235d..237d9bf25bf0 100644 --- a/sw/source/core/unocore/unotext.cxx +++ b/sw/source/core/unocore/unotext.cxx @@ -2681,16 +2681,16 @@ public: } return *pFmt; } - +protected: // SwClient - virtual void Modify(SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify(const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; /*-- 11.12.98 10:14:51--------------------------------------------------- -----------------------------------------------------------------------*/ -void SwXHeadFootText::Impl::Modify(SfxPoolItem *pOld, SfxPoolItem *pNew) +void SwXHeadFootText::Impl::Modify( const SfxPoolItem *pOld, const SfxPoolItem *pNew) { ClientModify(this, pOld, pNew); } diff --git a/sw/source/core/unocore/unotextmarkup.cxx b/sw/source/core/unocore/unotextmarkup.cxx index 3181d7aadb66..531634adf950 100644 --- a/sw/source/core/unocore/unotextmarkup.cxx +++ b/sw/source/core/unocore/unotextmarkup.cxx @@ -48,7 +48,9 @@ using namespace ::com::sun::star; SwXTextMarkup::SwXTextMarkup( SwTxtNode& rTxtNode, const ModelToViewHelper::ConversionMap* pMap ) : mpTxtNode( &rTxtNode ), mpConversionMap( pMap ) { - mpTxtNode->Add(this); + // FME 2007-07-16 #i79641# SwXTextMarkup is allowed to be removed ... + SetIsAllowedToBeRemovedInModifyCall(true); + mpTxtNode->Add(this); } SwXTextMarkup::~SwXTextMarkup() @@ -421,12 +423,12 @@ throw (lang::IllegalArgumentException, uno::RuntimeException) } -void SwXTextMarkup::Modify( SfxPoolItem* /*pOld*/, SfxPoolItem* /*pNew*/ ) +void SwXTextMarkup::Modify( const SfxPoolItem* /*pOld*/, const SfxPoolItem* /*pNew*/ ) { // FME 2007-07-16 #i79641# In my opinion this is perfectly legal, // therefore I remove the assertion in SwModify::_Remove() - if ( pRegisteredIn ) - pRegisteredIn->Remove( this ); + if ( GetRegisteredIn() ) + GetRegisteredInNonConst()->Remove( this ); // <-- vos::OGuard aGuard(Application::GetSolarMutex()); diff --git a/sw/source/core/view/printdata.cxx b/sw/source/core/view/printdata.cxx index 4be694cc3baa..6edea5a37970 100644 --- a/sw/source/core/view/printdata.cxx +++ b/sw/source/core/view/printdata.cxx @@ -110,13 +110,13 @@ void SwRenderData::DeletePostItData() } } -bool SwRenderData::NeedNewViewOptionAdjust( const SwWrtShell& rCompare ) const +bool SwRenderData::NeedNewViewOptionAdjust( const ViewShell& rCompare ) const { return m_pViewOptionAdjust ? ! m_pViewOptionAdjust->checkShell( rCompare ) : true; } -void SwRenderData::ViewOptionAdjustStart( SwWrtShell &rSh, const SwViewOption &rViewOptions ) +void SwRenderData::ViewOptionAdjustStart( ViewShell &rSh, const SwViewOption &rViewOptions ) { if (m_pViewOptionAdjust) { diff --git a/sw/source/core/view/vdraw.cxx b/sw/source/core/view/vdraw.cxx index c9581d26251f..ef99855c0472 100644 --- a/sw/source/core/view/vdraw.cxx +++ b/sw/source/core/view/vdraw.cxx @@ -272,7 +272,11 @@ sal_Bool SwViewImp::IsDragPossible( const Point &rPoint ) SdrObject *pO = rMrkList.GetMark(rMrkList.GetMarkCount()-1)->GetMarkedSdrObj(); SwRect aRect; +<<<<<<< local + if( pO && ::CalcClipRect( pO, aRect, FALSE ) ) +======= if( ::CalcClipRect( pO, aRect, sal_False ) ) +>>>>>>> other { SwRect aTmp; ::CalcClipRect( pO, aTmp, sal_True ); diff --git a/sw/source/core/view/viewimp.cxx b/sw/source/core/view/viewimp.cxx index b384d0763ef4..200691a81546 100644 --- a/sw/source/core/view/viewimp.cxx +++ b/sw/source/core/view/viewimp.cxx @@ -69,7 +69,7 @@ void SwViewImp::Init( const SwViewOption *pNewOpt ) { ASSERT( pDrawView, "SwViewImp::Init without DrawView" ); //Jetzt die PageView erzeugen wenn sie noch nicht existiert. - SwRootFrm *pRoot = pSh->getIDocumentLayoutAccess()->GetRootFrm(); + SwRootFrm *pRoot = pSh->GetLayout(); //swmod 071108//swmod 071225 if ( !pSdrPageView ) { IDocumentDrawModelAccess* pIDDMA = pSh->getIDocumentDrawModelAccess(); @@ -383,7 +383,7 @@ Color SwViewImp::GetRetoucheColor() const const ViewShell &rSh = *GetShell(); if ( rSh.GetWin() ) { - if ( rSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + if ( rSh.GetViewOptions()->getBrowseMode() && COL_TRANSPARENT != rSh.GetViewOptions()->GetRetoucheColor().GetColor() ) aRet = rSh.GetViewOptions()->GetRetoucheColor(); else if(rSh.GetViewOptions()->IsPagePreview() && @@ -413,10 +413,10 @@ void SwViewImp::UpdateAccessible() // We require a layout and an XModel to be accessible. IDocumentLayoutAccess* pIDLA = GetShell()->getIDocumentLayoutAccess(); Window *pWin = GetShell()->GetWin(); - ASSERT( pIDLA->GetRootFrm(), "no layout, no access" ); + ASSERT( GetShell()->GetLayout(), "no layout, no access" ); //swmod 071108//swmod 071225 ASSERT( pWin, "no window, no access" ); - if( IsAccessible() && pIDLA->GetRootFrm() && pWin ) + if( IsAccessible() && pIDLA->GetCurrentViewShell() && pWin ) //swmod 071108//swmod 071225 GetAccessibleMap().GetDocumentView(); } diff --git a/sw/source/core/view/viewpg.cxx b/sw/source/core/view/viewpg.cxx index e2a8ec46567f..2b17190f2cdb 100644 --- a/sw/source/core/view/viewpg.cxx +++ b/sw/source/core/view/viewpg.cxx @@ -86,7 +86,6 @@ void ViewShell::AdjustOptionsForPagePreview(SwPrintData const& rPrintOptions) return; } - // print brochure // OD 05.05.2003 #i14016# - consider empty pages on calculation of the scaling // for a page to be printed. diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx index 115ced0d37c6..e24ff471ad78 100644 --- a/sw/source/core/view/viewsh.cxx +++ b/sw/source/core/view/viewsh.cxx @@ -268,7 +268,7 @@ void ViewShell::ImplEndAction( const sal_Bool bIdleEnd ) if ( pRegion ) { - SwRootFrm* pLayout = GetLayout(); + SwRootFrm* pCurrentLayout = GetLayout(); Imp()->pRegion = NULL; @@ -333,7 +333,7 @@ void ViewShell::ImplEndAction( const sal_Bool bIdleEnd ) pOut = pVout; if ( bPaintsFromSystem ) PaintDesktop( aRect ); - pLayout->Paint( aRect ); + pCurrentLayout->Paint( aRect ); pOld->DrawOutDev( aRect.Pos(), aRect.SSize(), aRect.Pos(), aRect.SSize(), *pVout ); pOut = pOld; @@ -354,7 +354,7 @@ void ViewShell::ImplEndAction( const sal_Bool bIdleEnd ) if ( bPaintsFromSystem ) PaintDesktop( aRect ); - pLayout->Paint( aRect ); + pCurrentLayout->Paint( aRect ); // #i75172# end DrawingLayer paint DLPostPaint2(true); @@ -528,13 +528,14 @@ sal_Bool ViewShell::AddPaintRect( const SwRect & rRect ) ViewShell *pSh = this; do { + if( pSh->Imp() ) + { if ( pSh->IsPreView() && pSh->GetWin() ) -// pSh->GetWin()->Invalidate(); ::RepaintPagePreview( pSh, rRect ); else - bRet |= pSh->Imp()->AddPaintRect( rRect ); + bRet |= pSh->Imp()->AddPaintRect( rRect );//swmod 080111 + } pSh = (ViewShell*)pSh->GetNext(); - } while ( pSh != this ); return bRet; } @@ -558,7 +559,6 @@ void ViewShell::InvalidateWindows( const SwRect &rRect ) if ( pSh->GetWin() ) { if ( pSh->IsPreView() ) -// pSh->GetWin()->Invalidate(); ::RepaintPagePreview( pSh, rRect ); else if ( pSh->VisArea().IsOver( rRect ) ) pSh->GetWin()->Invalidate( rRect.SVRect() ); @@ -586,7 +586,7 @@ void ViewShell::MakeVisible( const SwRect &rRect ) { if( pWin ) { - const SwFrm* pRoot = GetDoc()->GetRootFrm(); + const SwFrm* pRoot = GetLayout(); int nLoopCnt = 3; long nOldH; do{ @@ -594,7 +594,7 @@ void ViewShell::MakeVisible( const SwRect &rRect ) StartAction(); ScrollMDI( this, rRect, USHRT_MAX, USHRT_MAX ); EndAction(); - } while( nOldH != pRoot->Frm().Height() && nLoopCnt-- ); + } while( nOldH != pRoot->Frm().Height() && nLoopCnt-- ); //swmod 071108//swmod 071225 } #ifdef DBG_UTIL else @@ -1176,13 +1176,13 @@ void ViewShell::VisPortChgd( const SwRect &rRect) const long nXDiff = aPrevArea.Left() - VisArea().Left(); const long nYDiff = aPrevArea.Top() - VisArea().Top(); - if( !nXDiff && !getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + if( !nXDiff && !GetViewOptions()->getBrowseMode() && (!Imp()->HasDrawView() || !Imp()->GetDrawView()->IsGridVisible() ) ) { //Falls moeglich die Wiese nicht mit Scrollen. //Also linke und rechte Kante des Scrollbereiches auf die //Seiten begrenzen. - const SwPageFrm *pPage = (SwPageFrm*)GetDoc()->GetRootFrm()->Lower(); + const SwPageFrm *pPage = (SwPageFrm*)GetLayout()->Lower(); //swmod 071108//swmod 071225 if ( pPage->Frm().Top() > pOldPage->Frm().Top() ) pPage = (SwPageFrm*)pOldPage; SwRect aBoth( VisArea() ); @@ -1651,16 +1651,26 @@ void ViewShell::PaintDesktop( const SwRect &rRect ) //Kann z.B. waehrend des Idle'ns zwischenzeitlich auftreten. //Die Rechtecke neben den Seiten muessen wir leider auf jedenfall Painten, //den diese werden spaeter beim VisPortChgd ausgespart. +<<<<<<< local + BOOL bBorderOnly = FALSE; + const SwRootFrm *pRoot = GetLayout();//swmod 080305 +======= sal_Bool bBorderOnly = sal_False; const SwRootFrm *pRoot = GetDoc()->GetRootFrm(); +>>>>>>> other if ( rRect.Top() > pRoot->Frm().Bottom() ) { const SwFrm *pPg = pRoot->Lower(); while ( pPg && pPg->GetNext() ) pPg = pPg->GetNext(); if ( !pPg || !pPg->Frm().IsOver( VisArea() ) ) +<<<<<<< local + bBorderOnly = TRUE; + } //swmod 071108//swmod 071225 +======= bBorderOnly = sal_True; } +>>>>>>> other const bool bBookMode = GetViewOptions()->IsViewLayoutBookMode(); @@ -1674,7 +1684,7 @@ void ViewShell::PaintDesktop( const SwRect &rRect ) if ( bBorderOnly ) { - const SwFrm *pPage = pRoot->Lower(); + const SwFrm *pPage =pRoot->Lower(); //swmod 071108//swmod 071225 SwRect aLeft( rRect ), aRight( rRect ); while ( pPage ) { @@ -2084,8 +2094,7 @@ sal_Int32 ViewShell::GetBrowseWidth() const void ViewShell::CheckBrowseView( sal_Bool bBrowseChgd ) { - if ( !bBrowseChgd && - !getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if ( !bBrowseChgd && !GetViewOptions()->getBrowseMode() ) return; SET_CURR_SHELL( this ); @@ -2153,14 +2162,15 @@ void ViewShell::CheckBrowseView( sal_Bool bBrowseChgd ) SwRootFrm *ViewShell::GetLayout() const { - return GetDoc()->GetRootFrm(); + return pLayout.get(); //swmod 080116 } +/***********************************************************************/ OutputDevice& ViewShell::GetRefDev() const { OutputDevice* pTmpOut = 0; if ( GetWin() && - getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + GetViewOptions()->getBrowseMode() && !GetViewOptions()->IsPrtFormat() ) pTmpOut = GetWin(); else if ( 0 != mpTmpRef ) @@ -2218,7 +2228,10 @@ void ViewShell::ApplyViewOptions( const SwViewOption &rOpt ) ImplApplyViewOptions( rOpt ); - //Einige Aenderungen muessen synchronisiert werden. + // swmod 080115 + // With one layout per view it is not longer necessary + // to sync these "layout related" view options + // But as long as we have to disable "multiple layout" pSh = (ViewShell*)this->GetNext(); while ( pSh != this ) { @@ -2234,6 +2247,7 @@ void ViewShell::ApplyViewOptions( const SwViewOption &rOpt ) pSh->ImplApplyViewOptions( aOpt ); pSh = (ViewShell*)pSh->GetNext(); } + // End of disabled multiple window pSh = this; do @@ -2272,7 +2286,7 @@ void ViewShell::ImplApplyViewOptions( const SwViewOption &rOpt ) if( pFldType && pFldType->GetDepends() ) { SwMsgPoolItem aHnt( RES_HIDDENPARA_PRINT ); - pFldType->Modify( &aHnt, 0); + pFldType->ModifyNotification( &aHnt, 0); } bReformat = sal_True; } @@ -2298,13 +2312,29 @@ void ViewShell::ImplApplyViewOptions( const SwViewOption &rOpt ) // Wenn kein ReferenzDevice (Drucker) zum Formatieren benutzt wird, // sondern der Bildschirm, muss bei Zoomfaktoraenderung neu formatiert // werden. +<<<<<<< local + if( pOpt->getBrowseMode() ) + bReformat = TRUE; +======= if( getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) bReformat = sal_True; +>>>>>>> other } +<<<<<<< local + bool bBrowseModeChanged = false; + if( pOpt->getBrowseMode() != rOpt.getBrowseMode() ) + { + bBrowseModeChanged = true; + bReformat = TRUE; + } + else if( pOpt->getBrowseMode() && pOpt->IsPrtFormat() != rOpt.IsPrtFormat() ) + bReformat = TRUE; +======= if ( getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && pOpt->IsPrtFormat() != rOpt.IsPrtFormat() ) bReformat = sal_True; +>>>>>>> other if ( HasDrawView() || rOpt.IsGridVisible() ) { @@ -2347,6 +2377,15 @@ void ViewShell::ImplApplyViewOptions( const SwViewOption &rOpt ) pDoc->set(IDocumentSettingAccess::HTML_MODE, 0 != ::GetHtmlMode(pDoc->GetDocShell())); + if( bBrowseModeChanged ) + { + // --> FME 2005-03-16 #i44963# Good occasion to check if page sizes in + // page descriptions are still set to (LONG_MAX, LONG_MAX) (html import) + pDoc->CheckDefaultPageFmt(); + // <-- + CheckBrowseView( TRUE ); + } + pMyWin->Invalidate(); if ( bReformat ) { @@ -2437,9 +2476,14 @@ void ViewShell::SetPDFExportOption(sal_Bool bSet) { if( bSet != pOpt->IsPDFExport() ) { +<<<<<<< local + if( bSet && pOpt->getBrowseMode() ) + pOpt->SetPrtFormat( TRUE ); +======= if( bSet && getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) pOpt->SetPrtFormat( sal_True ); +>>>>>>> other pOpt->SetPDFExport(bSet); } } @@ -2509,13 +2553,11 @@ uno::Reference< ::com::sun::star::accessibility::XAccessible > ViewShell::Create { uno::Reference< ::com::sun::star::accessibility::XAccessible > xAcc; - SwDoc *pMyDoc = GetDoc(); - // We require a layout and an XModel to be accessible. - ASSERT( pMyDoc->GetRootFrm(), "no layout, no access" ); + ASSERT( pLayout, "no layout, no access" ); ASSERT( GetWin(), "no window, no access" ); - if( pMyDoc->GetRootFrm() && GetWin() ) + if( pDoc->GetCurrentViewShell() && GetWin() ) //swmod 071108 xAcc = Imp()->GetAccessibleMap().GetDocumentView(); return xAcc; @@ -2528,18 +2570,18 @@ ViewShell::CreateAccessiblePreview() "Can't create accessible preview for non-preview ViewShell" ); // We require a layout and an XModel to be accessible. - ASSERT( pDoc->GetRootFrm(), "no layout, no access" ); + ASSERT( pLayout, "no layout, no access" ); ASSERT( GetWin(), "no window, no access" ); // OD 15.01.2003 #103492# - add condition <IsPreView()> - if ( IsPreView() && pDoc->GetRootFrm() && GetWin() ) + if ( IsPreView() && GetLayout()&& GetWin() ) { // OD 14.01.2003 #103492# - adjustment for new method signature return Imp()->GetAccessibleMap().GetDocumentPreview( PagePreviewLayout()->maPrevwPages, GetWin()->GetMapMode().GetScaleX(), - pDoc->GetRootFrm()->GetPageByPageNum( PagePreviewLayout()->mnSelectedPageNum ), - PagePreviewLayout()->maWinSize ); + GetLayout()->GetPageByPageNum( PagePreviewLayout()->mnSelectedPageNum ), + PagePreviewLayout()->maWinSize ); //swmod 080305 } return NULL; } @@ -2635,6 +2677,30 @@ void ViewShell::SetCareWin( Window* pNew ) pCareWindow = pNew; } +sal_uInt16 ViewShell::GetPageCount() const +{ + return GetLayout() ? GetLayout()->GetPageNum() : 1; +} + +const Size ViewShell::GetPageSize( sal_uInt16 nPageNum, bool bSkipEmptyPages ) const +{ + Size aSize; + const SwRootFrm* pTmpRoot = GetLayout(); + if( pTmpRoot && nPageNum ) + { + const SwPageFrm* pPage = static_cast<const SwPageFrm*> + (pTmpRoot->Lower()); + + while( --nPageNum && pPage->GetNext() ) + pPage = static_cast<const SwPageFrm*>( pPage->GetNext() ); + + if( !bSkipEmptyPages && pPage->IsEmptyPage() && pPage->GetNext() ) + pPage = static_cast<const SwPageFrm*>( pPage->GetNext() ); + + aSize = pPage->Frm().SSize(); + } + return aSize; +} // --> FME 2004-06-15 #i12836# enhanced pdf export sal_Int32 ViewShell::GetPageNumAndSetOffsetForPDF( OutputDevice& rOut, const SwRect& rRect ) const diff --git a/sw/source/core/view/vnew.cxx b/sw/source/core/view/vnew.cxx index bc454c4b0e7b..031da20042d2 100644 --- a/sw/source/core/view/vnew.cxx +++ b/sw/source/core/view/vnew.cxx @@ -32,7 +32,10 @@ #include <sfx2/printer.hxx> #include <rtl/logfile.hxx> #include <doc.hxx> +<<<<<<< local +======= #include <IDocumentUndoRedo.hxx> +>>>>>>> other #include <docsh.hxx> #include <viewsh.hxx> #include <rootfrm.hxx> @@ -47,14 +50,11 @@ #include <ndgrf.hxx> #include <ndindex.hxx> #include <accessibilityoptions.hxx> - +#include <switerator.hxx> /************************************************************************* |* |* ViewShell::Init() -|* -|* Letzte Aenderung MA 14. Jun. 96 -|* |*************************************************************************/ void ViewShell::Init( const SwViewOption *pNewOpt ) @@ -110,8 +110,7 @@ void ViewShell::Init( const SwViewOption *pNewOpt ) // --> FME 2005-01-21 #i41075# // Only setup the printer if we need one: - const IDocumentSettingAccess* pIDSA = getIDocumentSettingAccess(); - const bool bBrowseMode = pIDSA->get(IDocumentSettingAccess::BROWSE_MODE); + const bool bBrowseMode = pOpt->getBrowseMode(); if( pPDFOut ) InitPrt( pPDFOut ); // <-- @@ -134,12 +133,20 @@ void ViewShell::Init( const SwViewOption *pNewOpt ) GetWin()->SetLineColor(); } - //Layout erzeugen wenn es noch nicht vorhanden ist. - SwRootFrm* pRoot = GetDoc()->GetRootFrm(); - if( !pRoot ) - GetDoc()->SetRootFrm( pRoot = new SwRootFrm( pDoc->GetDfltFrmFmt(), this ) ); - - SizeChgNotify(); + // Create a new layout, if there is no one available + if( !pLayout ) + { + // Here's the code which disables the usage of "multiple" layouts at the moment + // If the problems with controls and groups objects are solved, + // this code can be removed... + ViewShell *pCurrShell = GetDoc()->GetCurrentViewShell(); + if( pCurrShell ) + pLayout = pCurrShell->pLayout; + // end of "disable multiple layouts" + if( !pLayout ) + pLayout = SwRootFrmPtr(new SwRootFrm( pDoc->GetDfltFrmFmt(), this ));//swmod081016 + } + SizeChgNotify(); //swmod 071108 // --> #i31958# // XForms mode: initialize XForms mode, based on design mode (draw view) @@ -156,9 +163,6 @@ void ViewShell::Init( const SwViewOption *pNewOpt ) /************************************************************************* |* |* ViewShell::ViewShell() CTor fuer die erste Shell. -|* -|* Letzte Aenderung MA 29. Aug. 95 -|* |*************************************************************************/ ViewShell::ViewShell( SwDoc& rDocument, Window *pWindow, @@ -239,9 +243,6 @@ ViewShell::ViewShell( SwDoc& rDocument, Window *pWindow, /************************************************************************* |* |* ViewShell::ViewShell() CTor fuer weitere Shells auf ein Dokument. -|* -|* Letzte Aenderung MA 29. Aug. 95 -|* |*************************************************************************/ ViewShell::ViewShell( ViewShell& rShell, Window *pWindow, @@ -276,9 +277,8 @@ ViewShell::ViewShell( ViewShell& rShell, Window *pWindow, bPaintInProgress = bViewLocked = bInEndAction = bFrameView = bEndActionByVirDev = sal_False; bPreView = 0 !=( VSHELLFLAG_ISPREVIEW & nFlags ); - // OD 12.12.2002 #103492# - if ( bPreView ) - pImp->InitPagePreviewLayout(); + if( nFlags & VSHELLFLAG_SHARELAYOUT ) //swmod 080125 + pLayout = rShell.pLayout;//swmod 080125 SET_CURR_SHELL( this ); @@ -289,6 +289,10 @@ ViewShell::ViewShell( ViewShell& rShell, Window *pWindow, Init( rShell.GetViewOptions() ); //verstellt ggf. das Outdev (InitPrt()) pOut = pOutput; + // OD 12.12.2002 #103492# + if ( bPreView ) + pImp->InitPagePreviewLayout(); + ((SwHiddenTxtFieldType*)pDoc->GetSysFldType( RES_HIDDENTXTFLD ))-> SetHiddenFlag( !pOpt->IsShowHiddenField() ); @@ -313,9 +317,6 @@ ViewShell::ViewShell( ViewShell& rShell, Window *pWindow, |* |* ViewShell::~ViewShell() |* -|* Ersterstellung MA ?? -|* Letzte Aenderung MA 10. May. 95 -|* ******************************************************************************/ ViewShell::~ViewShell() @@ -341,9 +342,8 @@ ViewShell::~ViewShell() { if( pGNd->IsAnimated() ) { - SwClientIter aIter( *pGNd ); - for( SwFrm* pFrm = (SwFrm*)aIter.First( TYPE(SwFrm) ); - pFrm; pFrm = (SwFrm*)aIter.Next() ) + SwIterator<SwFrm,SwGrfNode> aIter( *pGNd ); + for( SwFrm* pFrm = aIter.First(); pFrm; pFrm = aIter.Next() ) { ASSERT( pFrm->IsNoTxtFrm(), "GraphicNode with Text?" ); ((SwNoTxtFrm*)pFrm)->StopAnimation( pOut ); @@ -364,8 +364,8 @@ ViewShell::~ViewShell() if( !pDoc->release() ) delete pDoc, pDoc = 0; else - pDoc->GetRootFrm()->ResetNewLayout(); - } + GetLayout()->ResetNewLayout(); + }//swmod 080317 delete pOpt; @@ -380,7 +380,12 @@ ViewShell::~ViewShell() } if ( pDoc ) + { GetLayout()->DeRegisterShell( this ); + if(pDoc->GetCurrentViewShell()==this) + pDoc->SetCurrentViewShell( this->GetNext()!=this ? + (ViewShell*)this->GetNext() : NULL ); + } delete mpTmpRef; delete pAccOptions; @@ -388,7 +393,7 @@ ViewShell::~ViewShell() sal_Bool ViewShell::HasDrawView() const { - return Imp()->HasDrawView(); + return Imp() ? Imp()->HasDrawView() : 0; } void ViewShell::MakeDrawView() diff --git a/sw/source/core/view/vprint.cxx b/sw/source/core/view/vprint.cxx index 74cbdf946800..f487e680f3f9 100644 --- a/sw/source/core/view/vprint.cxx +++ b/sw/source/core/view/vprint.cxx @@ -341,14 +341,23 @@ void ViewShell::CalcPagesForPrint( sal_uInt16 nMax ) { SET_CURR_SHELL( this ); +<<<<<<< local + SwRootFrm* pMyLayout = GetLayout(); +======= SwRootFrm* pLayout = GetLayout(); // sal_uLong nStatMax = pLayout->GetPageNum(); +>>>>>>> other - const SwFrm *pPage = pLayout->Lower(); - SwLayAction aAction( pLayout, Imp() ); + const SwFrm *pPage = pMyLayout->Lower(); + SwLayAction aAction( pMyLayout, Imp() ); +<<<<<<< local + pMyLayout->StartAllAction(); + for ( USHORT i = 1; pPage && i <= nMax; pPage = pPage->GetNext(), ++i ) +======= pLayout->StartAllAction(); for ( sal_uInt16 i = 1; pPage && i <= nMax; pPage = pPage->GetNext(), ++i ) +>>>>>>> other { pPage->Calc(); SwRect aOldVis( VisArea() ); @@ -365,7 +374,8 @@ void ViewShell::CalcPagesForPrint( sal_uInt16 nMax ) Imp()->SetFirstVisPageInvalid(); // SwPaintQueue::Repaint(); } - pLayout->EndAllAction(); + + pMyLayout->EndAllAction(); } /******************************************************************************/ @@ -411,7 +421,7 @@ SwDoc * ViewShell::FillPrtDoc( SwDoc *pPrtDoc, const SfxPrinter* pPrt) SwShellTableCrsr* pShellTblCrsr = pFESh->GetTableCrsr(); const SwCntntNode* pCntntNode = pShellTblCrsr->GetNode()->GetCntntNode(); - const SwCntntFrm *pCntntFrm = pCntntNode ? pCntntNode->GetFrm( 0, pShellTblCrsr->Start() ) : 0; + const SwCntntFrm *pCntntFrm = pCntntNode ? pCntntNode->getLayoutFrm( GetLayout(), 0, pShellTblCrsr->Start() ) : 0; if( pCntntFrm ) { SwRect aCharRect; @@ -610,10 +620,10 @@ void ViewShell::PrtOle2( SwDoc *pDoc, const SwViewOption *pOpt, const SwPrintDat //eine, dann legen wir uns eine neue Sicht an, oder das Doc hat noch //keine, dann erzeugen wir die erste Sicht. ViewShell *pSh; - if( pDoc->GetRootFrm() && pDoc->GetRootFrm()->GetCurrShell() ) - pSh = new ViewShell( *pDoc->GetRootFrm()->GetCurrShell(), 0, pOleOut ); - else - pSh = new ViewShell( *pDoc, 0, pOpt, pOleOut ); + if( pDoc->GetCurrentViewShell() ) + pSh = new ViewShell( *pDoc->GetCurrentViewShell(), 0, pOleOut,VSHELLFLAG_SHARELAYOUT );//swmod 080129 + else //swmod 071108//swmod 071225 + pSh = new ViewShell( *pDoc, 0, pOpt, pOleOut);//swmod 080129 { SET_CURR_SHELL( pSh ); @@ -623,11 +633,16 @@ void ViewShell::PrtOle2( SwDoc *pDoc, const SwViewOption *pOpt, const SwPrintDat SwRect aSwRect( rRect ); pSh->aVisArea = aSwRect; - if ( pSh->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + if ( pSh->GetViewOptions()->getBrowseMode() && pSh->GetNext() == pSh ) { +<<<<<<< local + pSh->CheckBrowseView( FALSE ); + pSh->GetLayout()->Lower()->InvalidateSize(); +======= pSh->CheckBrowseView( sal_False ); pDoc->GetRootFrm()->Lower()->InvalidateSize(); +>>>>>>> other } // --> FME 2005-02-10 #119474# diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx index 63925788ee1a..53e9e75a8986 100644 --- a/sw/source/filter/html/css1atr.cxx +++ b/sw/source/filter/html/css1atr.cxx @@ -57,6 +57,7 @@ #include <editeng/spltitem.hxx> #include <editeng/orphitem.hxx> #include <svx/xoutbmp.hxx> +#include <svx/svdobj.hxx> #include <editeng/langitem.hxx> #include <editeng/frmdiritem.hxx> #include <svtools/htmlout.hxx> @@ -86,8 +87,6 @@ #include <txtftn.hxx> #include <fmtftn.hxx> // FOOTNOTES -#include <dcontact.hxx> - #include "doc.hxx" #include "swerror.h" #include "charatr.hxx" diff --git a/sw/source/filter/html/htmlforw.cxx b/sw/source/filter/html/htmlforw.cxx index d44a543dfa5a..ab37f60c1df9 100644 --- a/sw/source/filter/html/htmlforw.cxx +++ b/sw/source/filter/html/htmlforw.cxx @@ -67,12 +67,11 @@ #include "pam.hxx" #include "doc.hxx" #include "ndtxt.hxx" -#include "dcontact.hxx" #include "flypos.hxx" #include "wrthtml.hxx" #include "htmlfly.hxx" #include "htmlform.hxx" - +#include "frmfmt.hxx" using namespace ::com::sun::star; using ::rtl::OUString; diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx index 28d87439c73f..89be7dbfaee0 100644 --- a/sw/source/filter/html/htmltab.cxx +++ b/sw/source/filter/html/htmltab.cxx @@ -5128,7 +5128,7 @@ void _TblSaveStruct::MakeTable( sal_uInt16 nWidth, SwPosition& rPos, SwDoc *pDoc SwTableNode *pTblNd = pTCntxt->GetTableNode(); ASSERT( pTblNd, "Wo ist der Tabellen-Node" ); - if( pDoc->GetRootFrm() && pTblNd ) + if( pDoc->GetCurrentViewShell() && pTblNd ) //swmod 071108//swmod 071225 { // Existiert schon ein Layout, dann muss an dieser Tabelle die // BoxFrames neu erzeugt werden. diff --git a/sw/source/filter/html/htmlvsh.hxx b/sw/source/filter/html/htmlvsh.hxx index 18e0129fd0a3..67afddf699ee 100644 --- a/sw/source/filter/html/htmlvsh.hxx +++ b/sw/source/filter/html/htmlvsh.hxx @@ -34,7 +34,8 @@ class ViewShell; class SwHTMLViewShellClient : public SwClient { - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ); +protected: + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ); public: @@ -45,7 +46,7 @@ public: void Register( ViewShell *pVsh ); void DeRegister(); - /*inline*/ ViewShell *GetViewShell(); // im swhtml.cxx + ViewShell *GetViewShell(); }; diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx index b9c8b63d60f7..072f107597da 100644 --- a/sw/source/filter/html/swhtml.cxx +++ b/sw/source/filter/html/swhtml.cxx @@ -926,15 +926,15 @@ if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_False ).nNode.GetIndex() ) #endif } -void SwHTMLParser::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ) +void SwHTMLParser::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ) { switch( pOld ? pOld->Which() : pNew ? pNew->Which() : 0 ) { case RES_OBJECTDYING: - if( ((SwPtrMsgPoolItem *)pOld)->pObject == pRegisteredIn ) + if( ((SwPtrMsgPoolItem *)pOld)->pObject == GetRegisteredIn() ) { // dann uns selbst beenden - pRegisteredIn->Remove( this ); + GetRegisteredInNonConst()->Remove( this ); ReleaseRef(); // ansonsten sind wir fertig! } break; diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx index c7f897018dc7..d89c7eb3e258 100644 --- a/sw/source/filter/html/swhtml.hxx +++ b/sw/source/filter/html/swhtml.hxx @@ -924,7 +924,7 @@ protected: virtual ~SwHTMLParser(); // wird das Dok geloescht, ist auch der Parser zu loeschen - virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew ); virtual void AddMetaUserDefined( ::rtl::OUString const & i_rMetaName ); diff --git a/sw/source/filter/inc/fltshell.hxx b/sw/source/filter/inc/fltshell.hxx index 2c5adee0381c..800ca13c398a 100644 --- a/sw/source/filter/inc/fltshell.hxx +++ b/sw/source/filter/inc/fltshell.hxx @@ -166,7 +166,7 @@ class SwFltAnchorClient : public SwClient public: SwFltAnchorClient(SwFltAnchor * pFltAnchor); - virtual void Modify (SfxPoolItem *pOld, SfxPoolItem *pNew); + virtual void Modify (const SfxPoolItem *pOld, const SfxPoolItem *pNew); }; diff --git a/sw/source/filter/rtf/rtfnum.cxx b/sw/source/filter/rtf/rtfnum.cxx index 32a33b5c2abd..54c6ef7a6df2 100644 --- a/sw/source/filter/rtf/rtfnum.cxx +++ b/sw/source/filter/rtf/rtfnum.cxx @@ -720,7 +720,7 @@ void SwRTFParser::RemoveUnusedNumRule( SwNumRule* pRule ) SwCharFmt* pCFmt = rNFmt.GetCharFmt(); if( pCFmt ) { - pCFmt->Remove( &rNFmt ); + rNFmt.ForgetCharFmt(); if( !pCFmt->GetDepends() ) pDoc->DelCharFmt( pCFmt ); } diff --git a/sw/source/filter/rtf/rtftbl.cxx b/sw/source/filter/rtf/rtftbl.cxx index 8bc859c3d320..e275c64a45e6 100644 --- a/sw/source/filter/rtf/rtftbl.cxx +++ b/sw/source/filter/rtf/rtftbl.cxx @@ -783,9 +783,9 @@ void SwRTFParser::ReadTable( int nToken ) { SwTableBox* pBox = pNewLine->GetTabBoxes()[0]; pBoxFmt = (SwTableBoxFmt*)pBox->GetFrmFmt(); - pBoxFmt->Remove( pBox ); + pBox->ForgetFrmFmt(); delete pBoxFmt; - aBoxFmts[0]->Add( pBox ); + pBox->RegisterToFormat( *aBoxFmts[0] ); SwTxtNode* pTNd = pDoc->GetNodes()[ pBox->GetSttIdx()+1 ] ->GetTxtNode(); ASSERT( pTNd, "wo ist der Textnode dieser Box?" ); diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx index e52161de98f2..1d038c2d6671 100644 --- a/sw/source/filter/rtf/swparrtf.cxx +++ b/sw/source/filter/rtf/swparrtf.cxx @@ -1061,11 +1061,11 @@ InsertedTableClient::InsertedTableClient(SwTableNode & rNode) SwTableNode * InsertedTableClient::GetTableNode() { - return dynamic_cast<SwTableNode *> (pRegisteredIn); + return dynamic_cast<SwTableNode *> (GetRegisteredInNonConst()); } InsertedTablesManager::InsertedTablesManager(const SwDoc &rDoc) - : mbHasRoot(rDoc.GetRootFrm()) + : mbHasRoot(rDoc.GetCurrentLayout()) //swmod 080218 { } diff --git a/sw/source/filter/ww1/fltshell.cxx b/sw/source/filter/ww1/fltshell.cxx index c6e093c11935..43be96662e85 100644 --- a/sw/source/filter/ww1/fltshell.cxx +++ b/sw/source/filter/ww1/fltshell.cxx @@ -430,7 +430,7 @@ void SwFltControlStack::SetAttrInDoc(const SwPosition& rTmpPos, SwFltStackEntry* pFmt->SetFmtAttr(aAnchor); // Damit die Frames bei Einfuegen in existierendes Doc // erzeugt werden (erst nach Setzen des Ankers!): - if(pDoc->GetRootFrm() + if(pDoc->GetCurrentViewShell() //swmod 071108//swmod 071225 && (FLY_AT_PARA == pFmt->GetAnchor().GetAnchorId())) { pFmt->MakeFrms(); @@ -777,11 +777,11 @@ SwFltAnchorClient::SwFltAnchorClient(SwFltAnchor * pFltAnchor) { } -void SwFltAnchorClient::Modify(SfxPoolItem *, SfxPoolItem * pNew) +void SwFltAnchorClient::Modify(const SfxPoolItem *, const SfxPoolItem * pNew) { if (pNew->Which() == RES_FMT_CHG) { - SwFmtChg * pFmtChg = dynamic_cast<SwFmtChg *> (pNew); + const SwFmtChg * pFmtChg = dynamic_cast<const SwFmtChg *> (pNew); if (pFmtChg != NULL) { @@ -1605,7 +1605,7 @@ void SwFltOutDoc::EndTable() rStack.SetAttr( *pPaM->GetPoint(), 0, sal_False ); rEndStack.SetAttr( *pPaM->GetPoint(), 0, sal_False ); - if (GetDoc().GetRootFrm()){ + if (GetDoc().GetCurrentViewShell()){ //swmod 071108//swmod 071225 SwTableNode* pTableNode = GetDoc().IsIdxInTbl( pPaM->GetPoint()->nNode); pTableNode->DelFrms(); diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx index bae95df4f735..12c0360a8149 100644 --- a/sw/source/filter/ww8/wrtw8esh.cxx +++ b/sw/source/filter/ww8/wrtw8esh.cxx @@ -2079,7 +2079,7 @@ bool WinwordAnchoring::ConvertPosition( SwFmtHoriOrient& _iorHoriOri, const SwContact* pContact = _rFrmFmt.FindContactObj(); if ( pContact ) { - std::vector<SwAnchoredObject*> aAnchoredObjs; + std::list<SwAnchoredObject*> aAnchoredObjs; pContact->GetAnchoredObjs( aAnchoredObjs ); if ( !aAnchoredObjs.empty() ) { diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx index 7f5e0eaae54e..80be5b14b222 100644 --- a/sw/source/filter/ww8/wrtw8nds.cxx +++ b/sw/source/filter/ww8/wrtw8nds.cxx @@ -2025,8 +2025,8 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode ) if (pTextNodeInfoInner->isFirstInTable()) { const SwTable * pTable = pTextNodeInfoInner->getTable(); - const SwTableFmt * pTabFmt = - dynamic_cast<const SwTableFmt *>(pTable->GetRegisteredIn()); + + const SwTableFmt * pTabFmt = pTable->GetTableFmt(); if (pTabFmt != NULL) { if (pTabFmt->GetBreak().GetBreak() == SVX_BREAK_PAGE_BEFORE) @@ -2240,7 +2240,7 @@ void MSWordExportBase::OutputTextNode( const SwTxtNode& rNode ) // this has to be overruled. const SwFmtPageDesc& rPageDescAtParaStyle = ItemGet<SwFmtPageDesc>( rNode, RES_PAGEDESC ); - if( rPageDescAtParaStyle.GetRegisteredIn() ) + if( rPageDescAtParaStyle.KnowsPageDesc() ) pTmpSet->ClearItem( RES_BREAK ); } } diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx index c40ce759b3f2..48797b895134 100644 --- a/sw/source/filter/ww8/wrtww8.cxx +++ b/sw/source/filter/ww8/wrtww8.cxx @@ -2117,7 +2117,7 @@ void WW8AttributeOutput::TableOrientation( ww8::WW8TableNodeInfoInner::Pointer_t void WW8AttributeOutput::TableSpacing(ww8::WW8TableNodeInfoInner::Pointer_t pTableTextNodeInfoInner) { const SwTable * pTable = pTableTextNodeInfoInner->getTable(); - const SwTableFmt * pTableFmt = dynamic_cast<const SwTableFmt *>(pTable->GetRegisteredIn()); + const SwTableFmt * pTableFmt = pTable->GetTableFmt(); if (pTableFmt != NULL) { diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 4e865bc0ca83..ae92c5ad747b 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -326,21 +326,19 @@ void MSWordExportBase::OutputItemSet( const SfxItemSet& rSet, bool bPapFmt, bool pISet = 0; // fuer Doppel-Attribute } } - +#include "switerator.hxx" void MSWordExportBase::GatherChapterFields() { //If the header/footer contains a chapter field - SwClientIter aIter(*pDoc->GetSysFldType(RES_CHAPTERFLD)); - const SwClient *pField = aIter.First(TYPE(SwFmtFld)); - while (pField) + SwFieldType* pType = pDoc->GetSysFldType( RES_CHAPTERFLD ); + SwIterator<SwFmtFld,SwFieldType> aFmtFlds( *pType ); + for ( SwFmtFld* pFld = aFmtFlds.First(); pFld; pFld = aFmtFlds.Next() ) { - const SwFmtFld* pFld = (const SwFmtFld*)(pField); if (const SwTxtFld *pTxtFld = pFld->GetTxtFld()) { const SwTxtNode &rTxtNode = pTxtFld->GetTxtNode(); maChapterFieldLocs.push_back(rTxtNode.GetIndex()); } - pField = aIter.Next(); } } @@ -442,7 +440,7 @@ void MSWordExportBase::OutputSectionBreaks( const SfxItemSet *pSet, const SwNode if ( pSet && pSet->Count() ) { if ( SFX_ITEM_SET == pSet->GetItemState( RES_PAGEDESC, false, &pItem ) - && ( (SwFmtPageDesc*)pItem )->GetRegisteredIn() ) + && ( (SwFmtPageDesc*)pItem )->KnowsPageDesc() ) { bBreakSet = true; bNewPageDesc = true; @@ -525,7 +523,7 @@ void MSWordExportBase::OutputSectionBreaks( const SfxItemSet *pSet, const SwNode // but a pagedesc item is an implicit page break before... const SwFmtPageDesc &rPageDesc = ItemGet<SwFmtPageDesc>( *pNd, RES_PAGEDESC ); - if ( rPageDesc.GetRegisteredIn() ) + if ( rPageDesc.KnowsPageDesc() ) bHackInBreak = true; } } @@ -863,10 +861,10 @@ void MSWordExportBase::OutputFormat( const SwFmt& rFmt, bool bPapFmt, bool bChpF bool MSWordExportBase::HasRefToObject( sal_uInt16 nTyp, const String* pName, sal_uInt16 nSeqNo ) { const SwTxtNode* pNd; - SwClientIter aIter( *pDoc->GetSysFldType( RES_GETREFFLD ) ); - for ( SwFmtFld* pFld = static_cast< SwFmtFld* >( aIter.First( TYPE( SwFmtFld ) ) ); - pFld; - pFld = static_cast< SwFmtFld* >( aIter.Next() ) ) + + SwFieldType* pType = pDoc->GetSysFldType( RES_GETREFFLD ); + SwIterator<SwFmtFld, SwFieldType> aFmtFlds( *pType ); + for ( SwFmtFld* pFld = aFmtFlds.First(); pFld; pFld = aFmtFlds.Next() ) { if ( pFld->GetTxtFld() && nTyp == pFld->GetFld()->GetSubType() && 0 != ( pNd = pFld->GetTxtFld()->GetpTxtNode() ) && @@ -3624,7 +3622,7 @@ void AttributeOutputBase::FormatPageDescription( const SwFmtPageDesc& rPageDesc if ( GetExport().bStyDef && GetExport().pOutFmtNode && GetExport().pOutFmtNode->ISA( SwTxtFmtColl ) ) { const SwTxtFmtColl* pC = (SwTxtFmtColl*)GetExport().pOutFmtNode; - if ( (SFX_ITEM_SET != pC->GetItemState( RES_BREAK, false ) ) && rPageDesc.GetRegisteredIn() ) + if ( (SFX_ITEM_SET != pC->GetItemState( RES_BREAK, false ) ) && rPageDesc.KnowsPageDesc() ) FormatBreak( SvxFmtBreakItem( SVX_BREAK_PAGE_BEFORE, RES_BREAK ) ); } } diff --git a/sw/source/filter/ww8/ww8graf2.cxx b/sw/source/filter/ww8/ww8graf2.cxx index 6303e9b8c6e6..6b19df72bf3c 100644 --- a/sw/source/filter/ww8/ww8graf2.cxx +++ b/sw/source/filter/ww8/ww8graf2.cxx @@ -42,7 +42,6 @@ #include <sfx2/app.hxx> #include <sfx2/docfile.hxx> #include <sfx2/fcontnr.hxx> -#include <dcontact.hxx> #include <grfatr.hxx> // class SwCropGrf #include <fmtflcnt.hxx> #include <fmtanchr.hxx> @@ -409,7 +408,7 @@ SwFlyFrmFmt* SwWW8ImplReader::MakeGrafNotInCntnt(const WW8PicDesc& rPD, &aFlySet, &rGrfSet, NULL); // Damit die Frames bei Einfuegen in existierendes Doc erzeugt werden: - if (rDoc.GetRootFrm() && + if (rDoc.GetCurrentViewShell() && //swmod 071108//swmod 071225 (FLY_AT_PARA == pFlyFmt->GetAnchor().GetAnchorId())) { pFlyFmt->MakeFrms(); diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx index 4e74a64722ab..ca3fc2f6c31b 100644 --- a/sw/source/filter/ww8/ww8par5.cxx +++ b/sw/source/filter/ww8/ww8par5.cxx @@ -2672,7 +2672,7 @@ void lcl_toxMatchACSwitch( SwWW8ImplReader& /*rReader*/, if( STRING_NOTFOUND != n ) { SwTOXType* pType = (SwTOXType*)rDoc.GetTOXType( TOX_ILLUSTRATIONS, 0); - pType->Add( &rBase ); + rBase.RegisterToTOXType( *pType ); rBase.SetCaptionDisplay( eCaptionType ); // Read Sequence Name and store in TOXBase String sSeqName( rParam.GetResult() ); diff --git a/sw/source/filter/xml/wrtxml.cxx b/sw/source/filter/xml/wrtxml.cxx index 1f64db9fdae8..11f4d082f747 100644 --- a/sw/source/filter/xml/wrtxml.cxx +++ b/sw/source/filter/xml/wrtxml.cxx @@ -469,7 +469,7 @@ pGraphicHelper = SvXMLGraphicHelper::Create( xStg, } } - if( pDoc->GetRootFrm() && pDoc->GetDocStat().nPage > 1 && + if( pDoc->GetCurrentViewShell() && pDoc->GetDocStat().nPage > 1 && //swmod 071108//swmod 071225 !(bOrganizerMode || bBlock || bErr) ) { // DBG_ASSERT( !pDoc->GetDocStat().bModified, diff --git a/sw/source/filter/xml/xmlexp.cxx b/sw/source/filter/xml/xmlexp.cxx index 5ba2fd3e68ab..bed17185ad80 100644 --- a/sw/source/filter/xml/xmlexp.cxx +++ b/sw/source/filter/xml/xmlexp.cxx @@ -51,6 +51,7 @@ #include <doc.hxx> #include <swmodule.hxx> #include <docsh.hxx> +#include <viewsh.hxx> #include <docstat.hxx> #include <swerror.h> #include <unotext.hxx> @@ -583,7 +584,8 @@ void SwXMLExport::SetBodyAttributes() if( pText ) { SwDoc *pDoc = pText->GetDoc(); - if( pDoc && pDoc->GetPageCount() > 1 ) + if( pDoc && pDoc->GetCurrentViewShell() && + pDoc->GetCurrentViewShell()->GetPageCount() > 1 ) { sal_Bool bValue = sal_True; rtl::OUStringBuffer sBuffer; diff --git a/sw/source/filter/xml/xmlfmt.cxx b/sw/source/filter/xml/xmlfmt.cxx index 050f498c10c5..33f339fe60a3 100644 --- a/sw/source/filter/xml/xmlfmt.cxx +++ b/sw/source/filter/xml/xmlfmt.cxx @@ -700,7 +700,7 @@ void SwXMLItemSetStyleContext_Impl::ConnectPageDesc() if( pFmtPageDesc ) { - pPageDesc->Add( pFmtPageDesc ); + pFmtPageDesc->RegisterToPageDesc( *pPageDesc ); pItemSet->Put( *pFmtPageDesc ); delete pFmtPageDesc; } @@ -1087,7 +1087,7 @@ void SwXMLImport::UpdateTxtCollConditions( SwDoc *pDoc ) if( bSendModify ) { SwCondCollCondChg aMsg( pColl ); - pColl->Modify( &aMsg, &aMsg ); + pColl->ModifyNotification( &aMsg, &aMsg ); } } } diff --git a/sw/source/filter/xml/xmltbli.cxx b/sw/source/filter/xml/xmltbli.cxx index 397ac1bda534..f8a51c267307 100644 --- a/sw/source/filter/xml/xmltbli.cxx +++ b/sw/source/filter/xml/xmltbli.cxx @@ -2849,7 +2849,7 @@ void SwXMLTableContext::MakeTable() } // ??? this is always false: root frame is only created in ViewShell::Init - if( pTableNode->GetDoc()->GetRootFrm() ) + if( pTableNode->GetDoc()->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { pTableNode->DelFrms(); SwNodeIndex aIdx( *pTableNode->EndOfSectionNode(), 1 ); diff --git a/sw/source/filter/xml/xmltexti.cxx b/sw/source/filter/xml/xmltexti.cxx index d5f298b5292c..6bdd02ef8c06 100644 --- a/sw/source/filter/xml/xmltexti.cxx +++ b/sw/source/filter/xml/xmltexti.cxx @@ -63,6 +63,7 @@ #include <ndole.hxx> #include <docsh.hxx> #include <sfx2/docfile.hxx> +#include <switerator.hxx> // for locking SolarMutex: svapp + mutex #include <vcl/svapp.hxx> @@ -320,9 +321,8 @@ uno::Reference< XPropertySet > SwXMLTextImportHelper::createAndInsertOLEObject( { // check whether an object with this name already exists in the document String aName; - SwClientIter aIter( *(SwModify*)pDoc->GetDfltGrfFmtColl() ); - for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) ); - pNd; pNd = (SwCntntNode*)aIter.Next() ) + SwIterator<SwCntntNode,SwFmtColl> aIter( *pDoc->GetDfltGrfFmtColl() ); + for( SwCntntNode* pNd = aIter.First(); pNd; pNd = aIter.Next() ) { SwOLENode* pExistingOLENd = pNd->GetOLENode(); if( pExistingOLENd ) diff --git a/sw/source/ui/app/docsh.cxx b/sw/source/ui/app/docsh.cxx index f7bb6f4703cb..e46b0f3b106a 100644 --- a/sw/source/ui/app/docsh.cxx +++ b/sw/source/ui/app/docsh.cxx @@ -93,11 +93,8 @@ #include <swcli.hxx> #include <txtftn.hxx> #include <ftnidx.hxx> - -// --> FME 2004-08-05 #i20883# Digital Signatures and Encryption #include <fldbas.hxx> #include <docary.hxx> -// <-- #include <swerror.h> // Fehlermeldungen #include <helpid.h> #include <cmdid.h> @@ -123,7 +120,7 @@ #include <unomid.h> #include <sfx2/Metadatable.hxx> - +#include <switerator.hxx> using rtl::OUString; using namespace ::com::sun::star; @@ -912,6 +909,8 @@ Rectangle SwDocShell::GetVisArea( sal_uInt16 nAspect ) const const SwRect aPageRect = pNd->FindPageFrmRect( sal_False, 0, sal_False ); return aPageRect.SVRect(); +<<<<<<< local +======= // Why does this have to be that complicated? I replaced this by the // call of FindPageFrmRect(): @@ -938,6 +937,7 @@ Rectangle SwDocShell::GetVisArea( sal_uInt16 nAspect ) const const Point aPt( DOCUMENTBORDER, DOCUMENTBORDER ); const Rectangle aRect( aPt, aSz ); return aRect;*/ +>>>>>>> other } return SfxObjectShell::GetVisArea( nAspect ); } @@ -982,17 +982,16 @@ sal_uInt16 SwDocShell::GetHiddenInformationState( sal_uInt16 nStates ) if ( GetWrtShell() ) { SwFieldType* pType = GetWrtShell()->GetFldType( RES_POSTITFLD, aEmptyStr ); - SwClientIter aIter( *pType ); - SwClient* pFirst = aIter.GoStart(); + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + SwFmtFld* pFirst = aIter.First(); while( pFirst ) { - if( static_cast<SwFmtFld*>(pFirst)->GetTxtFld() && - static_cast<SwFmtFld*>(pFirst)->IsFldInDoc() ) + if( pFirst->GetTxtFld() && pFirst->IsFldInDoc() ) { nState |= HIDDENINFORMATION_NOTES; break; } - pFirst = ++aIter; + pFirst = aIter.Next(); } } } @@ -1016,26 +1015,21 @@ void SwDocShell::GetState(SfxItemSet& rSet) { switch (nWhich) { - // MT: MakroChosser immer enablen, weil Neu moeglich - // case SID_BASICCHOOSER: - // { - // StarBASIC* pBasic = GetBasic(); - // StarBASIC* pAppBasic = SFX_APP()->GetBasic(); - // if ( !(pBasic->GetModules()->Count() || - // pAppBasic->GetModules()->Count()) ) - // rSet.DisableItem(nWhich); - // } - // break; case SID_PRINTPREVIEW: { +<<<<<<< local + BOOL bDisable = IsInPlaceActive(); + // Disable "multiple layout" +======= sal_Bool bDisable = IsInPlaceActive(); +>>>>>>> other if ( !bDisable ) { SfxViewFrame *pTmpFrm = SfxViewFrame::GetFirst(this); while (pTmpFrm) // Preview suchen { if ( PTR_CAST(SwView, pTmpFrm->GetViewShell()) && - ((SwView*)pTmpFrm->GetViewShell())->GetWrtShell().getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE)) + ((SwView*)pTmpFrm->GetViewShell())->GetWrtShell().GetViewOptions()->getBrowseMode() ) { bDisable = sal_True; break; @@ -1043,6 +1037,7 @@ void SwDocShell::GetState(SfxItemSet& rSet) pTmpFrm = pTmpFrm->GetNext(*pTmpFrm, this); } } + // End of disabled "multiple layout" if ( bDisable ) rSet.DisableItem( SID_PRINTPREVIEW ); else @@ -1244,9 +1239,8 @@ SwFEShell* SwDocShell::GetFEShell() void SwDocShell::RemoveOLEObjects() { - SwClientIter aIter( *(SwModify*)pDoc->GetDfltGrfFmtColl() ); - for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) ); - pNd; pNd = (SwCntntNode*)aIter.Next() ) + SwIterator<SwCntntNode,SwFmtColl> aIter( *pDoc->GetDfltGrfFmtColl() ); + for( SwCntntNode* pNd = aIter.First(); pNd; pNd = aIter.Next() ) { SwOLENode* pOLENd = pNd->GetOLENode(); if( pOLENd && ( pOLENd->IsOLEObjectDeleted() || @@ -1273,9 +1267,8 @@ void SwDocShell::CalcLayoutForOLEObjects() if( !pWrtShell ) return; - SwClientIter aIter( *(SwModify*)pDoc->GetDfltGrfFmtColl() ); - for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) ); - pNd; pNd = (SwCntntNode*)aIter.Next() ) + SwIterator<SwCntntNode,SwFmtColl> aIter( *pDoc->GetDfltGrfFmtColl() ); + for( SwCntntNode* pNd = aIter.First(); pNd; pNd = aIter.Next() ) { SwOLENode* pOLENd = pNd->GetOLENode(); if( pOLENd && pOLENd->IsOLESizeInvalid() ) diff --git a/sw/source/ui/app/docsh2.cxx b/sw/source/ui/app/docsh2.cxx index 8963a837389c..0d44efe7a250 100644 --- a/sw/source/ui/app/docsh2.cxx +++ b/sw/source/ui/app/docsh2.cxx @@ -158,6 +158,44 @@ SfxDocumentInfoDialog* SwDocShell::CreateDocumentInfoDialog( return pDlg; } +// Disable "multiple layout" + +void SwDocShell::ToggleBrowserMode(BOOL bSet, SwView* _pView ) +{ + GetDoc()->set(IDocumentSettingAccess::BROWSE_MODE, bSet ); + UpdateFontList(); + SwView* pTempView = _pView ? _pView : (SwView*)GetView(); + if( pTempView ) + { + pTempView->GetViewFrame()->GetBindings().Invalidate(FN_SHADOWCURSOR); + if( !GetDoc()->getPrinter( false ) ) + pTempView->SetPrinter( GetDoc()->getPrinter( false ), SFX_PRINTER_PRINTER | SFX_PRINTER_JOBSETUP ); + GetDoc()->CheckDefaultPageFmt(); + SfxViewFrame *pTmpFrm = SfxViewFrame::GetFirst(this, FALSE); + do { + if( pTmpFrm != pTempView->GetViewFrame() ) + { + pTmpFrm->DoClose(); + pTmpFrm = SfxViewFrame::GetFirst(this, FALSE); + } + else + pTmpFrm = pTmpFrm->GetNext(*pTmpFrm, this, FALSE); + + } while ( pTmpFrm ); + const SwViewOption& rViewOptions = *pTempView->GetWrtShell().GetViewOptions(); + pTempView->GetWrtShell().CheckBrowseView( TRUE ); + pTempView->CheckVisArea(); + if( bSet ) + { + const SvxZoomType eType = (SvxZoomType)rViewOptions.GetZoomType(); + if ( SVX_ZOOM_PERCENT != eType) + ((SwView*)GetView())->SetZoom( eType ); + } + pTempView->InvalidateBorder(); + pTempView->SetNewWindowAllowed(!bSet); + } +} +// End of disabled "multiple layout" /// update text fields on document properties changes void SwDocShell::DoFlushDocInfo() @@ -684,7 +722,7 @@ void SwDocShell::Execute(SfxRequest& rReq) pDocSh = (SwDocShell*)SfxObjectShell::GetNext( *pDocSh, &aType ) ) { SwDoc* pTmp = pDocSh->GetDoc(); - if ( pTmp->GetRootFrm() ) + if ( pTmp->GetCurrentViewShell() ) //swmod 071108//swmod 071225 pTmp->InvalidateAutoCompleteFlag(); } } @@ -721,11 +759,7 @@ void SwDocShell::Execute(SfxRequest& rReq) sal_uInt16 nSlotId = 0; if( bSet && !bFound ) // Keine gefunden, daher neue Preview anlegen - { - //Keine neue anlegen fuer BrowseView! - if( !GetDoc()->get(IDocumentSettingAccess::BROWSE_MODE) ) nSlotId = SID_VIEWSHELL1; - } else if( bFound && !bSet ) nSlotId = bOnly ? SID_VIEWSHELL0 : SID_VIEWSHELL1; @@ -977,6 +1011,7 @@ void SwDocShell::Execute(SfxRequest& rReq) //pSavePrinter darf nicht wieder geloescht werden } pViewFrm->GetBindings().SetState(SfxBoolItem(SID_SOURCEVIEW, nSlot == SID_VIEWSHELL2)); + pViewFrm->GetBindings().Invalidate( SID_NEWWINDOW ); pViewFrm->GetBindings().Invalidate( SID_BROWSER_MODE ); pViewFrm->GetBindings().Invalidate( FN_PRINT_LAYOUT ); } @@ -1143,6 +1178,8 @@ void SwDocShell::Execute(SfxRequest& rReq) SW_MOD()->CheckSpellChanges(sal_False, sal_True, sal_True, sal_False ); break; +<<<<<<< local +======= case SID_BROWSER_MODE: case FN_PRINT_LAYOUT: //Fuer Web, genau umgekehrt zum BrowserMode { @@ -1197,6 +1234,7 @@ void SwDocShell::Execute(SfxRequest& rReq) } break; +>>>>>>> other case SID_MAIL_PREPAREEXPORT: { //pWrtShell is not set in page preview @@ -1209,7 +1247,8 @@ void SwDocShell::Execute(SfxRequest& rReq) pWrtShell->EndAllAction(); } break; - case SID_MAIL_EXPORT_FINISHED: + + case SID_MAIL_EXPORT_FINISHED: { if(pWrtShell) pWrtShell->StartAllAction(); @@ -1781,6 +1820,10 @@ void SwDocShell::ReloadFromHtml( const String& rStreamName, SwSrcView* pSrcView pDoc->ResetModified(); } +<<<<<<< local +ULONG SwDocShell::LoadStylesFromFile( const String& rURL, + SwgReaderOption& rOpt, BOOL bUnoCall ) +======= /* -----------------------------14.12.99 16:52-------------------------------- ---------------------------------------------------------------------------*/ @@ -1854,6 +1897,7 @@ void SwDocShell::ToggleBrowserMode(sal_Bool bSet, SwView* _pView ) sal_uLong SwDocShell::LoadStylesFromFile( const String& rURL, SwgReaderOption& rOpt, sal_Bool bUnoCall ) +>>>>>>> other { sal_uLong nErr = 0; diff --git a/sw/source/ui/app/docstyle.cxx b/sw/source/ui/app/docstyle.cxx index 71a52cb582f5..a73a01011123 100644 --- a/sw/source/ui/app/docstyle.cxx +++ b/sw/source/ui/app/docstyle.cxx @@ -1187,14 +1187,14 @@ void SwDocStyleSheet::SetItemSet( const SfxItemSet& rSet, if( rStyle.Len() && 0 != ( pFindFmt = lcl_FindParaFmt( rDoc, rStyle, 0, sal_True ))) { - pFindFmt->Add( &aCond ); + aCond.RegisterToFormat( *pFindFmt ); ((SwConditionTxtFmtColl*)pColl)->InsertCondition( aCond ); } } // Document auf die neue Bedingungen updaten SwCondCollCondChg aMsg( pColl ); - pColl->Modify( &aMsg, &aMsg ); + pColl->ModifyNotification( &aMsg, &aMsg ); } else if( pCondItem && !pColl->GetDepends() ) { diff --git a/sw/source/ui/app/swmodul1.cxx b/sw/source/ui/app/swmodul1.cxx index f5e79b9da72f..f5ab0952b77e 100644 --- a/sw/source/ui/app/swmodul1.cxx +++ b/sw/source/ui/app/swmodul1.cxx @@ -99,7 +99,7 @@ void lcl_SetUIPrefs(const SwViewOption* pPref, SwView* pView, ViewShell* pSh ) } if(bHScrollChanged) { - pView->ShowHScrollbar( pNewPref->IsViewHScrollBar() || pSh->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE)); + pView->ShowHScrollbar( pNewPref->IsViewHScrollBar() || pNewPref->getBrowseMode() ); } //if only the position of the vertical ruler has been changed initiate an update if(bVAlignChanged && !bHScrollChanged && !bVScrollChanged) @@ -653,7 +653,7 @@ void SwModule::CheckSpellChanges( sal_Bool bOnlineSpelling, pDocSh = (SwDocShell*)SfxObjectShell::GetNext( *pDocSh, &aType ) ) { SwDoc* pTmp = pDocSh->GetDoc(); - if ( pTmp->GetRootFrm() ) + if ( pTmp->GetCurrentViewShell() ) //swmod 071108//swmod 071225 { pTmp->SpellItAgainSam( bInvalid, bOnlyWrong, bSmartTags ); ViewShell* pViewShell = 0; diff --git a/sw/source/ui/config/viewopt.cxx b/sw/source/ui/config/viewopt.cxx index 7a2304f1a4f7..82df13bedcbf 100644 --- a/sw/source/ui/config/viewopt.cxx +++ b/sw/source/ui/config/viewopt.cxx @@ -109,7 +109,8 @@ sal_Bool SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const && nPagePrevRow == rOpt.GetPagePrevRow() && nPagePrevCol == rOpt.GetPagePrevCol() && aRetoucheColor == rOpt.GetRetoucheColor() - && bFormView == rOpt.IsFormView() + && mbFormView == rOpt.IsFormView() + && mbBrowseMode == rOpt.getBrowseMode() && mbViewLayoutBookMode == rOpt.mbViewLayoutBookMode && bShowPlaceHolderFields == rOpt.bShowPlaceHolderFields && bIdle == rOpt.bIdle @@ -215,10 +216,20 @@ SwViewOption::SwViewOption() : bIsPagePreview(sal_False), bSelectionInReadonly(sal_False), // --> FME 2004-06-29 #114856# Formular view +<<<<<<< local + mbFormView(FALSE), +======= bFormView(sal_False), +>>>>>>> other // <-- +<<<<<<< local + mbBookview(FALSE), + mbBrowseMode(FALSE), + mbViewLayoutBookMode(FALSE), +======= bBookview(sal_False), mbViewLayoutBookMode(sal_False), +>>>>>>> other bShowPlaceHolderFields( sal_True ), nZoom( 100 ), @@ -258,7 +269,7 @@ SwViewOption::SwViewOption(const SwViewOption& rVOpt) bReadonly = sal_False; bSelectionInReadonly = sal_False; // --> FME 2004-06-29 #114856# Formular view - bFormView = rVOpt.bFormView; + mbFormView = rVOpt.mbFormView; // <-- nZoom = rVOpt.nZoom ; aSnapSize = rVOpt.aSnapSize ; @@ -277,7 +288,8 @@ SwViewOption::SwViewOption(const SwViewOption& rVOpt) sSymbolFont = rVOpt.sSymbolFont; nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode; bStarOneSetting = rVOpt.bStarOneSetting; - bBookview = rVOpt.bBookview; + mbBookview = rVOpt.mbBookview; + mbBrowseMode = rVOpt.mbBrowseMode; mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode; bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields; bIdle = rVOpt.bIdle; @@ -299,7 +311,7 @@ SwViewOption::SwViewOption(const SwViewOption& rVOpt) SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt ) { // --> DVO FME 2004-06-29 #114856# Formular view - bFormView = rVOpt.bFormView ; + mbFormView = rVOpt.mbFormView ; // <-- nZoom = rVOpt.nZoom ; aSnapSize = rVOpt.aSnapSize ; @@ -318,7 +330,8 @@ SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt ) sSymbolFont = rVOpt.sSymbolFont; nShdwCrsrFillMode = rVOpt.nShdwCrsrFillMode; bStarOneSetting = rVOpt.bStarOneSetting; - bBookview = rVOpt.bBookview; + mbBookview = rVOpt.mbBookview; + mbBrowseMode = rVOpt.mbBrowseMode; mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode; bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields; bIdle = rVOpt.bIdle; diff --git a/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx b/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx index 3f021b3a1bc5..ac8128e1a118 100644 --- a/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx +++ b/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx @@ -102,7 +102,7 @@ struct SpellState ESelection m_aESelection; //iterating over draw text objects - std::vector<SdrTextObj*> m_aTextObjects; + std::list<SdrTextObj*> m_aTextObjects; bool m_bTextObjectsCollected; SpellState() : @@ -790,58 +790,24 @@ bool SwSpellDialogChildWindow::FindNextDrawTextError_Impl(SwWrtShell& rSh) if( pObj && pObj->ISA(SdrTextObj) ) pCurrentTextObj = static_cast<SdrTextObj*>(pObj); } - //at first fill the vector of drawing objects + //at first fill the list of drawing objects if(!m_pSpellState->m_bTextObjectsCollected ) { m_pSpellState->m_bTextObjectsCollected = true; - sal_uInt16 n = 0; - //iterate in the 'normal' array of objects - while( n < pDoc->GetSpzFrmFmts()->Count() ) + std::list<SdrTextObj*> aTextObjs; + SwDrawContact::GetTextObjectsFromFmt( aTextObjs, pDoc ); + if(pCurrentTextObj) { - SwFrmFmt* pFly = (*pDoc->GetSpzFrmFmts())[ n ]; - if( pFly->IsA( TYPE(SwDrawFrmFmt) ) ) - { - SwClientIter aIter( (SwFmt&) *pFly ); - if( aIter.First( TYPE(SwDrawContact) ) ) - { - SdrObject* pSdrO = ((SwDrawContact*)aIter())->GetMaster(); - if ( pSdrO ) - { - if ( pSdrO->IsA( TYPE(SdrObjGroup) ) ) - { - SdrObjListIter aListIter( *pSdrO, IM_DEEPNOGROUPS ); - //iterate inside of a grouped object - while( aListIter.IsMore() ) - { - SdrObject* pSdrOElement = aListIter.Next(); - if( pSdrOElement && pSdrOElement->IsA( TYPE(SdrTextObj) ) && - static_cast<SdrTextObj*>( pSdrOElement)->HasText() && - pCurrentTextObj != pSdrOElement) - { - m_pSpellState->m_aTextObjects.push_back((SdrTextObj*) pSdrOElement); + m_pSpellState->m_aTextObjects.remove(pCurrentTextObj); + m_pSpellState->m_aTextObjects.push_back(pCurrentTextObj); } } - } - else if( pSdrO->IsA( TYPE(SdrTextObj) ) && - static_cast<SdrTextObj*>( pSdrO )->HasText() && - pCurrentTextObj != pSdrO) - { - m_pSpellState->m_aTextObjects.push_back((SdrTextObj*) pSdrO); - } - } - } - } - ++n; - } - if(pCurrentTextObj) - m_pSpellState->m_aTextObjects.push_back(pCurrentTextObj); - } if(m_pSpellState->m_aTextObjects.size()) { Reference< XSpellChecker1 > xSpell( GetSpellChecker() ); while(!bNextDoc && m_pSpellState->m_aTextObjects.size()) { - std::vector<SdrTextObj*>::iterator aStart = m_pSpellState->m_aTextObjects.begin(); + std::list<SdrTextObj*>::iterator aStart = m_pSpellState->m_aTextObjects.begin(); SdrTextObj* pTextObj = *aStart; if(m_pSpellState->m_pStartDrawing == pTextObj) m_pSpellState->m_bRestartDrawing = true; diff --git a/sw/source/ui/dochdl/dochdl.src b/sw/source/ui/dochdl/dochdl.src index f92ea43681d8..f92ea43681d8 100644..100755 --- a/sw/source/ui/dochdl/dochdl.src +++ b/sw/source/ui/dochdl/dochdl.src diff --git a/sw/source/ui/dochdl/swdtflvr.cxx b/sw/source/ui/dochdl/swdtflvr.cxx index 693723cc16b3..1c9caac9b5e2 100644 --- a/sw/source/ui/dochdl/swdtflvr.cxx +++ b/sw/source/ui/dochdl/swdtflvr.cxx @@ -116,27 +116,18 @@ #include <dochdl.hrc> #include <comcore.hrc> // #111827# #include <sot/stg.hxx> - -// #108584# #include <svx/svditer.hxx> - -// #108584# #include <editeng/eeitem.hxx> - -// #108584# #include <editeng/fhgtitem.hxx> - -// #108584# #include <svx/svdpage.hxx> #include <avmedia/mediawindow.hxx> - -// #109590# #include <swcrsr.hxx> #include <SwRewriter.hxx> #include <globals.hrc> #include <vos/mutex.hxx> #include <vcl/svapp.hxx> #include <swserv.hxx> +#include <switerator.hxx> extern sal_Bool bFrmDrag; extern sal_Bool bDDINetAttr; @@ -373,10 +364,8 @@ uno::Reference < embed::XEmbeddedObject > SwTransferable::FindOLEObj( sal_Int64& uno::Reference < embed::XEmbeddedObject > xObj; if( pClpDocFac ) { - SwClientIter aIter( *(SwModify*)pClpDocFac->GetDoc()-> - GetDfltGrfFmtColl() ); - for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) ); - pNd; pNd = (SwCntntNode*)aIter.Next() ) + SwIterator<SwCntntNode,SwFmtColl> aIter( *pClpDocFac->GetDoc()->GetDfltGrfFmtColl() ); + for( SwCntntNode* pNd = aIter.First(); pNd; pNd = aIter.Next() ) if( ND_OLENODE == pNd->GetNodeType() ) { xObj = ((SwOLENode*)pNd)->GetOLEObj().GetOleRef(); @@ -393,10 +382,8 @@ Graphic* SwTransferable::FindOLEReplacementGraphic() const { if( pClpDocFac ) { - SwClientIter aIter( *(SwModify*)pClpDocFac->GetDoc()-> - GetDfltGrfFmtColl() ); - for( SwCntntNode* pNd = (SwCntntNode*)aIter.First( TYPE( SwCntntNode ) ); - pNd; pNd = (SwCntntNode*)aIter.Next() ) + SwIterator<SwCntntNode,SwFmtColl> aIter( *pClpDocFac->GetDoc()->GetDfltGrfFmtColl() ); + for( SwCntntNode* pNd = aIter.First(); pNd; pNd = aIter.Next() ) if( ND_OLENODE == pNd->GetNodeType() ) { return ((SwOLENode*)pNd)->GetGraphic(); diff --git a/sw/source/ui/docvw/PostItMgr.cxx b/sw/source/ui/docvw/PostItMgr.cxx index c52082028e16..e093616f072a 100644 --- a/sw/source/ui/docvw/PostItMgr.cxx +++ b/sw/source/ui/docvw/PostItMgr.cxx @@ -83,6 +83,7 @@ #include <i18npool/lang.h> #include "swevent.hxx" +#include "switerator.hxx" // distance between Anchor Y and initial note position #define POSTIT_INITIAL_ANCHOR_DISTANCE 20 @@ -1183,17 +1184,16 @@ void SwPostItMgr::AddPostIts(bool bCheckExistance, bool bFocus) { bool bEmpty = mvPostItFlds.empty(); SwFieldType* pType = mpView->GetDocShell()->GetDoc()->GetFldType(RES_POSTITFLD, aEmptyStr,false); - SwClientIter aIter( *pType ); - SwClient * pFirst = aIter.GoStart(); - while(pFirst) + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + SwFmtFld* pSwFmtFld = aIter.First(); + while(pSwFmtFld) { - SwFmtFld* pSwFmtFld = static_cast<SwFmtFld*>(pFirst); if ( pSwFmtFld->GetTxtFld()) { if ( pSwFmtFld->IsFldInDoc() ) InsertItem(pSwFmtFld,bCheckExistance,bFocus); } - pFirst = aIter++; + pSwFmtFld = aIter.Next(); } // if we just added the first one we have to update the view for centering diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx index 396c71f9f4a9..59a765f10527 100644 --- a/sw/source/ui/docvw/edtwin.cxx +++ b/sw/source/ui/docvw/edtwin.cxx @@ -3907,7 +3907,7 @@ void SwEditWin::MouseMove(const MouseEvent& _rMEvt) if( bTstShdwCrsr && bInsWin && !bIsDocReadOnly && !bInsFrm && - !rSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + !rSh.GetViewOptions()->getBrowseMode() && rSh.GetViewOptions()->IsShadowCursor() && !(rMEvt.GetModifier() + rMEvt.GetButtons()) && !rSh.HasSelection() && !GetConnectMetaFile() ) diff --git a/sw/source/ui/fldui/fldmgr.cxx b/sw/source/ui/fldui/fldmgr.cxx index 2d001a8c9577..3e89baa7bf8d 100644 --- a/sw/source/ui/fldui/fldmgr.cxx +++ b/sw/source/ui/fldui/fldmgr.cxx @@ -1034,8 +1034,13 @@ sal_Bool SwFldMgr::InsertFld( const SwInsertFld_Data& rData ) sal_uInt16 nTmpPos = sCmd.SearchAndReplace( ' ', sfx2::cTokenSeperator ); sCmd.SearchAndReplace( ' ', sfx2::cTokenSeperator, nTmpPos ); +<<<<<<< local + SwDDEFieldType aTyp( rData.sPar1, sCmd, (USHORT)nFormatId ); + SwDDEFieldType* pTyp = (SwDDEFieldType*)pCurShell->InsertFldType( aTyp ); +======= SwDDEFieldType* pTyp = (SwDDEFieldType*)pCurShell->InsertFldType( SwDDEFieldType( rData.sPar1, sCmd, (sal_uInt16)nFormatId )); +>>>>>>> other pFld = new SwDDEField( pTyp ); break; } @@ -1405,7 +1410,7 @@ sal_Bool SwFldMgr::InsertFld( const SwInsertFld_Data& rData ) else if( bPageVar ) ((SwRefPageGetFieldType*)pCurShell->GetFldType( 0, RES_REFPAGEGETFLD ))->UpdateFlds(); else if( TYP_GETREFFLD == rData.nTypeId ) - pFld->GetTyp()->Modify( 0, 0 ); + pFld->GetTyp()->ModifyNotification( 0, 0 ); // temporaeres Feld loeschen delete pFld; diff --git a/sw/source/ui/fldui/fldpage.cxx b/sw/source/ui/fldui/fldpage.cxx index 3e6db5e1bf1e..26882f1d8325 100644 --- a/sw/source/ui/fldui/fldpage.cxx +++ b/sw/source/ui/fldui/fldpage.cxx @@ -53,6 +53,7 @@ #include <cmdid.h> #include <globals.hrc> #include <sfx2/bindings.hxx> +#include <switerator.hxx> using namespace ::com::sun::star; @@ -249,14 +250,13 @@ sal_Bool SwFldPage::InsertFld(sal_uInt16 nTypeId, sal_uInt16 nSubType, const Str SwDBFieldType* pTyp = (SwDBFieldType*)pSh->InsertFldType( SwDBFieldType(pSh->GetDoc(), sColumn, aData)); - SwClientIter aIter( *pOldTyp ); + SwIterator<SwFmtFld,SwFieldType> aIter( *pOldTyp ); - for( SwFmtFld* pFmtFld = (SwFmtFld*)aIter.First( TYPE(SwFmtFld) ); - pFmtFld; pFmtFld = (SwFmtFld*)aIter.Next() ) + for( SwFmtFld* pFmtFld = aIter.First(); pFmtFld; pFmtFld = aIter.Next() ) { if( pFmtFld->GetFld() == m_pCurFld) { - pTyp->Add(pFmtFld); // Feld auf neuen Typ umhaengen + pFmtFld->RegisterToFieldType(*pTyp); pTmpFld->ChgTyp(pTyp); break; } @@ -411,9 +411,7 @@ IMPL_LINK( SwFldPage, NumFormatHdl, ListBox *, EMPTYARG ) return 0; } -/*-- 19.12.2005 14:05:47--------------------------------------------------- - -----------------------------------------------------------------------*/ void SwFldPage::SetWrtShell( SwWrtShell* pShell ) { m_pWrtShell = pShell; diff --git a/sw/source/ui/inc/view.hxx b/sw/source/ui/inc/view.hxx index ba6f5cb9dfaa..bbf32cdea482 100644 --- a/sw/source/ui/inc/view.hxx +++ b/sw/source/ui/inc/view.hxx @@ -494,6 +494,7 @@ public: void SetVisArea( const Point&, sal_Bool bUpdateScrollbar = sal_True); void CheckVisArea(); + void RecheckBrowseMode(); static LAYOUT_NS Dialog* GetSearchDialog(); static sal_uInt16 GetMoveType(); diff --git a/sw/source/ui/lingu/sdrhhcwrap.cxx b/sw/source/ui/lingu/sdrhhcwrap.cxx index 32127f413e1a..3dd6f77e24ab 100644 --- a/sw/source/ui/lingu/sdrhhcwrap.cxx +++ b/sw/source/ui/lingu/sdrhhcwrap.cxx @@ -72,7 +72,6 @@ SdrHHCWrapper::SdrHHCWrapper( SwView* pVw, pView( pVw ), pTextObj( NULL ), pOutlView( NULL ), - pListIter( NULL ), nOptions( nConvOptions ), nDocIndex( 0 ), nSourceLang( nSourceLanguage ), @@ -146,51 +145,14 @@ sal_Bool SdrHHCWrapper::ConvertNextDocument() sal_uInt16 n = nDocIndex; - while( !bNextDoc && ( pListIter || - n < pView->GetDocShell()->GetDoc()->GetSpzFrmFmts()->Count() ) ) + std::list<SdrTextObj*> aTextObjs; + SwDrawContact::GetTextObjectsFromFmt( aTextObjs, pView->GetDocShell()->GetDoc() ); + for ( std::list<SdrTextObj*>::iterator aIt = aTextObjs.begin(); aIt != aTextObjs.end(); aIt++ ) { - while( !pTextObj && pListIter ) - { - if( pListIter->IsMore() ) - { - SdrObject* pSdrO = pListIter->Next(); - if( pSdrO && pSdrO->IsA( TYPE(SdrTextObj) ) && - ( (SdrTextObj*) pSdrO )->HasText() ) - pTextObj = (SdrTextObj*) pSdrO; - } - else - { - delete pListIter; - pListIter = NULL; - } - } - - if ( !pTextObj && - n < pView->GetDocShell()->GetDoc()->GetSpzFrmFmts()->Count() ) - { - SwFrmFmt* pFly = (*pView->GetDocShell()->GetDoc()->GetSpzFrmFmts())[ n ]; - if( pFly->IsA( TYPE(SwDrawFrmFmt) ) ) - { - SwClientIter aIter( (SwFmt&) *pFly ); - if( aIter.First( TYPE(SwDrawContact) ) ) - { - SdrObject* pSdrO = ((SwDrawContact*)aIter())->GetMaster(); - if ( pSdrO ) - { - if ( pSdrO->IsA( TYPE(SdrObjGroup) ) ) - pListIter = new SdrObjListIter( *pSdrO, IM_DEEPNOGROUPS ); - else if( pSdrO->IsA( TYPE(SdrTextObj) ) && - ( (SdrTextObj*) pSdrO )->HasText() ) - pTextObj = (SdrTextObj*) pSdrO; - } - } - } - ++n; - } + pTextObj = (*aIt); if ( pTextObj ) { OutlinerParaObject* pParaObj = pTextObj->GetOutlinerParaObject(); - if ( pParaObj ) { SetPaperSize( pTextObj->GetLogicRect().GetSize() ); @@ -221,8 +183,11 @@ sal_Bool SdrHHCWrapper::ConvertNextDocument() else SetUpdateMode(sal_False); } + if ( !bNextDoc ) pTextObj = NULL; + else + break; } } diff --git a/sw/source/ui/lingu/sdrhhcwrap.hxx b/sw/source/ui/lingu/sdrhhcwrap.hxx index 795e357e28c3..3cb59605d40e 100644 --- a/sw/source/ui/lingu/sdrhhcwrap.hxx +++ b/sw/source/ui/lingu/sdrhhcwrap.hxx @@ -43,7 +43,6 @@ class SdrHHCWrapper : public SdrOutliner SwView* pView; SdrTextObj* pTextObj; OutlinerView* pOutlView; - SdrObjListIter* pListIter; sal_Int32 nOptions; sal_uInt16 nDocIndex; LanguageType nSourceLang; diff --git a/sw/source/ui/shells/textfld.cxx b/sw/source/ui/shells/textfld.cxx index ea30db9235c5..6100149def78 100644 --- a/sw/source/ui/shells/textfld.cxx +++ b/sw/source/ui/shells/textfld.cxx @@ -81,6 +81,7 @@ #include <app.hrc> #include <PostItMgr.hxx> +#include <switerator.hxx> using namespace nsSwDocInfoSubType; @@ -377,17 +378,16 @@ void SwTextShell::ExecField(SfxRequest &rReq) if (pPostIt) { SwFieldType* pType = rSh.GetDoc()->GetFldType(RES_POSTITFLD, aEmptyStr,false); - SwClientIter aIter( *pType ); - SwClient* pFirst = aIter.GoStart(); - while( pFirst ) + SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); + SwFmtFld* pSwFmtFld = aIter.First(); + while( pSwFmtFld ) { - SwFmtFld* pSwFmtFld = static_cast<SwFmtFld*>(pFirst); if ( pSwFmtFld->GetFld() == pPostIt ) { pSwFmtFld->Broadcast( SwFmtFldHint( 0, SWFMTFLD_FOCUS, &GetView() ) ); break; } - pFirst = aIter++; + pSwFmtFld = aIter.Next(); } } } diff --git a/sw/source/ui/uiview/pview.cxx b/sw/source/ui/uiview/pview.cxx index b69f2edca327..8ffc9d519e88 100644 --- a/sw/source/ui/uiview/pview.cxx +++ b/sw/source/ui/uiview/pview.cxx @@ -1251,6 +1251,30 @@ void SwPagePreView::Init(const SwViewOption * pPrefs) SwViewOption aOpt( *pPrefs ); +<<<<<<< local + aOpt.SetPagePreview(TRUE); + aOpt.SetTab( FALSE ); + aOpt.SetBlank( FALSE ); + aOpt.SetHardBlank( FALSE ); + aOpt.SetParagraph( FALSE ); + aOpt.SetLineBreak( FALSE ); + aOpt.SetPageBreak( FALSE ); + aOpt.SetColumnBreak( FALSE ); + aOpt.SetSoftHyph( FALSE ); + aOpt.SetFldName( FALSE ); + aOpt.SetPostIts( FALSE ); + aOpt.SetShowHiddenChar( FALSE ); + aOpt.SetShowHiddenField( FALSE ); + aOpt.SetShowHiddenPara( FALSE ); + aOpt.SetViewHRuler( FALSE ); + aOpt.SetViewVRuler( FALSE ); + aOpt.SetGraphic( TRUE ); + aOpt.SetTable( TRUE ); + aOpt.SetSnap( FALSE ); + aOpt.SetGridVisible( FALSE ); + aOpt.setBrowseMode( FALSE ); + +======= aOpt.SetPagePreview(sal_True); aOpt.SetTab( sal_False ); aOpt.SetBlank( sal_False ); @@ -1271,6 +1295,7 @@ void SwPagePreView::Init(const SwViewOption * pPrefs) aOpt.SetTable( sal_True ); aOpt.SetSnap( sal_False ); aOpt.SetGridVisible( sal_False ); +>>>>>>> other GetViewShell()->ApplyViewOptions( aOpt ); GetViewShell()->ApplyAccessiblityOptions(SW_MOD()->GetAccessibilityOptions()); @@ -1278,6 +1303,8 @@ void SwPagePreView::Init(const SwViewOption * pPrefs) SwPrintData const aPrintOptions = *SW_MOD()->GetPrtOptions(false); GetViewShell()->AdjustOptionsForPagePreview( aPrintOptions ); +<<<<<<< local +======= IDocumentSettingAccess* pIDSA = pESh->getIDocumentSettingAccess(); if( pIDSA->get(IDocumentSettingAccess::BROWSE_MODE)) { @@ -1285,6 +1312,7 @@ void SwPagePreView::Init(const SwViewOption * pPrefs) pESh->CheckBrowseView( sal_True ); } +>>>>>>> other GetViewShell()->CalcLayout(); DocSzChgd( GetViewShell()->GetDocSize() ); diff --git a/sw/source/ui/uiview/srcview.cxx b/sw/source/ui/uiview/srcview.cxx index e94b1952707f..4b7daf8b3d93 100644 --- a/sw/source/ui/uiview/srcview.cxx +++ b/sw/source/ui/uiview/srcview.cxx @@ -307,7 +307,12 @@ void SwSrcView::Init() } // StartListening(*GetViewFrame()); +<<<<<<< local + SetNewWindowAllowed( sal_False ); + StartListening(*pDocShell,TRUE); +======= StartListening(*pDocShell,sal_True); +>>>>>>> other } /*-------------------------------------------------------------------- diff --git a/sw/source/ui/uiview/view.cxx b/sw/source/ui/uiview/view.cxx index e9e3bc34dc31..43f9c490ea2c 100644 --- a/sw/source/ui/uiview/view.cxx +++ b/sw/source/ui/uiview/view.cxx @@ -214,6 +214,13 @@ void SwView::GotFocus() const const_cast< SwView* >( this )->AttrChangedNotify( pWrtShell ); } } + if( GetWrtShellPtr() ) + { + SwWrtShell& rWrtShell = GetWrtShell(); + rWrtShell.GetDoc()->SetCurrentViewShell( GetWrtShellPtr() ); + rWrtShell.GetDoc()->set( IDocumentSettingAccess::BROWSE_MODE, + rWrtShell.GetViewOptions()->getBrowseMode() ); + } } /*-------------------------------------------------------------------- @@ -831,46 +838,48 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh ) // document SfxViewShell* pExistingSh = 0; if ( pOldSh ) - pExistingSh = pOldSh; - else { - SfxViewFrame *pF = SfxViewFrame::GetFirst( pDocSh ); - if( pF == _pFrame ) - pF = SfxViewFrame::GetNext( *pF, pDocSh ); - if( pF ) - pExistingSh = pF->GetViewShell(); - } - + pExistingSh = pOldSh; // determine type of existing view - if( pExistingSh && - pExistingSh->IsA( TYPE( SwPagePreView ) ) ) + if( pExistingSh->IsA( TYPE( SwPagePreView ) ) ) { sSwViewData = ((SwPagePreView*)pExistingSh)->GetPrevSwViewData(); sNewCrsrPos = ((SwPagePreView*)pExistingSh)->GetNewCrsrPos(); nNewPage = ((SwPagePreView*)pExistingSh)->GetNewPage(); bOldShellWasPagePreView = sal_True; } +<<<<<<< local + else if( pExistingSh->IsA( TYPE( SwSrcView ) ) ) + bOldShellWasSrcView = TRUE; + } +======= else if( pExistingSh && pExistingSh->IsA( TYPE( SwSrcView ) ) ) bOldShellWasSrcView = sal_True; +>>>>>>> other RTL_LOGFILE_CONTEXT_TRACE( aLog, "before create WrtShell" ); if(PTR_CAST( SwView, pExistingSh)) { pWrtShell = new SwWrtShell( *((SwView*)pExistingSh)->pWrtShell, pEditWin, *this); -//MA: Das kann doch nur zu einem GPF fuehren! -// nSelectionType = ((SwView*)pOldSh)->nSelectionType; + } + else if( dynamic_cast<SwWrtShell*>( pDocSh->GetDoc()->GetCurrentViewShell() ) ) + { + pWrtShell = new SwWrtShell( *(SwWrtShell*)pDocSh->GetDoc()->GetCurrentViewShell(), + pEditWin, *this); } else { SwDoc& rDoc = *((SwDocShell*)pDocSh)->GetDoc(); if( !bOldShellWasSrcView && pWebDShell && !bOldShellWasPagePreView ) - rDoc.set(IDocumentSettingAccess::BROWSE_MODE, true); + aUsrPref.setBrowseMode( TRUE ); + else if( rDoc.IsLoaded() ) + aUsrPref.setBrowseMode( rDoc.get(IDocumentSettingAccess::BROWSE_MODE) ); //Fuer den BrowseMode wollen wir keinen Factor uebernehmen. - if( rDoc.get(IDocumentSettingAccess::BROWSE_MODE) && aUsrPref.GetZoomType() != SVX_ZOOM_PERCENT ) + if( aUsrPref.getBrowseMode() && aUsrPref.GetZoomType() != SVX_ZOOM_PERCENT ) { aUsrPref.SetZoomType( SVX_ZOOM_PERCENT ); aUsrPref.SetZoom( 100 ); @@ -975,8 +984,14 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh ) pWrtShell->DoUndo( 0 != SW_MOD()->GetUndoOptions().GetUndoCount() ); +<<<<<<< local + const BOOL bBrowse = pWrtShell->GetViewOptions()->getBrowseMode(); + // Disable "multiple window" +======= const sal_Bool bBrowse = pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other SetNewWindowAllowed(!bBrowse); + // End of disabled multiple window ShowVScrollbar(aUsrPref.IsViewVScrollBar()); ShowHScrollbar(aUsrPref.IsViewHScrollBar()); @@ -1187,7 +1202,7 @@ void SwView::ReadUserData( const String &rUserData, sal_Bool bBrowse ) if ( rUserData.GetTokenCount() > 1 && //Fuer Dokumente ohne Layout nur im OnlineLayout oder beim //Forward/Backward - (!pWrtShell->IsNewLayout() || pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) || bBrowse) ) + (!pWrtShell->IsNewLayout() || pWrtShell->GetViewOptions()->getBrowseMode() || bBrowse) ) { //#i43146# go to the last editing position when opening own files bool bIsOwnDocument = lcl_IsOwnDocument( *this ); @@ -1210,7 +1225,7 @@ void SwView::ReadUserData( const String &rUserData, sal_Bool bBrowse ) nRight = rUserData.GetToken(0, ';', nPos ).ToInt32(), nBottom= rUserData.GetToken(0, ';', nPos ).ToInt32(); - const long nAdd = pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ? DOCUMENTBORDER : DOCUMENTBORDER*2; + const long nAdd = pWrtShell->GetViewOptions()->getBrowseMode() ? DOCUMENTBORDER : DOCUMENTBORDER*2; if ( nBottom <= (pWrtShell->GetDocSize().Height()+nAdd) ) { pWrtShell->EnableSmooth( sal_False ); @@ -1219,7 +1234,7 @@ void SwView::ReadUserData( const String &rUserData, sal_Bool bBrowse ) sal_uInt16 nOff = 0; SvxZoomType eZoom; - if( !pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if( !pWrtShell->GetViewOptions()->getBrowseMode() ) eZoom = (SvxZoomType) (sal_uInt16)rUserData.GetToken(nOff, ';', nPos ).ToInt32(); else { @@ -1310,7 +1325,7 @@ void SwView::ReadUserDataSequence ( const uno::Sequence < beans::PropertyValue > //#i43146# go to the last editing position when opening own files bool bIsOwnDocument = lcl_IsOwnDocument( *this ); sal_Int32 nLength = rSequence.getLength(); - if (nLength && (!pWrtShell->IsNewLayout() || pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) || bBrowse) ) + if (nLength && (!pWrtShell->IsNewLayout() || pWrtShell->GetViewOptions()->getBrowseMode() || bBrowse) ) { SET_CURR_SHELL(pWrtShell); const beans::PropertyValue *pValue = rSequence.getConstArray(); @@ -1400,7 +1415,7 @@ void SwView::ReadUserDataSequence ( const uno::Sequence < beans::PropertyValue > if (bGotVisibleBottom) { Point aCrsrPos( nX, nY ); - const long nAdd = pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ? DOCUMENTBORDER : DOCUMENTBORDER*2; + const long nAdd = pWrtShell->GetViewOptions()->getBrowseMode() ? DOCUMENTBORDER : DOCUMENTBORDER*2; if (nBottom <= (pWrtShell->GetDocSize().Height()+nAdd) ) { pWrtShell->EnableSmooth( sal_False ); @@ -1408,7 +1423,7 @@ void SwView::ReadUserDataSequence ( const uno::Sequence < beans::PropertyValue > sal_uInt16 nOff = 0; SvxZoomType eZoom; - if ( !pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if ( !pWrtShell->GetViewOptions()->getBrowseMode() ) eZoom = static_cast < SvxZoomType > ( nZoomType ); else { diff --git a/sw/source/ui/uiview/view.hrc b/sw/source/ui/uiview/view.hrc index d2aa60494801..d2aa60494801 100755..100644 --- a/sw/source/ui/uiview/view.hrc +++ b/sw/source/ui/uiview/view.hrc diff --git a/sw/source/ui/uiview/view0.cxx b/sw/source/ui/uiview/view0.cxx index 6e0ba4cba6bd..9a4b4f2edf9e 100644 --- a/sw/source/ui/uiview/view0.cxx +++ b/sw/source/ui/uiview/view0.cxx @@ -49,15 +49,17 @@ #include <sfx2/bindings.hxx> #include <uivwimp.hxx> #include <avmedia/mediaplayer.hxx> +//#include <swlinguconfig.hxx> #include <swmodule.hxx> #include <sfx2/objface.hxx> #include <navipi.hxx> #include <wrtsh.hxx> -#include "doc.hxx" +#include <edtwin.hxx> #include "view.hxx" #include "basesh.hxx" #include "docsh.hxx" +#include "doc.hxx" #include "globals.hrc" #include "cmdid.h" // FN_ ... #include "globdoc.hxx" @@ -219,6 +221,46 @@ void lcl_SetViewMetaChars( SwViewOption& rVOpt, sal_Bool bOn) } } +void SwView::RecheckBrowseMode() +{ + // OS: numerische Reihenfolge beachten! + static USHORT __READONLY_DATA aInva[] = + { + //SID_NEWWINDOW,/*5620*/ + SID_BROWSER_MODE, /*6313*/ + SID_RULER_BORDERS, SID_RULER_PAGE_POS, + //SID_ATTR_LONG_LRSPACE, + SID_HTML_MODE, + SID_RULER_PROTECT, + //SID_AUTOSPELL_CHECK, + //SID_AUTOSPELL_MARKOFF, + FN_RULER, /*20211*/ + FN_VIEW_GRAPHIC, /*20213*/ + FN_VIEW_BOUNDS, /**/ + FN_VIEW_FIELDS, /*20215*/ + FN_VLINEAL, /*20216*/ + FN_VSCROLLBAR, /*20217*/ + FN_HSCROLLBAR, /*20218*/ + FN_VIEW_META_CHARS, /**/ + FN_VIEW_MARKS, /**/ + //FN_VIEW_FIELDNAME, /**/ + FN_VIEW_TABLEGRID, /*20227*/ + FN_PRINT_LAYOUT, /*20237*/ + FN_QRY_MERGE, /*20364*/ + FN_SHADOWCURSOR, /**/ + 0 + }; + // the view must not exist! + GetViewFrame()->GetBindings().Invalidate(aInva); + CheckVisArea(); + + SvxZoomType eType; + if( GetWrtShell().GetViewOptions()->getBrowseMode() && SVX_ZOOM_PERCENT != (eType = (SvxZoomType) + GetWrtShell().GetViewOptions()->GetZoomType()) ) + SetZoom( eType ); + InvalidateBorder(); +} + /*-------------------------------------------------------------------- State of view options --------------------------------------------------------------------*/ @@ -233,7 +275,6 @@ void SwView::StateViewOptions(SfxItemSet &rSet) while(nWhich) { sal_Bool bReadonly = GetDocShell()->IsReadOnly(); - sal_Bool bBrowse = pIDSA ? pIDSA->get( IDocumentSettingAccess::BROWSE_MODE ) : sal_False; if ( bReadonly && nWhich != FN_VIEW_GRAPHIC ) { rSet.DisableItem(nWhich); @@ -252,6 +293,15 @@ void SwView::StateViewOptions(SfxItemSet &rSet) aBool.SetValue( pOpt->IsViewAnyRuler()); } break; + case SID_BROWSER_MODE: + case FN_PRINT_LAYOUT: + { + sal_Bool bState = pOpt->getBrowseMode(); + if(FN_PRINT_LAYOUT == nWhich) + bState = !bState; + aBool.SetValue( bState ); + } + break; case FN_VIEW_BOUNDS: aBool.SetValue( SwViewOption::IsDocBoundaries()); break; case FN_VIEW_GRAPHIC: @@ -291,7 +341,7 @@ void SwView::StateViewOptions(SfxItemSet &rSet) case FN_VLINEAL: aBool.SetValue( 0 != StatVLineal() ); break; case FN_HSCROLLBAR: - if(bBrowse) + if( pOpt->getBrowseMode() ) { rSet.DisableItem(nWhich); nWhich = 0; @@ -304,7 +354,7 @@ void SwView::StateViewOptions(SfxItemSet &rSet) aBool.SetValue( pOpt->IsOnlineSpell() ); break; case FN_SHADOWCURSOR: - if (pIDSA == 0 || pIDSA->get( IDocumentSettingAccess::BROWSE_MODE )) + if (pIDSA == 0 || pOpt->getBrowseMode() ) { rSet.DisableItem( nWhich ); nWhich = 0; @@ -334,6 +384,7 @@ void SwView::ExecViewOptions(SfxRequest &rReq) int eState = STATE_TOGGLE; sal_Bool bSet = sal_False; + bool bBrowseModeChanged = false; const SfxItemSet *pArgs = rReq.GetArgs(); sal_uInt16 nSlot = rReq.GetSlot(); @@ -390,6 +441,19 @@ void SwView::ExecViewOptions(SfxRequest &rReq) pOpt->SetCrossHair( bFlag ); break; + case SID_BROWSER_MODE: + case FN_PRINT_LAYOUT: + if( STATE_TOGGLE == eState ) + bFlag = !pOpt->getBrowseMode(); + else if( nSlot == FN_PRINT_LAYOUT ) + bFlag = !bFlag; + bBrowseModeChanged = bFlag != pOpt->getBrowseMode(); + // Disable "multiple layout" + GetDocShell()->ToggleBrowserMode( bFlag, this ); + + pOpt->setBrowseMode( bFlag ); + break; + case FN_VIEW_NOTES: if ( STATE_TOGGLE == eState ) bFlag = !pOpt->IsPostIts(); @@ -518,6 +582,11 @@ void SwView::ExecViewOptions(SfxRequest &rReq) if( !(*rSh.GetViewOptions() == *pOpt )) { rSh.ApplyViewOptions( *pOpt ); + if( bBrowseModeChanged ) + { + RecheckBrowseMode(); + CheckVisArea(); + } //Die UsrPref muessen als Modified gekennzeichnet werden. //call for initialization @@ -538,6 +607,8 @@ void SwView::ExecViewOptions(SfxRequest &rReq) const sal_Bool bLockedView = rSh.IsViewLocked(); rSh.LockView( sal_True ); //lock visible section GetWrtShell().EndAction(); + if( bBrowseModeChanged && !bFlag ) + CalcVisArea( GetEditWin().GetOutputSizePixel() ); rSh.LockView( bLockedView ); delete pOpt; diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx index 35b5c5648c96..8234a7a3583a 100644 --- a/sw/source/ui/uiview/view2.cxx +++ b/sw/source/ui/uiview/view2.cxx @@ -1229,8 +1229,9 @@ void SwView::StateStatusLine(SfxItemSet &rSet) { const SwViewOption* pVOpt = rShell.GetViewOptions(); SvxZoomType eZoom = (SvxZoomType) pVOpt->GetZoomType(); - SvxZoomItem aZoom(eZoom, pVOpt->GetZoom()); - if(pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE)) + SvxZoomItem aZoom(eZoom, + pVOpt->GetZoom()); + if( pVOpt->getBrowseMode() ) { aZoom.SetValueSet( SVX_ZOOM_ENABLE_50| @@ -1581,7 +1582,7 @@ void SwView::ExecuteStatusLine(SfxRequest &rReq) SfxItemSet aCoreSet(pShell->GetPool(), SID_ATTR_ZOOM, SID_ATTR_ZOOM, SID_ATTR_VIEWLAYOUT, SID_ATTR_VIEWLAYOUT, 0 ); SvxZoomItem aZoom( (SvxZoomType)rViewOptions.GetZoomType(), rViewOptions.GetZoom() ); - const bool bBrowseMode = rSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); + const bool bBrowseMode = rSh.GetViewOptions()->getBrowseMode(); if( bBrowseMode ) { aZoom.SetValueSet( diff --git a/sw/source/ui/uiview/viewport.cxx b/sw/source/ui/uiview/viewport.cxx index 465227dbd0bb..c20b5e26ff22 100644 --- a/sw/source/ui/uiview/viewport.cxx +++ b/sw/source/ui/uiview/viewport.cxx @@ -75,7 +75,7 @@ static sal_uInt16 nPgNum = 0; sal_Bool SwView::IsDocumentBorder() { return GetDocShell()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED || - pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) || + pWrtShell->GetViewOptions()->getBrowseMode() || SVX_ZOOM_PAGEWIDTH_NOBORDER == (SvxZoomType)pWrtShell->GetViewOptions()->GetZoomType(); } @@ -205,7 +205,11 @@ aDocSz = rSz; lTmp = aNewVisArea.Right() - lTmp; aNewVisArea.Right() -= lTmp; aNewVisArea.Left() -= lTmp; +<<<<<<< local + bModified = true; +======= bModified = sal_True; +>>>>>>> other } lTmp = aDocSz.Height() + lGreenOffset; @@ -214,7 +218,11 @@ aDocSz = rSz; lTmp = aNewVisArea.Bottom() - lTmp; aNewVisArea.Bottom() -= lTmp; aNewVisArea.Top() -= lTmp; +<<<<<<< local + bModified = true; +======= bModified = sal_True; +>>>>>>> other } if ( bModified ) @@ -354,7 +362,7 @@ void SwView::SetVisArea( const Point &rPt, sal_Bool bUpdateScrollbar ) void SwView::CheckVisArea() { - pHScrollbar->SetAuto( pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + pHScrollbar->SetAuto( pWrtShell->GetViewOptions()->getBrowseMode() && !GetViewFrame()->GetFrame().IsInPlace() ); if ( IsDocumentBorder() ) { @@ -713,7 +721,7 @@ IMPL_LINK( SwView, ScrollHdl, SwScrollbar *, pScrollbar ) if ( pScrollbar->GetType() == SCROLL_DRAG ) pWrtShell->EnableSmooth( sal_False ); - if(!pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) && + if(!pWrtShell->GetViewOptions()->getBrowseMode() && pScrollbar->GetType() == SCROLL_DRAG) { //Hier wieder auskommentieren wenn das mitscrollen nicht gewuenscht ist. @@ -881,7 +889,7 @@ void SwView::CalcAndSetBorderPixel( SvBorder &rToFill, sal_Bool /*bInner*/ ) } //#i32913# in browse mode the visibility of the horizontal scrollbar // depends on the content (fixed width tables may require a scrollbar) - if ( pHScrollbar->IsVisible(pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE)) ) + if ( pHScrollbar->IsVisible(pWrtShell->GetViewOptions()->getBrowseMode()) ) rToFill.Bottom() = nTmp; SetBorderPixel( rToFill ); @@ -1121,10 +1129,17 @@ void SwView::OuterResizePixel( const Point &rOfst, const Size &rSize ) bInOuterResizePixel = sal_True; // feststellen, ob Scrollbars angezeigt werden duerfen +<<<<<<< local + BOOL bBrowse = pWrtShell->GetViewOptions()->getBrowseMode(); + BOOL bShowH = FALSE, + bShowV = FALSE, + bAuto = FALSE, +======= sal_Bool bBrowse = pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); sal_Bool bShowH = sal_False, bShowV = sal_False, bAuto = sal_False, +>>>>>>> other bHAuto = bBrowse; switch( GetScrollingMode() ) { @@ -1214,8 +1229,13 @@ void SwView::OuterResizePixel( const Point &rOfst, const Size &rSize ) pDocSh->SetVisArea( pDocSh->SfxInPlaceObject::GetVisArea() );*/ if ( pWrtShell->GetViewOptions()->GetZoomType() != SVX_ZOOM_PERCENT && +<<<<<<< local + !pWrtShell->GetViewOptions()->getBrowseMode() ) + _SetZoom( aEditSz, (SvxZoomType)pWrtShell->GetViewOptions()->GetZoomType(), 100, TRUE ); +======= !pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) _SetZoom( aEditSz, (SvxZoomType)pWrtShell->GetViewOptions()->GetZoomType(), 100, sal_True ); +>>>>>>> other pWrtShell->EndAction(); bRepeat = bScroll1 != pVScrollbar->IsVisible(sal_True); @@ -1274,7 +1294,7 @@ void SwView::SetZoomFactor( const Fraction &rX, const Fraction &rY ) Size SwView::GetOptimalSizePixel() const { Size aPgSize; - if ( pWrtShell->getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) + if ( pWrtShell->GetViewOptions()->getBrowseMode() ) aPgSize = SvxPaperInfo::GetPaperSize(PAPER_A4); else { diff --git a/sw/source/ui/uiview/viewtab.cxx b/sw/source/ui/uiview/viewtab.cxx index ee5522595f96..83774f5f0559 100644 --- a/sw/source/ui/uiview/viewtab.cxx +++ b/sw/source/ui/uiview/viewtab.cxx @@ -275,10 +275,16 @@ void SwView::ExecTabWin( SfxRequest& rReq ) SwWrtShell &rSh = GetWrtShell(); const sal_uInt16 nFrmType = rSh.IsObjSelected() ? FRMTYPE_DRAWOBJ : +<<<<<<< local + rSh.GetFrmType(0,TRUE); + const BOOL bFrmSelection = rSh.IsFrmSelected(); + const BOOL bBrowse = rSh.GetViewOptions()->getBrowseMode(); +======= rSh.GetFrmType(0,sal_True); const sal_Bool bFrmSelection = rSh.IsFrmSelected(); const sal_Bool bBrowse = rSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other const sal_uInt16 nSlot = rReq.GetSlot(); const sal_uInt16 nDescId = rSh.GetCurPageDesc(); @@ -915,7 +921,11 @@ void SwView::StateTabWin(SfxItemSet& rSet) const sal_Bool bFrmSelection = rSh.IsFrmSelected(); +<<<<<<< local + const BOOL bBrowse = rSh.GetViewOptions()->getBrowseMode(); +======= const sal_Bool bBrowse = rSh.getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); +>>>>>>> other // PageOffset/Begrenzer const SwRect& rPageRect = rSh.GetAnyCurRect( RECT_PAGE, pPt ); const SwRect& rPagePrtRect = rSh.GetAnyCurRect( RECT_PAGE_PRT, pPt ); diff --git a/sw/source/ui/uno/unomod.cxx b/sw/source/ui/uno/unomod.cxx index c19587f514f2..25b09c895687 100644 --- a/sw/source/ui/uno/unomod.cxx +++ b/sw/source/ui/uno/unomod.cxx @@ -776,8 +776,13 @@ void SwXViewSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, c break; case HANDLE_VIEWSET_ONLINE_LAYOUT : { - if( pView && !bVal != !pView->GetWrtShell().getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE) ) - pView->GetDocShell()->ToggleBrowserMode(bVal, pView ); + if( pView && !bVal != !pView->GetWrtShell().GetViewOptions()->getBrowseMode() ) + { + SwViewOption aOpt( *pView->GetWrtShell().GetViewOptions() ); + aOpt.setBrowseMode( bVal ); + pView->GetWrtShell().ApplyViewOptions( aOpt ); + pView->RecheckBrowseMode(); + } } break; case HANDLE_VIEWSET_HELP_URL : @@ -963,7 +968,7 @@ void SwXViewSettings::_getSingleValue( const comphelper::PropertyInfo & rInfo, u break; case HANDLE_VIEWSET_ONLINE_LAYOUT: if(pView) - bBoolVal = pView->GetWrtShell().getIDocumentSettingAccess()->get(IDocumentSettingAccess::BROWSE_MODE); + bBoolVal = pView->GetWrtShell().GetViewOptions()->getBrowseMode(); break; case HANDLE_VIEWSET_HELP_URL : { diff --git a/sw/source/ui/uno/unotxdoc.cxx b/sw/source/ui/uno/unotxdoc.cxx index 023dabf27043..1a505b8af00a 100644 --- a/sw/source/ui/uno/unotxdoc.cxx +++ b/sw/source/ui/uno/unotxdoc.cxx @@ -2373,10 +2373,10 @@ void SwXTextDocument::refresh(void) throw( RuntimeException ) ::vos::OGuard aGuard(Application::GetSolarMutex()); if(!IsValid()) throw RuntimeException(); - SwWrtShell *pWrtShell = pDocShell->GetWrtShell(); + ViewShell *pViewShell = pDocShell->GetWrtShell(); notifyRefreshListeners(); - if(pWrtShell) - pWrtShell->CalcLayout(); + if(pViewShell) + pViewShell->CalcLayout(); } /*-- 21.02.00 08:41:06--------------------------------------------------- @@ -2678,42 +2678,59 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount( else { SwDocShell *pRenderDocShell = pDoc->GetDocShell(); - SwWrtShell *pWrtShell = pRenderDocShell->GetWrtShell(); - if (bFormat) + + // TODO/mba: we really need a generic way to get the ViewShell! + ViewShell* pViewShell = 0; + SwView* pSwView = PTR_CAST(SwView, pView); + if ( pSwView ) { - // #i38289 - if(pDoc->get(IDocumentSettingAccess::BROWSE_MODE)) + pViewShell = pSwView->GetWrtShellPtr(); + } + else + { + if ( bIsPDFExport && bFormat ) { - pRenderDocShell->ToggleBrowserMode(false,NULL); + //create a hidden view to be able to export as PDF also in print preview + //pView and pSwView are not changed intentionally! + m_pHiddenViewFrame = SfxViewFrame::LoadHiddenDocument( *pRenderDocShell, 2 ); + pViewShell = ((SwView*)m_pHiddenViewFrame->GetViewShell())->GetWrtShellPtr(); } + else + pViewShell = ((SwPagePreView*)pView)->GetViewShell(); + } + + if (!pViewShell || !pViewShell->GetLayout()) + return 0; - if (!pWrtShell) + if (bFormat) + { + // #i38289 + if( pViewShell->GetViewOptions()->getBrowseMode() ) { - //create a hidden view to be able to export as PDF also in print preview - m_pHiddenViewFrame = SfxViewFrame::LoadHiddenDocument( *pRenderDocShell, 2 ); - SwView* pSwView = (SwView*) m_pHiddenViewFrame->GetViewShell(); - pWrtShell = pSwView->GetWrtShellPtr(); + SwViewOption aOpt( *pViewShell->GetViewOptions() ); + aOpt.setBrowseMode( false ); + pViewShell->ApplyViewOptions( aOpt ); + pSwView->RecheckBrowseMode(); } // reformating the document for printing will show the changes in the view // which is likely to produce many unwanted and not nice to view actions. // We don't want that! Thus we disable updating of the view. - pWrtShell->StartAction(); + pViewShell->StartAction(); - const TypeId aSwViewTypeId = TYPE(SwView); - if (pView->IsA(aSwViewTypeId)) + if (pSwView) { - if (m_pRenderData && m_pRenderData->NeedNewViewOptionAdjust( *pWrtShell ) ) + if (m_pRenderData && m_pRenderData->NeedNewViewOptionAdjust( *pViewShell ) ) m_pRenderData->ViewOptionAdjustStop(); if (m_pRenderData && !m_pRenderData->IsViewOptionAdjust()) - m_pRenderData->ViewOptionAdjustStart( *pWrtShell, *pWrtShell->GetViewOptions() ); + m_pRenderData->ViewOptionAdjustStart( *pViewShell, *pViewShell->GetViewOptions() ); } m_pRenderData->SetSwPrtOptions( new SwPrintData ); m_pRenderData->MakeSwPrtOptions( m_pRenderData->GetSwPrtOptionsRef(), pRenderDocShell, m_pPrintUIOptions, m_pRenderData, bIsPDFExport ); - if (pView->IsA(aSwViewTypeId)) + if (pSwView) { // PDF export should not make use of the SwPrtOptions const SwPrintData *pPrtOptions = (bIsPDFExport) @@ -2723,7 +2740,7 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount( // since printing now also use the API for PDF export this option // should be set for printing as well ... - pWrtShell->SetPDFExportOption( sal_True ); + pViewShell->SetPDFExportOption( sal_True ); bool bOrigStatus = pRenderDocShell->IsEnableSetModified(); // check configuration: shall update of printing information in DocInfo set the document to "modified"? bool bStateChanged = false; @@ -2733,9 +2750,12 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount( bStateChanged = true; } - // --> FME 2005-05-23 #122919# Force field update before PDF export: +<<<<<<< local + pViewShell->UpdateFlds(TRUE); +======= pWrtShell->ViewShell::UpdateFlds(sal_True); +>>>>>>> other // <-- if( bStateChanged ) pRenderDocShell->EnableSetModified( sal_True ); @@ -2743,17 +2763,16 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount( // there is some redundancy between those two function calls, but right now // there is no time to sort this out. //TODO: check what exatly needs to be done and make just one function for that - pWrtShell->CalcLayout(); - pWrtShell->CalcPagesForPrint( pDoc->GetPageCount() ); - - pWrtShell->SetPDFExportOption( sal_False ); + pViewShell->CalcLayout(); + pViewShell->CalcPagesForPrint( pViewShell->GetPageCount() ); + pViewShell->SetPDFExportOption( sal_False ); // enable view again - pWrtShell->EndAction(); + pViewShell->EndAction(); } - const sal_Int32 nPageCount = pDoc->GetPageCount(); + const sal_Int32 nPageCount = pViewShell->GetPageCount(); // // get number of pages to be rendered @@ -2761,7 +2780,7 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount( const bool bPrintProspect = m_pPrintUIOptions->getBoolValue( "PrintProspect", false ); if (bPrintProspect) { - pDoc->CalculatePagePairsForProspectPrinting( *m_pRenderData, *m_pPrintUIOptions, nPageCount ); + pDoc->CalculatePagePairsForProspectPrinting( *pViewShell->GetLayout(), *m_pRenderData, *m_pPrintUIOptions, nPageCount ); nRet = m_pRenderData->GetPagePairsForProspectPrinting().size(); } else @@ -2770,12 +2789,12 @@ sal_Int32 SAL_CALL SwXTextDocument::getRendererCount( if (nPostItMode != POSTITS_NONE) { OutputDevice *pOutDev = lcl_GetOutputDevice( *m_pPrintUIOptions ); - m_pRenderData->CreatePostItData( pDoc, pWrtShell->GetViewOptions(), pOutDev ); + m_pRenderData->CreatePostItData( pDoc, pViewShell->GetViewOptions(), pOutDev ); } // get set of valid document pages (according to the current settings) // and their start frames - pDoc->CalculatePagesForPrinting( *m_pRenderData, *m_pPrintUIOptions, bIsPDFExport, nPageCount ); + pDoc->CalculatePagesForPrinting( *pViewShell->GetLayout(), *m_pRenderData, *m_pPrintUIOptions, bIsPDFExport, nPageCount ); if (nPostItMode != POSTITS_NONE) { @@ -2831,6 +2850,15 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SwXTextDocument::getRenderer( // Thus instead of throwing the exception we silently return. if (0 > nRenderer) throw IllegalArgumentException(); + + // TODO/mba: we really need a generic way to get the ViewShell! + ViewShell* pVwSh = 0; + SwView* pSwView = PTR_CAST(SwView, pView); + if ( pSwView ) + pVwSh = pSwView->GetWrtShellPtr(); + else + pVwSh = ((SwPagePreView*)pView)->GetViewShell(); + sal_Int32 nMaxRenderer = 0; if (!bIsSwSrcView && m_pRenderData) { @@ -2896,7 +2924,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SwXTextDocument::getRenderer( // we just state what output size we would need // which may cause vcl to set that page size on the printer // (if available and not overriden by the user) - aTmpSize = pDoc->GetPageSize( nPage, bIsSkipEmptyPages ); + aTmpSize = pVwSh->GetPageSize( nPage, bIsSkipEmptyPages ); aPreferredPageSize = awt::Size ( TWIP_TO_MM100( 2 * aTmpSize.Width() ), TWIP_TO_MM100( aTmpSize.Height() )); } @@ -2904,7 +2932,7 @@ uno::Sequence< beans::PropertyValue > SAL_CALL SwXTextDocument::getRenderer( } else { - aTmpSize = pDoc->GetPageSize( nPage, bIsSkipEmptyPages ); + aTmpSize = pVwSh->GetPageSize( nPage, bIsSkipEmptyPages ); aPageSize = awt::Size ( TWIP_TO_MM100( aTmpSize.Width() ), TWIP_TO_MM100( aTmpSize.Height() )); } @@ -3043,9 +3071,12 @@ void SAL_CALL SwXTextDocument::render( ViewShell* pVwSh = 0; if (pView) { - pVwSh = pView->IsA(aSwViewTypeId) ? - ((SwView*)pView)->GetWrtShellPtr() : - ((SwPagePreView*)pView)->GetViewShell(); + // TODO/mba: we really need a generic way to get the ViewShell! + SwView* pSwView = PTR_CAST(SwView, pView); + if ( pSwView ) + pVwSh = pSwView->GetWrtShellPtr(); + else + pVwSh = ((SwPagePreView*)pView)->GetViewShell(); } // get output device to use @@ -3314,7 +3345,7 @@ uno::Sequence< lang::Locale > SAL_CALL SwXTextDocument::getDocumentLanguages( } } - //get languages from "drawobject" + //TODO/mba: it's a strange concept that a view is needed to retrieve core data SwWrtShell *pWrtSh = pDocShell->GetWrtShell(); SdrView *pSdrView = pWrtSh->GetDrawView(); @@ -4096,7 +4127,7 @@ void SwXDocumentPropertyHelper::onChange() /*****************************************************************************/ -SwViewOptionAdjust_Impl::SwViewOptionAdjust_Impl( SwWrtShell& rSh, const SwViewOption &rViewOptions ) : +SwViewOptionAdjust_Impl::SwViewOptionAdjust_Impl( ViewShell& rSh, const SwViewOption &rViewOptions ) : m_rShell( rSh ), m_aOldViewOptions( rViewOptions ) { diff --git a/sw/source/ui/uno/unotxvw.cxx b/sw/source/ui/uno/unotxvw.cxx index 788fd4cce9cb..6a5522e6f774 100644 --- a/sw/source/ui/uno/unotxvw.cxx +++ b/sw/source/ui/uno/unotxvw.cxx @@ -81,7 +81,7 @@ #include <unocrsrhelper.hxx> #include <unotextrange.hxx> #include <sfx2/docfile.hxx> - +#include <switerator.hxx> #include "swdtflvr.hxx" #include <vcl/svapp.hxx> @@ -575,9 +575,7 @@ uno::Any SwXTextView::getSelection(void) throw( uno::RuntimeException ) const SwFrmFmt* pFmt = rSh.GetFlyFrmFmt(); if (pFmt) { - SwXFrame* pxFrame = (SwXFrame*)SwClientIter((SwFrmFmt&)*pFmt). - First(TYPE(SwXFrame)); - + SwXFrame* pxFrame = SwIterator<SwXFrame,SwFmt>::FirstElement(*pFmt); if(pxFrame) //das einzige gemeinsame interface fuer alle Frames { aRef = uno::Reference< uno::XInterface >((cppu::OWeakObject*)pxFrame, uno::UNO_QUERY); @@ -1056,7 +1054,7 @@ uno::Any SAL_CALL SwXTextView::getPropertyValue( sal_Int32 nCount = -1; if (nWID == WID_PAGE_COUNT) - nCount = m_pView->GetDocShell()->GetDoc()->GetPageCount(); + nCount = m_pView->GetWrtShell().GetPageCount(); else // WID_LINE_COUNT nCount = m_pView->GetWrtShell().GetLineCount( sal_False /*of whole document*/ ); aRet <<= nCount; diff --git a/sw/source/ui/utlui/uitool.cxx b/sw/source/ui/utlui/uitool.cxx index 9ccb68c3bef4..915d543d71cf 100644 --- a/sw/source/ui/utlui/uitool.cxx +++ b/sw/source/ui/utlui/uitool.cxx @@ -544,7 +544,7 @@ void SfxToSwPageDescAttr( const SwWrtShell& rShell, SfxItemSet& rSet ) SwPageDesc* pDesc = ((SwWrtShell&)rShell).FindPageDescByName( rDescName, sal_True ); if( pDesc ) - pDesc->Add( &aPgDesc ); + aPgDesc.RegisterToPageDesc( *pDesc ); } rSet.ClearItem( SID_ATTR_PARA_MODEL ); bChanged = sal_True; @@ -557,7 +557,7 @@ void SfxToSwPageDescAttr( const SwWrtShell& rShell, SfxItemSet& rSet ) { if( ((SwFmtPageDesc*)pItem)->GetPageDesc() ) { - ((SwFmtPageDesc*)pItem)->GetPageDesc()->Add(&aPgDesc); + aPgDesc.RegisterToPageDesc( *((SwFmtPageDesc*)pItem)->GetPageDesc() ); } } } diff --git a/sw/source/ui/vba/vbainformationhelper.cxx b/sw/source/ui/vba/vbainformationhelper.cxx index 6fdf8f9f9449..317aa64c46ca 100644 --- a/sw/source/ui/vba/vbainformationhelper.cxx +++ b/sw/source/ui/vba/vbainformationhelper.cxx @@ -32,6 +32,7 @@ #include <doc.hxx> #include <vbahelper/vbahelper.hxx> #include <swtypes.hxx> +#include <viewsh.hxx> using namespace ::ooo::vba; using namespace ::com::sun::star; @@ -58,7 +59,9 @@ double SwVbaInformationHelper::handleWdVerticalPositionRelativeToPage( const css sal_Int32 nCurrentPos = xTVCursor->getPosition().Y; sal_Int32 nCurrentPage = handleWdActiveEndPageNumber( xTVCursor ); - sal_Int32 nPageHeight = word::getDocShell( xModel )->GetDoc()->GetPageSize( nCurrentPage, sal_False ).Height(); + SwDoc* pDoc = word::getDocShell( xModel )->GetDoc(); + ViewShell* pViewSh = pDoc->GetCurrentViewShell(); + sal_Int32 nPageHeight = pViewSh ? pViewSh->GetPageSize( nCurrentPage, sal_False ).Height() : 0; // FIXME: handle multipul page style // it is very strange that the curros position is incorrect when open Word file. // e.g. if current cursor in the top left of the text body of the first page without header, diff --git a/sw/source/ui/vba/wordvbahelper.cxx b/sw/source/ui/vba/wordvbahelper.cxx index 82dfacf4f18d..cb0f5ce90091 100644 --- a/sw/source/ui/vba/wordvbahelper.cxx +++ b/sw/source/ui/vba/wordvbahelper.cxx @@ -34,6 +34,7 @@ #include <com/sun/star/lang/XUnoTunnel.hpp> #include <unotxdoc.hxx> #include <doc.hxx> +#include <viewsh.hxx> using namespace ::com::sun::star; using namespace ::ooo::vba; @@ -84,7 +85,8 @@ uno::Reference< style::XStyle > getCurrentPageStyle( const uno::Reference< frame sal_Int32 getPageCount( const uno::Reference< frame::XModel>& xModel ) throw (uno::RuntimeException) { SwDocShell* pDocShell = getDocShell( xModel ); - return pDocShell ? pDocShell->GetDoc()->GetPageCount() : 0; + ViewShell* pViewSh = pDocShell ? pDocShell->GetDoc()->GetCurrentViewShell() : 0; + return pViewSh ? pViewSh->GetPageCount() : 0; } } // word |