summaryrefslogtreecommitdiff
path: root/sw/source/core/doc
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/core/doc')
-rwxr-xr-xsw/source/core/doc/doc.cxx115
-rw-r--r--sw/source/core/doc/docbm.cxx2
-rw-r--r--sw/source/core/doc/docchart.cxx6
-rw-r--r--sw/source/core/doc/doccorr.cxx6
-rw-r--r--sw/source/core/doc/docdesc.cxx93
-rw-r--r--sw/source/core/doc/docdraw.cxx33
-rw-r--r--sw/source/core/doc/docedt.cxx10
-rw-r--r--sw/source/core/doc/docfld.cxx8
-rw-r--r--sw/source/core/doc/docfly.cxx16
-rw-r--r--sw/source/core/doc/docfmt.cxx9
-rw-r--r--sw/source/core/doc/docftn.cxx35
-rw-r--r--sw/source/core/doc/doclay.cxx83
-rw-r--r--sw/source/core/doc/docnew.cxx20
-rw-r--r--sw/source/core/doc/docredln.cxx8
-rw-r--r--sw/source/core/doc/doctxm.cxx36
-rw-r--r--sw/source/core/doc/ftnidx.cxx8
-rw-r--r--sw/source/core/doc/htmltbl.cxx11
-rw-r--r--sw/source/core/doc/lineinfo.cxx23
-rw-r--r--sw/source/core/doc/notxtfrm.cxx16
-rw-r--r--sw/source/core/doc/poolfmt.cxx2
-rw-r--r--sw/source/core/doc/swserv.cxx2
-rw-r--r--sw/source/core/doc/visiturl.cxx2
22 files changed, 286 insertions, 258 deletions
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index 7f2b92979f57..fd5b7ab1dc12 100755
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -108,6 +108,7 @@
#include <SwUndoFmt.hxx>
#include <unocrsr.hxx>
#include <docsh.hxx>
+#include <viewopt.hxx>
#include <docfld.hxx> // _SetGetExpFld
#include <docufld.hxx> // SwPostItField
#include <viewsh.hxx>
@@ -196,7 +197,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;
@@ -319,8 +320,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;
@@ -360,7 +361,7 @@ const i18n::ForbiddenCharacters*
}
void SwDoc::setForbiddenCharacters(/*[in]*/ USHORT nLang,
- /*[in]*/ const i18n::ForbiddenCharacters& rFChars )
+ /*[in]*/ const com::sun::star::i18n::ForbiddenCharacters& rFChars )
{
if( !xForbiddenCharsTable.isValid() )
{
@@ -377,12 +378,14 @@ void SwDoc::setForbiddenCharacters(/*[in]*/ USHORT 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();
}
@@ -446,12 +449,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();
}
}
@@ -1198,15 +1203,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;
@@ -1223,7 +1225,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;
USHORT nFirstPageNo = 0;
@@ -1420,7 +1422,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;
}
}
@@ -1428,7 +1430,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)
{
@@ -1547,6 +1549,7 @@ void SwDoc::UpdatePagesForPrintingWithPostItData(
void SwDoc::CalculatePagePairsForProspectPrinting(
+ const SwRootFrm& rLayout,
/* out */ SwRenderData &rData,
const SwPrintUIOptions &rOptions,
sal_Int32 nDocPageCount )
@@ -1575,11 +1578,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();
@@ -1589,7 +1591,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?" );
@@ -1692,32 +1694,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() );
-
- if( !bSkipEmptyPages && pPage->IsEmptyPage() && pPage->GetNext() )
- pPage = static_cast<const SwPageFrm*>( pPage->GetNext() );
-
- aSize = pPage->Frm().SSize();
- }
- return aSize;
-}
-
-
/*************************************************************************
* void UpdateDocStat( const SwDocStat& rStat );
*************************************************************************/
@@ -1762,7 +1738,7 @@ void SwDoc::UpdateDocStat( SwDocStat& rStat )
}
}
- rStat.nPage = GetRootFrm() ? GetRootFrm()->GetPageNum() : 0;
+ rStat.nPage = GetCurrentLayout() ? GetCurrentLayout()->GetPageNum() : 0; //swmod 080218
rStat.bModified = FALSE;
SetDocStat( rStat );
@@ -2069,46 +2045,35 @@ BOOL lcl_CheckSmartTagsAgain( const SwNodePtr& rpNd, void* )
void SwDoc::SpellItAgainSam( BOOL bInvalid, BOOL bOnlyWrong, 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 )
{
- SwPageFrm *pPage = (SwPageFrm*)GetRootFrm()->Lower();
- while ( pPage )
- {
- pPage->InvalidateAutoCompleteWords();
- pPage = (SwPageFrm*)pPage->GetNext();
- }
+ 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 )
{
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
diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
index 0080694722ba..ca3ab77a2d5c 100644
--- a/sw/source/core/doc/docbm.cxx
+++ b/sw/source/core/doc/docbm.cxx
@@ -1286,7 +1286,7 @@ void _SaveCntntIdx(SwDoc* pDoc,
if( pNode )
{
- SwFrm* pFrm = pNode->GetFrm();
+ SwFrm* pFrm = pNode->getLayoutFrm( pDoc->GetCurrentLayout() );
#if OSL_DEBUG_LEVEL > 1
static BOOL bViaDoc = FALSE;
if( bViaDoc )
diff --git a/sw/source/core/doc/docchart.cxx b/sw/source/core/doc/docchart.cxx
index 85b59cc556df..4ef5891271a3 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 e567a52085be..87ec511c62dd 100644
--- a/sw/source/core/doc/doccorr.cxx
+++ b/sw/source/core/doc/doccorr.cxx
@@ -439,9 +439,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;
+ register ViewShell *pSh = pCurrentView, *pVSh = pSh;
if( ppSh )
*ppSh = pSh;
@@ -453,7 +453,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 0b56578e0536..1f05a93f1abd 100644
--- a/sw/source/core/doc/docdesc.cxx
+++ b/sw/source/core/doc/docdesc.cxx
@@ -202,6 +202,7 @@ void SwDoc::ChgPageDesc( USHORT i, const SwPageDesc &rChged )
ASSERT( i < aPageDescs.Count(), "PageDescs ueberindiziert." );
SwPageDesc *pDesc = aPageDescs[i];
+ SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219
BOOL bDoesUndo = DoesUndo();
if (DoesUndo())
@@ -397,9 +398,12 @@ void SwDoc::ChgPageDesc( USHORT 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() );
@@ -447,28 +451,10 @@ void SwDoc::ChgPageDesc( USHORT i, const SwPageDesc &rChged )
|*
|*************************************************************************/
-void lcl_RemoveFrms( SwFrmFmt& rFmt, BOOL& rbFtnsRemoved )
-{
- SwClientIter aIter( rFmt );
- SwFrm *pFrm;
- for( pFrm = (SwFrm*)aIter.First(TYPE(SwFrm)); pFrm;
- pFrm = (SwFrm*)aIter.Next() )
- if ( !rbFtnsRemoved && pFrm->IsPageFrm() &&
- ((SwPageFrm*)pFrm)->IsFtnPage() )
- {
- rFmt.getIDocumentLayoutAccess()->GetRootFrm()->RemoveFtns( 0, FALSE, TRUE );
- rbFtnsRemoved = TRUE;
- }
- else
- {
- pFrm->Cut();
- delete pFrm;
- }
-}
-
// #i7983#
void SwDoc::PreDelPageDesc(SwPageDesc * pDel)
{
+ SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219
if (0 == pDel)
return;
@@ -501,8 +487,11 @@ void SwDoc::PreDelPageDesc(SwPageDesc * pDel)
pLast == pEndNoteInfo->GetPageDescDep() )
{
aPageDescs[0]->Add( pLast );
- if ( GetRootFrm() )
- GetRootFrm()->CheckFtnPageDescs( !bFtnInf );
+ if ( pTmpRoot )
+ {
+ std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
+ std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::CheckFtnPageDescs), !bFtnInf));//swmod 080228
+ }
}
}
@@ -515,24 +504,12 @@ void SwDoc::PreDelPageDesc(SwPageDesc * pDel)
//die Attribute wiederum reichen die Meldung an die Absaetze weiter.
//Layot benachrichtigen!
- if( GetRootFrm() ) // ist nicht immer vorhanden!! (Orginizer)
- GetRootFrm()->CheckPageDescs( (SwPageFrm*)GetRootFrm()->Lower() );
+ if( pTmpRoot ) // ist nicht immer vorhanden!! (Orginizer)
+ {
+ std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
+ std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllCheckPageDescs));//swmod 080228
}
}
-
- if( GetRootFrm() ) // ist nicht immer vorhanden!! (Orginizer)
- {
- //Wenn jetzt noch irgendwelche Seiten auf die FrmFmt'e (Master und Left)
- //Zeigen (z.B. irgendwelche Fussnotenseiten), so muessen die Seiten
- //vernichtet werden.
-
- // Wenn wir auf Endnotenseiten stossen, schmeissen wir alle Fussnoten weg,
- // anders kann die Reihenfolge der Seiten (FollowsPageDescs usw.)
- // nicht garantiert werden.
- BOOL bFtnsRemoved = FALSE;
-
- ::lcl_RemoveFrms( pDel->GetMaster(), bFtnsRemoved );
- ::lcl_RemoveFrms( pDel->GetLeft(), bFtnsRemoved );
}
}
@@ -667,7 +644,7 @@ 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;
BOOL bEndAction = FALSE;
@@ -675,16 +652,16 @@ void SwDoc::PrtDataChanged()
GetDocShell()->UpdateFontList();
BOOL bDraw = TRUE;
- if ( GetRootFrm() )
+ if ( pTmpRoot )
{
- 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(), TRUE );
- GetRootFrm()->StartAllAction();
+ pTmpRoot->StartAllAction();
bEndAction = TRUE;
bDraw = FALSE;
@@ -695,7 +672,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 +683,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 +702,7 @@ void SwDoc::PrtDataChanged()
PrtOLENotify( TRUE );
if ( bEndAction )
- GetRootFrm()->EndAllAction();
+ pTmpRoot->EndAllAction(); //swmod 080218
delete pWait;
}
@@ -737,18 +716,18 @@ extern SvPtrarr *pGlobalOLEExcludeList;
void SwDoc::PrtOLENotify( 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
@@ -788,7 +767,7 @@ void SwDoc::PrtOLENotify( BOOL bAll )
{
::StartProgress( STR_STATSTR_SWGPRTOLENOTIFY,
0, pNodes->Count(), GetDocShell());
- GetRootFrm()->StartAllAction();
+ GetCurrentLayout()->StartAllAction(); //swmod 080218
for( USHORT i = 0; i < pNodes->Count(); ++i )
{
@@ -844,7 +823,7 @@ void SwDoc::PrtOLENotify( BOOL bAll )
}
}
delete pNodes;
- GetRootFrm()->EndAllAction();
+ GetCurrentLayout()->EndAllAction(); //swmod 080218
::EndProgress( GetDocShell() );
}
}
@@ -874,7 +853,7 @@ IMPL_LINK( SwDoc, DoUpdateModifiedOLE, Timer *, )
{
::StartProgress( STR_STATSTR_SWGPRTOLENOTIFY,
0, aOLENodes.Count(), GetDocShell());
- GetRootFrm()->StartAllAction();
+ GetCurrentLayout()->StartAllAction(); //swmod 080218
SwMsgPoolItem aMsgHint( RES_UPDATE_ATTR );
for( USHORT i = 0; i < aOLENodes.Count(); ++i )
@@ -905,7 +884,7 @@ IMPL_LINK( SwDoc, DoUpdateModifiedOLE, Timer *, )
pOLENd->Modify( &aMsgHint, &aMsgHint );
}
}
- GetRootFrm()->EndAllAction();
+ GetCurrentLayout()->EndAllAction(); //swmod 080218
::EndProgress( GetDocShell() );
}
}
diff --git a/sw/source/core/doc/docdraw.cxx b/sw/source/core/doc/docdraw.cxx
index 1a10428d5a58..312115566374 100644
--- a/sw/source/core/doc/docdraw.cxx
+++ b/sw/source/core/doc/docdraw.cxx
@@ -548,7 +548,7 @@ _ZSortFly::_ZSortFly( const SwFrmFmt* pFrmFmt, const SwFmtAnchor* pFlyAn,
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) ) )
@@ -650,7 +650,8 @@ void SwDoc::InitDrawModel()
nInvisibleControls = pDrawModel->GetLayerAdmin().NewLayer( sLayerNm )->GetID();
}
- pDrawModel->InsertPage( pDrawModel->AllocPage( FALSE ) );
+ SdrPage* pMasterPage = pDrawModel->AllocPage( FALSE );
+ pDrawModel->InsertPage( pMasterPage );
RTL_LOGFILE_CONTEXT_TRACE( aLog, "after create DrawDocument" );
RTL_LOGFILE_CONTEXT_TRACE( aLog, "before create Spellchecker/Hyphenator" );
@@ -675,10 +676,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 );
}
}
@@ -844,14 +859,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() )
@@ -859,7 +874,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 c9ee5b00e181..34cf23aed8ce 100644
--- a/sw/source/core/doc/docedt.cxx
+++ b/sw/source/core/doc/docedt.cxx
@@ -210,7 +210,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();
}
}
@@ -407,7 +407,7 @@ bool lcl_SaveFtn( const SwNodeIndex& rSttNd, const SwNodeIndex& rEndNd,
}
else
{
- pSrch->DelFrms();
+ pSrch->DelFrms(0);
rFtnArr.Remove( nPos );
if( bSaveFtn )
rSaveArr.Insert( pSrch );
@@ -435,7 +435,7 @@ bool lcl_SaveFtn( const SwNodeIndex& rSttNd, const SwNodeIndex& rEndNd,
}
else
{
- pSrch->DelFrms();
+ pSrch->DelFrms(0);
rFtnArr.Remove( nPos );
if( bSaveFtn )
rSaveArr.Insert( pSrch );
@@ -1881,7 +1881,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
@@ -2111,7 +2111,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 ebac34bf3540..7c2da903419d 100644
--- a/sw/source/core/doc/docfld.cxx
+++ b/sw/source/core/doc/docfld.cxx
@@ -567,7 +567,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 );
@@ -638,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 ) )
@@ -2521,7 +2521,7 @@ void SwDocUpdtFld::GetBodyNode( const SwTxtFld& rTFld, USHORT nFldWhich )
// immer den ersten !! (in Tab-Headline, Kopf-/Fuss )
Point aPt;
- const SwCntntFrm* pFrm = rTxtNd.GetFrm( &aPt, 0, FALSE );
+ const SwCntntFrm* pFrm = rTxtNd.getLayoutFrm( rDoc.GetCurrentLayout(), &aPt, 0, FALSE );
_SetGetExpFld* pNew = NULL;
BOOL bIsInBody = FALSE;
@@ -2587,7 +2587,7 @@ void SwDocUpdtFld::GetBodyNode( const SwSectionNode& rSectNd )
// immer den ersten !! (in Tab-Headline, Kopf-/Fuss )
Point aPt;
- const SwCntntFrm* pFrm = pCNd->GetFrm( &aPt, 0, FALSE );
+ const SwCntntFrm* pFrm = pCNd->getLayoutFrm( rDoc.GetCurrentLayout(), &aPt, 0, FALSE );
if( !pFrm )
break;
diff --git a/sw/source/core/doc/docfly.cxx b/sw/source/core/doc/docfly.cxx
index 68c525ad74e1..307de496314e 100644
--- a/sw/source/core/doc/docfly.cxx
+++ b/sw/source/core/doc/docfly.cxx
@@ -175,7 +175,7 @@ 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:
@@ -193,7 +193,7 @@ Point lcl_FindAnchorLayPos( SwDoc& rDoc, const SwFmtAnchor& rAnch,
{
const SwPosition *pPos = rAnch.GetCntntAnchor();
const SwCntntNode* pNd = pPos->nNode.GetNode().GetCntntNode();
- const SwFrm* pOld = pNd ? pNd->GetFrm( &aRet, 0, FALSE ) : 0;
+ const SwFrm* pOld = pNd ? pNd->getLayoutFrm( rDoc.GetCurrentLayout(), &aRet, 0, FALSE ) : 0;
if( pOld )
aRet = pOld->Frm().Pos();
}
@@ -213,7 +213,7 @@ Point lcl_FindAnchorLayPos( SwDoc& rDoc, const SwFmtAnchor& rAnch,
case FLY_AT_PAGE:
{
USHORT nPgNum = rAnch.GetPageNum();
- const SwPageFrm *pPage = (SwPageFrm*)rDoc.GetRootFrm()->Lower();
+ const SwPageFrm *pPage = (SwPageFrm*)rDoc.GetCurrentLayout()->Lower();
for( USHORT i = 1; (i <= nPgNum) && pPage; ++i,
pPage = (const SwPageFrm*)pPage->GetNext() )
if( i == nPgNum )
@@ -652,7 +652,7 @@ sal_Bool SwDoc::ChgAnchor( const SdrMarkList& _rMrkList,
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() )
@@ -750,11 +750,11 @@ 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().
- GetCntntNode()->GetFrm( &aPt, 0, FALSE );
+ GetCntntNode()->getLayoutFrm( GetCurrentLayout(), &aPt, 0, FALSE );
}
const SwFrm *pTmp = ::FindAnchor( pTxtFrm, aPt );
pNewAnchorFrm = pTmp->FindFlyFrm();
@@ -772,7 +772,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 )
@@ -811,7 +811,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
{
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index d971ac0c51fe..810e9fb2310a 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -2171,6 +2171,7 @@ void SwDoc::CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc,
BOOL bCopyPoolIds )
{
BOOL bNotifyLayout = FALSE;
+ SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219
rDstDesc.SetLandscape( rSrcDesc.GetLandscape() );
rDstDesc.SetNumType( rSrcDesc.GetNumType() );
@@ -2234,9 +2235,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.
diff --git a/sw/source/core/doc/docftn.cxx b/sw/source/core/doc/docftn.cxx
index 61bab9fdd525..092b05783977 100644
--- a/sw/source/core/doc/docftn.cxx
+++ b/sw/source/core/doc/docftn.cxx
@@ -255,6 +255,7 @@ SwFtnInfo::SwFtnInfo(SwTxtFmtColl *pFmt) :
void SwDoc::SetFtnInfo(const SwFtnInfo& rInfo)
{
+ SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219
if( !(GetFtnInfo() == rInfo) )
{
const SwFtnInfo &rOld = GetFtnInfo();
@@ -279,15 +280,19 @@ 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 )
- GetRootFrm()->CheckFtnPageDescs( FALSE );
+ //pTmpRoot->CheckFtnPageDescs( FALSE );
+ std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::CheckFtnPageDescs), FALSE));//swmod 080304
if ( bExtra )
{
//Fuer die Benachrichtung bezueglich ErgoSum usw. sparen wir uns
@@ -302,7 +307,7 @@ void SwDoc::SetFtnInfo(const SwFtnInfo& rInfo)
}
}
}
- }
+ } //swmod 080219
if( FTNNUM_PAGE != rInfo.eNum )
GetFtnIdxs().UpdateAllFtn();
else if( bFtnChrFmts )
@@ -324,6 +329,7 @@ void SwDoc::SetFtnInfo(const SwFtnInfo& rInfo)
void SwDoc::SetEndNoteInfo(const SwEndNoteInfo& rInfo)
{
+ SwRootFrm* pTmpRoot = GetCurrentLayout();//swmod 080219
if( !(GetEndNoteInfo() == rInfo) )
{
if( DoesUndo() )
@@ -345,10 +351,14 @@ void SwDoc::SetEndNoteInfo(const SwEndNoteInfo& rInfo)
*pEndNoteInfo = rInfo;
- if ( GetRootFrm() )
+ if ( pTmpRoot )
{
if ( bFtnDesc )
- GetRootFrm()->CheckFtnPageDescs( TRUE );
+ //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
+ }
if ( bExtra )
{
//Fuer die Benachrichtung bezueglich ErgoSum usw. sparen wir uns
@@ -362,7 +372,7 @@ void SwDoc::SetEndNoteInfo(const SwEndNoteInfo& rInfo)
pTxtFtn->SetNumber( rFtn.GetNumber(), &rFtn.GetNumStr());
}
}
- }
+ } //swmod 080219
if( bNumChg )
GetFtnIdxs().UpdateAllFtn();
else if( bFtnChrFmts )
@@ -387,6 +397,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 ULONG nSttNd = pStt->nNode.GetIndex();
@@ -485,8 +496,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/doclay.cxx b/sw/source/core/doc/doclay.cxx
index ceb7d6e3463c..63a278cdc0c7 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -726,8 +726,8 @@ SwFlyFrmFmt* SwDoc::_MakeFlySection( const SwPosition& rAnchPos,
}
// Frames anlegen
- if( GetRootFrm() )
- pFmt->MakeFrms(); // ???
+ if( GetCurrentViewShell() )
+ pFmt->MakeFrms(); // ??? //swmod 071108//swmod 071225
if( DoesUndo() )
{
@@ -1003,7 +1003,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#
@@ -1119,11 +1119,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() )
@@ -1860,11 +1860,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() )
{
@@ -1875,10 +1876,9 @@ IMPL_LINK( SwDoc, DoIdleJobs, Timer *, pTimer )
pSh = (ViewShell*)pSh->GetNext();
} while( pSh != pStartSh );
- if (GetRootFrm()->IsNeedGrammarCheck())
+ if( pTmpRoot->IsNeedGrammarCheck() )
{
BOOL bIsOnlineSpell = pSh->GetViewOptions()->IsOnlineSpell();
-
sal_Bool bIsAutoGrammar = sal_False;
SvtLinguConfig().GetProperty( ::rtl::OUString::createFromAscii(
UPN_IS_GRAMMAR_AUTO ) ) >>= bIsAutoGrammar;
@@ -1886,12 +1886,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() &&
@@ -1903,7 +1911,7 @@ 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();
@@ -1914,14 +1922,14 @@ IMPL_LINK( SwDoc, DoIdleJobs, Timer *, pTimer )
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;
@@ -1934,7 +1942,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() )
@@ -2171,9 +2179,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();
@@ -2286,9 +2294,36 @@ 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; }
+//const SwRootFrm* SwDoc::GetRootFrm() const { return pLayout; }
+//SwRootFrm* SwDoc::GetRootFrm() { return pLayout; }
+//void SwDoc::SetRootFrm( SwRootFrm* pNew ) { pLayout = pNew; } //swmod 071029//swmod 071225
+void SwDoc::SetCurrentViewShell( ViewShell* pNew ) { pCurrentView = pNew; }//swmod 071227
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;} //swmod 080219
+ViewShell *SwDoc::GetCurrentViewShell() { return pCurrentView;} //swmod 080219 It must be able to communicate to a ViewShell.This is going to be removerd later.
+const SwRootFrm *SwDoc::GetCurrentLayout() const {
+ if(GetCurrentViewShell())
+ return GetCurrentViewShell()->GetLayout();
+ return 0;
+}
+SwRootFrm *SwDoc::GetCurrentLayout(){
+
+ if(GetCurrentViewShell())
+ return GetCurrentViewShell()->GetLayout();
+ return 0;
+}
+std::set<SwRootFrm*> SwDoc::GetAllLayouts(){
+ std::set<SwRootFrm*> aAllLayouts;
+ ViewShell *pStart = GetCurrentViewShell();
+ ViewShell *pTemp = pStart;
+ 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 fe4044dd58ac..44697c7d8a38 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -238,7 +238,8 @@ SwDoc::SwDoc() :
pGrfFmtCollTbl( new SwGrfFmtColls() ),
pTOXTypes( new SwTOXTypes() ),
pDefTOXBases( new SwDefTOXBase_Impl() ),
- pLayout( 0 ), // Rootframe des spezifischen Layouts.
+ //pLayout( 0 ), // Rootframe des spezifischen Layouts. //swmod 071029
+ pCurrentView( 0 ), //swmod 071225
pDrawModel( 0 ),
pUndos( new SwUndos( 0, 20 ) ),
pUpdtFlds( new SwDocUpdtFld() ),
@@ -301,6 +302,7 @@ SwDoc::SwDoc() :
mbColumnSelection( false ),
// i#78591#
mbProtectForm(false),
+ mbLastBrowseMode( false ),
n32DummyCompatabilityOptions1(0),
n32DummyCompatabilityOptions2(0),
mbStartIdleTimer(sal_False)
@@ -317,7 +319,7 @@ SwDoc::SwDoc() :
mbNewDoc =
mbCopyIsMove =
mbNoDrawUndoObj =
- mbBrowseMode =
+ //mbBrowseMode =//swmod 080130
mbInReading =
mbInXMLImport =
mbUpdateTOX =
@@ -526,7 +528,7 @@ SwDoc::~SwDoc()
// damit die Fussnotenattribute die Fussnotennodes in Frieden lassen.
mbDtor = TRUE;
- DELETEZ( pLayout );
+ //DELETEZ( pCurrentView ); //swmod 080110//test if i can commit
delete pRedlineTbl;
delete pUnoCrsrTbl;
@@ -829,7 +831,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 ));
@@ -881,14 +883,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();
@@ -991,7 +993,7 @@ void SwDoc::UpdateLinks( 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/docredln.cxx b/sw/source/core/doc/docredln.cxx
index 71dc70106245..861162b6d486 100644
--- a/sw/source/core/doc/docredln.cxx
+++ b/sw/source/core/doc/docredln.cxx
@@ -2754,8 +2754,8 @@ void SwRedlineTbl::Remove( USHORT nP, USHORT 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 ) );
}
@@ -2768,8 +2768,8 @@ void SwRedlineTbl::DeleteAndDestroy( USHORT nP, USHORT 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 ) );
}
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index 58b3e084cf7a..dd8485ece497 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -271,7 +271,7 @@ const SwTOXMark& SwDoc::GotoTOXMark( const SwTOXMark& rCurTOXMark,
if( pTOXMark != &rCurTOXMark &&
0 != ( pMark = pTOXMark->GetTxtTOXMark()) &&
0 != ( pTOXSrc = pMark->GetpTxtNd() ) &&
- 0 != ( pCFrm = pTOXSrc->GetFrm( &aPt, 0, FALSE )) &&
+ 0 != ( pCFrm = pTOXSrc->getLayoutFrm( GetCurrentLayout(), &aPt, 0, FALSE )) &&
( bInReadOnly || !pCFrm->IsProtected() ))
{
CompareNodeCntnt aAbsNew( pTOXSrc->GetIndex(), *pMark->GetStart() );
@@ -810,7 +810,7 @@ BOOL SwTOXBaseSection::SetPosAtStartEnd( SwPosition& rPos, BOOL bAtStart ) const
--------------------------------------------------------------------*/
void SwTOXBaseSection::Update(const SfxItemSet* pAttr,
- const bool _bNewTOX )
+ const bool _bNewTOX )//swmodtest 080307
{
const SwSectionNode* pSectNd;
if( !SwTOXBase::GetRegisteredIn()->GetDepends() ||
@@ -1090,9 +1090,13 @@ 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
+ //if(pDoc->GetCurrentLayout())
+ //SwFrm::CheckPageDescs( (SwPageFrm*)pDoc->GetCurrentLayout()->Lower() ); //swmod 080218
SetProtect( SwTOXBase::IsProtected() );
}
@@ -1226,7 +1230,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() ) )
@@ -1290,7 +1294,7 @@ void SwTOXBaseSection::UpdateOutline( const SwTxtNode* pOwnChapterNode )
if( pTxtNd && pTxtNd->Len() && pTxtNd->GetDepends() &&
//USHORT(pTxtNd->GetTxtColl()->GetOutlineLevel()+1) <= GetLevel() && //#outline level,zhaojianwei
USHORT( pTxtNd->GetAttrOutlineLevel()) <= GetLevel() && //<-end,zhaojianwei
- pTxtNd->GetFrm() &&
+ pTxtNd->getLayoutFrm( pDoc->GetCurrentLayout() ) &&
!pTxtNd->HasHiddenParaField() &&
!pTxtNd->HasHiddenCharAttribute( true ) &&
( !IsFromChapter() ||
@@ -1332,7 +1336,7 @@ void SwTOXBaseSection::UpdateTemplate( const SwTxtNode* pOwnChapterNode )
{
::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 ) ) )
@@ -1365,7 +1369,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 ) )
@@ -1408,12 +1412,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())
@@ -1562,7 +1566,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,
@@ -1603,7 +1607,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 );
@@ -1744,7 +1748,7 @@ void SwTOXBaseSection::GenerateText( USHORT nArrayIdx,
long nRightMargin;
if( pPageDesc )
{
- const SwFrm* pFrm = pTOXNd->GetFrm( 0, 0, TRUE );
+ const SwFrm* pFrm = pTOXNd->getLayoutFrm( pDoc->GetCurrentLayout(), 0, 0, TRUE );
if( !pFrm || 0 == ( pFrm = pFrm->FindPageFrm() ) ||
pPageDesc != ((SwPageFrm*)pFrm)->GetPageDesc() )
// dann muss man ueber den PageDesc gehen
@@ -1836,7 +1840,7 @@ void SwTOXBaseSection::GenerateText( USHORT nArrayIdx,
pTOXSource->pNd->IsCntntNode() )
// <--
{
- const SwCntntFrm* pFrm = pTOXSource->pNd->GetFrm();
+ const SwCntntFrm* pFrm = pTOXSource->pNd->getLayoutFrm( pDoc->GetCurrentLayout() );
if( pFrm )
{
SwChapterFieldType aFldTyp;
@@ -2011,7 +2015,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;
diff --git a/sw/source/core/doc/ftnidx.cxx b/sw/source/core/doc/ftnidx.cxx
index 3def8b968a60..8ffcac046be4 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.
@@ -292,8 +294,10 @@ void SwFtnIdxs::UpdateAllFtn()
}
}
- if( pDoc->GetRootFrm() && FTNNUM_PAGE == rFtnInfo.eNum )
- pDoc->GetRootFrm()->UpdateFtnNums();
+ //if( pDoc->GetCurrentLayout() && FTNNUM_PAGE == rFtnInfo.eNum )
+ // pDoc->GetCurrentLayout()->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, USHORT* pFndPos ) const
diff --git a/sw/source/core/doc/htmltbl.cxx b/sw/source/core/doc/htmltbl.cxx
index e762de8489e3..9f8d9288ea9c 100644
--- a/sw/source/core/doc/htmltbl.cxx
+++ b/sw/source/core/doc/htmltbl.cxx
@@ -54,6 +54,7 @@
#include "poolfmt.hxx"
#include "viewsh.hxx"
#include "tabfrm.hxx"
+#include "viewopt.hxx"
#include "htmltbl.hxx"
#include "ndindex.hxx"
@@ -369,7 +370,7 @@ USHORT SwHTMLTableLayout::GetBrowseWidthByVisArea( const SwDoc& rDoc )
USHORT 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();
@@ -1811,16 +1812,16 @@ void SwHTMLTableLayout::_Resize( USHORT nAbsAvail, 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( TRUE, nAbsAvail );
if ( pRoot && pRoot->IsCallbackActionEnabled() )
- pRoot->EndAllAction( TRUE ); //True per VirDev (Browsen ruhiger)
+ pRoot->EndAllAction( TRUE ); //True per VirDev (Browsen ruhiger) //swmod 071108//swmod 071225
}
IMPL_STATIC_LINK( SwHTMLTableLayout, DelayedResize_Impl, void*, EMPTYARG )
@@ -1857,7 +1858,7 @@ BOOL SwHTMLTableLayout::Resize( USHORT nAbsAvail, 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() )
{
USHORT nVisAreaWidth = GetBrowseWidthByVisArea( *pDoc );
if( nVisAreaWidth < nAbsAvail && !FindFlyFrmFmt() )
diff --git a/sw/source/core/doc/lineinfo.cxx b/sw/source/core/doc/lineinfo.cxx
index c0c3e296f7b1..7e2d6164c637 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();
}
@@ -143,11 +146,13 @@ void SwLineNumberInfo::Modify( SfxPoolItem* pOld, SfxPoolItem* pNew )
{
SwClient::Modify( 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 bb10e9c1941b..e3ec73f17a1e 100644
--- a/sw/source/core/doc/notxtfrm.cxx
+++ b/sw/source/core/doc/notxtfrm.cxx
@@ -162,8 +162,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();
}
@@ -192,9 +192,9 @@ void SwNoTxtFrm::InitCtor()
*************************************************************************/
-SwCntntFrm *SwNoTxtNode::MakeFrm()
+SwCntntFrm *SwNoTxtNode::MakeFrm( SwFrm* pSib )
{
- return new SwNoTxtFrm(this);
+ return new SwNoTxtFrm(this, pSib);
}
/*************************************************************************
@@ -247,7 +247,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( USHORT i = 0; i < aRegion.Count(); ++i )
rOut.DrawRect( aRegion[i].SVRect() );
@@ -271,7 +271,7 @@ void SwNoTxtFrm::Paint( const SwRect &rRect, const SwPrtOptions * /*pPrintData*/
if ( Frm().IsEmpty() )
return;
- const ViewShell* pSh = GetShell();
+ const ViewShell* pSh = getRootFrm()->GetCurrShell();
if( !pSh->GetViewOptions()->IsGraphic() )
{
StopAnimation();
@@ -826,7 +826,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();
@@ -1068,7 +1068,7 @@ void SwNoTxtFrm::PaintPicture( OutputDevice* pOut, const SwRect &rGrfArea ) cons
BOOL SwNoTxtFrm::IsTransparent() const
{
- const ViewShell* pSh = GetShell();
+ const ViewShell* pSh = getRootFrm()->GetCurrShell();
if ( !pSh || !pSh->GetViewOptions()->IsGraphic() )
return TRUE;
diff --git a/sw/source/core/doc/poolfmt.cxx b/sw/source/core/doc/poolfmt.cxx
index e5cfc065db2a..fd7f0ad6ed7b 100644
--- a/sw/source/core/doc/poolfmt.cxx
+++ b/sw/source/core/doc/poolfmt.cxx
@@ -1294,7 +1294,7 @@ SwFmt* SwDoc::GetFmtFromPool( USHORT 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 e40b82d673b7..aed1ceef2772 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/visiturl.cxx b/sw/source/core/doc/visiturl.cxx
index 0bea7c73f65b..ac9e6957707b 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();