2009-05-15 12:28:55 +0200 tl r271932 : #i91812# include fixed 2009-05-07 16:52:41 +0200 tl r271680 : #i97200# one more MathML export problem to fix 2009-05-05 08:33:29 +0200 tl r271494 : #i99401# positiv user-dicts vs negativ user-dicts 2009-05-04 14:14:03 +0200 tl r271452 : #i97200# warning free code; MathML 2.0 export 2009-05-04 13:26:30 +0200 tl r271448 : #i97200# write valid MathML 2.0 on export 2009-04-29 14:21:54 +0200 tl r271371 : #i97200# new MathML token 2009-04-29 11:12:07 +0200 tl r271360 : #i97200# inroducing separate files for import and export 2009-04-28 16:47:42 +0200 tl r271331 : #i97200# better MathML pretty printing 2009-04-28 11:21:57 +0200 tl r271315 : #i97200# MathML attributes and default namespace for MathML 2009-04-28 11:21:24 +0200 tl r271314 : #i97200# MathML attributes and default namespace for MathML 2009-04-23 12:44:18 +0200 tl r271154 : #i97200# math.dtd removed 2009-04-23 12:31:56 +0200 tl r271151 : #i97200# MathML: don't use namespace on attributes 2009-04-22 13:21:11 +0200 tl r271099 : warning-free code 2009-04-22 12:20:13 +0200 tl r271092 : #i100757# loop fixed 2009-04-22 11:29:51 +0200 tl r271086 : #97327# adding mongolian fingerprint for language guessing 2009-04-22 11:25:56 +0200 tl r271083 : #97327# adding mongolian fingerprint for language guessing 2009-04-21 10:39:21 +0200 tl r271025 : #99599# code fix for LRE/RLE embedding 2009-04-20 16:36:33 +0200 tl r270992 : #i99604# HasDigits fixed 2009-04-20 14:44:19 +0200 tl r270985 : #i99604# warning-free code for Windows 2009-04-20 13:48:13 +0200 tl r270980 : #i99604# HasDigits fix for non-ASCII characters 2009-04-20 13:47:50 +0200 tl r270979 : #i99604# HasDigits fix for non-ASCII characters 2009-04-20 12:28:15 +0200 tl r270973 : warning-free code after merging 2009-04-20 10:16:19 +0200 tl r270964 : warning-free code after merging 2009-04-17 14:43:36 +0200 tl r270948 : #i96846# 2009-04-16 13:09:15 +0200 tl r270883 : CWS-TOOLING: rebase CWS tl66 to trunk@270723 (milestone: DEV300:m46) 2009-04-14 14:34:08 +0200 tl r270770 : #101067# warning-free code 2009-04-02 09:07:44 +0200 tl r270368 : #i100757# performance patch for start-up (initialize language guessing on demand only) 2009-03-11 10:37:59 +0100 tl r269301 : #i100083# fixed system dictionary lookup 2009-03-06 13:10:23 +0100 tl r268998 : warning-free code for Windows non-pro 2009-02-23 14:01:23 +0100 tl r268355 : #i99401# winning rules for user-dictionaries changed 2009-02-19 14:05:57 +0100 tl r268281 : #i98644# suggestion improvement when first checker does not know any suggestions 2009-02-19 14:05:02 +0100 tl r268280 : #i98644# suggestion improvement when first checker does not know any suggestions 2009-02-19 13:58:51 +0100 tl r268279 : #i98644# suggestion improvement when first checker does not know any suggestions 2009-02-19 11:38:03 +0100 tl r268266 : #i98644# suggestion improvement when first checker does not know any suggestions 2009-02-12 11:58:34 +0100 tl r267642 : #i96846# some properties declared as maybevoid 2009-02-06 12:43:55 +0100 tl r267454 : #i98644# provide sugestions from secondary spell checkers if the primary does not provide ones 2009-02-05 13:02:26 +0100 tl r267418 : #i98880# a bit clean-up in the grammar checking framework 2009-02-04 12:15:37 +0100 tl r267363 : #i91812# remove unused/duplicate code 2009-02-04 12:09:34 +0100 tl r267362 : #i91812# remove unused/duplicate code 2009-02-04 11:07:57 +0100 tl r267355 : #i91812# remove unused code 2009-02-04 11:06:48 +0100 tl r267354 : #i91812# remove unused code 2009-02-03 14:52:43 +0100 tl r267331 : #i91812# remove unused code 2009-02-03 14:26:00 +0100 tl r267324 : #i91198# adding fingerprint for luxembourgish 2009-02-03 14:20:58 +0100 tl r267323 : #i91198# adding fingerprint for luxembourgish 2009-02-03 14:18:33 +0100 tl r267322 : #i91198# adding fingerprint for luxembourgish 2009-02-03 13:56:39 +0100 tl r267319 : #i91812# remove unused code 2009-02-03 12:41:50 +0100 tl r267314 : #i48400# auto-spellcheck improvement when deleting wrong chars 2009-02-03 11:48:51 +0100 tl r267310 : #i91812# remove unused code 2009-02-03 11:14:29 +0100 tl r267307 : warning free code 2009-02-03 10:45:21 +0100 tl r267306 : #i91812# remove unused code 2009-02-03 10:37:04 +0100 tl r267304 : #i33387# name change for 'View/Selection' 2009-02-03 10:36:17 +0100 tl r267303 : #i33387# name change for 'View/Selection' 2009-02-03 10:32:12 +0100 tl r267302 : #i30642# spelling error in context menu fixed 2009-02-03 10:27:34 +0100 tl r267301 : #i92210# remove unused code types.cxx cfgitem.*
593 lines
16 KiB
C++
593 lines
16 KiB
C++
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* $RCSfile: newfrm.cxx,v $
|
|
* $Revision: 1.33 $
|
|
*
|
|
* 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.
|
|
*
|
|
************************************************************************/
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
#include "precompiled_sw.hxx"
|
|
#include <svx/svdmodel.hxx>
|
|
#include <svx/svdpage.hxx>
|
|
#include <fmtfordr.hxx>
|
|
#include <fmtpdsc.hxx>
|
|
#include <frmfmt.hxx>
|
|
#include <swtable.hxx>
|
|
#include <rootfrm.hxx>
|
|
#include <pagefrm.hxx>
|
|
#include <cntfrm.hxx>
|
|
#include <viewsh.hxx>
|
|
#include <doc.hxx>
|
|
#include <node.hxx>
|
|
#include <dflyobj.hxx>
|
|
#include <frmtool.hxx>
|
|
#include <virtoutp.hxx>
|
|
#include <blink.hxx>
|
|
#include <ndindex.hxx>
|
|
#include <sectfrm.hxx>
|
|
#include <notxtfrm.hxx>
|
|
#include <pagedesc.hxx>
|
|
#include "viewimp.hxx"
|
|
#include "IDocumentTimerAccess.hxx"
|
|
#include "IDocumentLayoutAccess.hxx"
|
|
#include "IDocumentFieldsAccess.hxx"
|
|
#include "IDocumentSettingAccess.hxx"
|
|
#include "IDocumentDrawModelAccess.hxx"
|
|
#include <hints.hxx>
|
|
#include <viewopt.hxx>
|
|
|
|
SwLayVout *SwRootFrm::pVout = 0;
|
|
BOOL SwRootFrm::bInPaint = FALSE;
|
|
BOOL SwRootFrm::bNoVirDev = FALSE;
|
|
|
|
SwCache *SwFrm::pCache = 0;
|
|
|
|
long FirstMinusSecond( long nFirst, long nSecond )
|
|
{ return nFirst - nSecond; }
|
|
long SecondMinusFirst( long nFirst, long nSecond )
|
|
{ return nSecond - nFirst; }
|
|
long SwIncrement( long nA, long nAdd )
|
|
{ return nA + nAdd; }
|
|
long SwDecrement( long nA, long nSub )
|
|
{ return nA - nSub; }
|
|
|
|
static SwRectFnCollection aHorizontal = {
|
|
/* fnRectGet */
|
|
&SwRect::_Top,
|
|
&SwRect::_Bottom,
|
|
&SwRect::_Left,
|
|
&SwRect::_Right,
|
|
&SwRect::_Width,
|
|
&SwRect::_Height,
|
|
&SwRect::TopLeft,
|
|
&SwRect::_Size,
|
|
/* fnRectSet */
|
|
&SwRect::_Top,
|
|
&SwRect::_Bottom,
|
|
&SwRect::_Left,
|
|
&SwRect::_Right,
|
|
&SwRect::_Width,
|
|
&SwRect::_Height,
|
|
|
|
&SwRect::SubTop,
|
|
&SwRect::AddBottom,
|
|
&SwRect::SubLeft,
|
|
&SwRect::AddRight,
|
|
&SwRect::AddWidth,
|
|
&SwRect::AddHeight,
|
|
|
|
&SwRect::SetPosX,
|
|
&SwRect::SetPosY,
|
|
|
|
&SwFrm::GetTopMargin,
|
|
&SwFrm::GetBottomMargin,
|
|
&SwFrm::GetLeftMargin,
|
|
&SwFrm::GetRightMargin,
|
|
&SwFrm::SetLeftRightMargins,
|
|
&SwFrm::SetTopBottomMargins,
|
|
&SwFrm::GetPrtTop,
|
|
&SwFrm::GetPrtBottom,
|
|
&SwFrm::GetPrtLeft,
|
|
&SwFrm::GetPrtRight,
|
|
&SwRect::GetTopDistance,
|
|
&SwRect::GetBottomDistance,
|
|
&SwRect::GetLeftDistance,
|
|
&SwRect::GetRightDistance,
|
|
&SwFrm::SetMaxBottom,
|
|
&SwRect::OverStepBottom,
|
|
|
|
&SwRect::SetUpperLeftCorner,
|
|
&SwFrm::MakeBelowPos,
|
|
&FirstMinusSecond,
|
|
&FirstMinusSecond,
|
|
&SwIncrement,
|
|
&SwIncrement,
|
|
&SwRect::SetLeftAndWidth,
|
|
&SwRect::SetTopAndHeight
|
|
};
|
|
|
|
static SwRectFnCollection aVertical = {
|
|
/* fnRectGet */
|
|
&SwRect::_Right,
|
|
&SwRect::_Left,
|
|
&SwRect::_Top,
|
|
&SwRect::_Bottom,
|
|
&SwRect::_Height,
|
|
&SwRect::_Width,
|
|
&SwRect::TopRight,
|
|
&SwRect::SwappedSize,
|
|
/* fnRectSet */
|
|
&SwRect::_Right,
|
|
&SwRect::_Left,
|
|
&SwRect::_Top,
|
|
&SwRect::_Bottom,
|
|
&SwRect::_Height,
|
|
&SwRect::_Width,
|
|
|
|
&SwRect::AddRight,
|
|
&SwRect::SubLeft,
|
|
&SwRect::SubTop,
|
|
&SwRect::AddBottom,
|
|
&SwRect::AddHeight,
|
|
&SwRect::AddWidth,
|
|
|
|
&SwRect::SetPosY,
|
|
&SwRect::SetPosX,
|
|
|
|
&SwFrm::GetRightMargin,
|
|
&SwFrm::GetLeftMargin,
|
|
&SwFrm::GetTopMargin,
|
|
&SwFrm::GetBottomMargin,
|
|
&SwFrm::SetTopBottomMargins,
|
|
&SwFrm::SetRightLeftMargins,
|
|
&SwFrm::GetPrtRight,
|
|
&SwFrm::GetPrtLeft,
|
|
&SwFrm::GetPrtTop,
|
|
&SwFrm::GetPrtBottom,
|
|
&SwRect::GetRightDistance,
|
|
&SwRect::GetLeftDistance,
|
|
&SwRect::GetTopDistance,
|
|
&SwRect::GetBottomDistance,
|
|
&SwFrm::SetMinLeft,
|
|
&SwRect::OverStepLeft,
|
|
|
|
&SwRect::SetUpperRightCorner,
|
|
&SwFrm::MakeLeftPos,
|
|
&FirstMinusSecond,
|
|
&SecondMinusFirst,
|
|
&SwIncrement,
|
|
&SwDecrement,
|
|
&SwRect::SetTopAndHeight,
|
|
&SwRect::SetRightAndWidth
|
|
};
|
|
|
|
static SwRectFnCollection aBottomToTop = {
|
|
/* fnRectGet */
|
|
&SwRect::_Bottom,
|
|
&SwRect::_Top,
|
|
&SwRect::_Left,
|
|
&SwRect::_Right,
|
|
&SwRect::_Width,
|
|
&SwRect::_Height,
|
|
&SwRect::BottomLeft,
|
|
&SwRect::_Size,
|
|
/* fnRectSet */
|
|
&SwRect::_Bottom,
|
|
&SwRect::_Top,
|
|
&SwRect::_Left,
|
|
&SwRect::_Right,
|
|
&SwRect::_Width,
|
|
&SwRect::_Height,
|
|
|
|
&SwRect::AddBottom,
|
|
&SwRect::SubTop,
|
|
&SwRect::SubLeft,
|
|
&SwRect::AddRight,
|
|
&SwRect::AddWidth,
|
|
&SwRect::AddHeight,
|
|
|
|
&SwRect::SetPosX,
|
|
&SwRect::SetPosY,
|
|
|
|
&SwFrm::GetBottomMargin,
|
|
&SwFrm::GetTopMargin,
|
|
&SwFrm::GetLeftMargin,
|
|
&SwFrm::GetRightMargin,
|
|
&SwFrm::SetLeftRightMargins,
|
|
&SwFrm::SetBottomTopMargins,
|
|
&SwFrm::GetPrtBottom,
|
|
&SwFrm::GetPrtTop,
|
|
&SwFrm::GetPrtLeft,
|
|
&SwFrm::GetPrtRight,
|
|
&SwRect::GetBottomDistance,
|
|
&SwRect::GetTopDistance,
|
|
&SwRect::GetLeftDistance,
|
|
&SwRect::GetRightDistance,
|
|
&SwFrm::SetMinTop,
|
|
&SwRect::OverStepTop,
|
|
|
|
&SwRect::SetLowerLeftCorner,
|
|
&SwFrm::MakeUpperPos,
|
|
&FirstMinusSecond,
|
|
&SecondMinusFirst,
|
|
&SwIncrement,
|
|
&SwDecrement,
|
|
&SwRect::SetLeftAndWidth,
|
|
&SwRect::SetBottomAndHeight
|
|
};
|
|
|
|
static SwRectFnCollection aVerticalRightToLeft = {
|
|
/* fnRectGet */
|
|
&SwRect::_Left,
|
|
&SwRect::_Right,
|
|
&SwRect::_Top,
|
|
&SwRect::_Bottom,
|
|
&SwRect::_Height,
|
|
&SwRect::_Width,
|
|
&SwRect::BottomRight,
|
|
&SwRect::SwappedSize,
|
|
/* fnRectSet */
|
|
&SwRect::_Left,
|
|
&SwRect::_Right,
|
|
&SwRect::_Top,
|
|
&SwRect::_Bottom,
|
|
&SwRect::_Height,
|
|
&SwRect::_Width,
|
|
|
|
&SwRect::SubLeft,
|
|
&SwRect::AddRight,
|
|
&SwRect::SubTop,
|
|
&SwRect::AddBottom,
|
|
&SwRect::AddHeight,
|
|
&SwRect::AddWidth,
|
|
|
|
&SwRect::SetPosY,
|
|
&SwRect::SetPosX,
|
|
|
|
&SwFrm::GetLeftMargin,
|
|
&SwFrm::GetRightMargin,
|
|
&SwFrm::GetTopMargin,
|
|
&SwFrm::GetBottomMargin,
|
|
&SwFrm::SetTopBottomMargins,
|
|
&SwFrm::SetLeftRightMargins,
|
|
&SwFrm::GetPrtLeft,
|
|
&SwFrm::GetPrtRight,
|
|
&SwFrm::GetPrtBottom,
|
|
&SwFrm::GetPrtTop,
|
|
&SwRect::GetLeftDistance,
|
|
&SwRect::GetRightDistance,
|
|
&SwRect::GetBottomDistance,
|
|
&SwRect::GetTopDistance,
|
|
&SwFrm::SetMaxRight,
|
|
&SwRect::OverStepRight,
|
|
|
|
&SwRect::SetLowerLeftCorner,
|
|
&SwFrm::MakeRightPos,
|
|
&FirstMinusSecond,
|
|
&FirstMinusSecond,
|
|
&SwDecrement,
|
|
&SwIncrement,
|
|
&SwRect::SetBottomAndHeight,
|
|
&SwRect::SetLeftAndWidth
|
|
};
|
|
|
|
SwRectFn fnRectHori = &aHorizontal;
|
|
SwRectFn fnRectVert = &aVertical;
|
|
SwRectFn fnRectB2T = &aBottomToTop;
|
|
SwRectFn fnRectVL2R = &aVerticalRightToLeft;
|
|
|
|
// --> OD 2006-05-10 #i65250#
|
|
sal_uInt32 SwFrm::mnLastFrmId=0;
|
|
// <--
|
|
|
|
TYPEINIT1(SwFrm,SwClient); //rtti fuer SwFrm
|
|
TYPEINIT1(SwCntntFrm,SwFrm); //rtti fuer SwCntntFrm
|
|
|
|
|
|
void _FrmInit()
|
|
{
|
|
SwRootFrm::pVout = new SwLayVout();
|
|
SwCache *pNew = new SwCache( 100, 100
|
|
#ifndef PRODUCT
|
|
, "static SwBorderAttrs::pCache"
|
|
#endif
|
|
);
|
|
SwFrm::SetCache( pNew );
|
|
}
|
|
|
|
|
|
|
|
void _FrmFinit()
|
|
{
|
|
#ifndef PRODUCT
|
|
// im Chache duerfen nur noch 0-Pointer stehen
|
|
for( USHORT n = SwFrm::GetCachePtr()->Count(); n; )
|
|
if( (*SwFrm::GetCachePtr())[ --n ] )
|
|
{
|
|
SwCacheObj* pObj = (*SwFrm::GetCachePtr())[ n ];
|
|
ASSERT( !pObj, "Wer hat sich nicht ausgetragen?")
|
|
}
|
|
#endif
|
|
delete SwRootFrm::pVout;
|
|
delete SwFrm::GetCachePtr();
|
|
}
|
|
|
|
/*************************************************************************
|
|
|*
|
|
|* RootFrm::Alles was so zur CurrShell gehoert
|
|
|*
|
|
|* Ersterstellung MA 09. Sep. 98
|
|
|* Letzte Aenderung MA 18. Feb. 99
|
|
|*
|
|
|*************************************************************************/
|
|
|
|
typedef CurrShell* CurrShellPtr;
|
|
SV_DECL_PTRARR_SORT(SwCurrShells,CurrShellPtr,4,4)
|
|
SV_IMPL_PTRARR_SORT(SwCurrShells,CurrShellPtr)
|
|
|
|
CurrShell::CurrShell( ViewShell *pNew )
|
|
{
|
|
ASSERT( pNew, "0-Shell einsetzen?" );
|
|
pRoot = pNew->GetLayout();
|
|
if ( pRoot )
|
|
{
|
|
pPrev = pRoot->pCurrShell;
|
|
pRoot->pCurrShell = pNew;
|
|
pRoot->pCurrShells->Insert( this );
|
|
}
|
|
else
|
|
pPrev = 0;
|
|
}
|
|
|
|
CurrShell::~CurrShell()
|
|
{
|
|
if ( pRoot )
|
|
{
|
|
pRoot->pCurrShells->Remove( this );
|
|
if ( pPrev )
|
|
pRoot->pCurrShell = pPrev;
|
|
if ( !pRoot->pCurrShells->Count() && pRoot->pWaitingCurrShell )
|
|
{
|
|
pRoot->pCurrShell = pRoot->pWaitingCurrShell;
|
|
pRoot->pWaitingCurrShell = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
void SetShell( ViewShell *pSh )
|
|
{
|
|
SwRootFrm *pRoot = pSh->GetLayout();
|
|
if ( !pRoot->pCurrShells->Count() )
|
|
pRoot->pCurrShell = pSh;
|
|
else
|
|
pRoot->pWaitingCurrShell = pSh;
|
|
}
|
|
|
|
void SwRootFrm::DeRegisterShell( ViewShell *pSh )
|
|
{
|
|
//Wenn moeglich irgendeine Shell aktivieren
|
|
if ( pCurrShell == pSh )
|
|
pCurrShell = pSh->GetNext() != pSh ? (ViewShell*)pSh->GetNext() : 0;
|
|
|
|
//Das hat sich eruebrigt
|
|
if ( pWaitingCurrShell == pSh )
|
|
pWaitingCurrShell = 0;
|
|
|
|
//Referenzen entfernen.
|
|
for ( USHORT i = 0; i < pCurrShells->Count(); ++i )
|
|
{
|
|
CurrShell *pC = (*pCurrShells)[i];
|
|
if (pC->pPrev == pSh)
|
|
pC->pPrev = 0;
|
|
}
|
|
}
|
|
|
|
void InitCurrShells( SwRootFrm *pRoot )
|
|
{
|
|
pRoot->pCurrShells = new SwCurrShells;
|
|
}
|
|
|
|
|
|
/*************************************************************************
|
|
|*
|
|
|* SwRootFrm::SwRootFrm()
|
|
|*
|
|
|* Beschreibung:
|
|
|* Der RootFrm laesst sich grundsaetzlich vom Dokument ein eigenes
|
|
|* FrmFmt geben. Dieses loescht er dann selbst im DTor.
|
|
|* Das eigene FrmFmt wird vom uebergebenen Format abgeleitet.
|
|
|* Ersterstellung SS 05-Apr-1991
|
|
|* Letzte Aenderung MA 12. Dec. 94
|
|
|*
|
|
|*************************************************************************/
|
|
|
|
|
|
SwRootFrm::SwRootFrm( SwFrmFmt *pFmt, ViewShell * pSh ) :
|
|
SwLayoutFrm( pFmt->GetDoc()->MakeFrmFmt(
|
|
XubString( "Root", RTL_TEXTENCODING_MS_1252 ), pFmt ) ),
|
|
// --> PAGES01
|
|
maPagesArea(),
|
|
mnViewWidth( -1 ),
|
|
mnColumns( 0 ),
|
|
mbBookMode( false ),
|
|
mbSidebarChanged( false ),
|
|
mbNeedGrammarCheck( false ),
|
|
// <--
|
|
nBrowseWidth( MM50*4 ), //2cm Minimum
|
|
pTurbo( 0 ),
|
|
pLastPage( 0 ),
|
|
pCurrShell( pSh ),
|
|
pWaitingCurrShell( 0 ),
|
|
pDrawPage( 0 ),
|
|
pDestroy( 0 ),
|
|
nPhyPageNums( 0 ),
|
|
nAccessibleShells( 0 )
|
|
{
|
|
nType = FRMC_ROOT;
|
|
bIdleFormat = bTurboAllowed = bAssertFlyPages = bIsNewLayout = TRUE;
|
|
bCheckSuperfluous = bBrowseWidthValid = FALSE;
|
|
|
|
InitCurrShells( this );
|
|
|
|
IDocumentTimerAccess *pTimerAccess = pFmt->getIDocumentTimerAccess();
|
|
IDocumentLayoutAccess *pLayoutAccess = pFmt->getIDocumentLayoutAccess();
|
|
IDocumentFieldsAccess *pFieldsAccess = pFmt->getIDocumentFieldsAccess();
|
|
const IDocumentSettingAccess *pSettingAccess = pFmt->getIDocumentSettingAccess();
|
|
pTimerAccess->StopIdling();
|
|
pLayoutAccess->SetRootFrm( this ); //Fuer das Erzeugen der Flys durch MakeFrms()
|
|
bCallbackActionEnabled = FALSE; //vor Verlassen auf TRUE setzen!
|
|
|
|
SdrModel *pMd = pFmt->getIDocumentDrawModelAccess()->GetDrawModel();
|
|
|
|
if ( pMd )
|
|
{
|
|
pDrawPage = pMd->GetPage( 0 );
|
|
pDrawPage->SetSize( Frm().SSize() );
|
|
}
|
|
|
|
//Initialisierung des Layouts: Seiten erzeugen. Inhalt mit cntnt verbinden
|
|
//usw.
|
|
//Zuerst einiges initialiseren und den ersten Node besorgen (der wird
|
|
//fuer den PageDesc benoetigt).
|
|
|
|
SwDoc* pDoc = pFmt->GetDoc();
|
|
SwNodeIndex aIndex( *pDoc->GetNodes().GetEndOfContent().StartOfSectionNode() );
|
|
SwCntntNode *pNode = pDoc->GetNodes().GoNextSection( &aIndex, TRUE, FALSE );
|
|
// --> FME 2005-05-25 #123067# pNode = 0 can really happen:
|
|
SwTableNode *pTblNd= pNode ? pNode->FindTableNode() : 0;
|
|
// <--
|
|
|
|
//PageDesc besorgen (entweder vom FrmFmt des ersten Node oder den
|
|
//initialen.)
|
|
SwPageDesc *pDesc = 0;
|
|
USHORT nPgNum = 1;
|
|
|
|
if ( pTblNd )
|
|
{
|
|
const SwFmtPageDesc &rDesc = pTblNd->GetTable().GetFrmFmt()->GetPageDesc();
|
|
pDesc = (SwPageDesc*)rDesc.GetPageDesc();
|
|
//#19104# Seitennummeroffset beruecksictigen!!
|
|
bIsVirtPageNum = 0 != ( nPgNum = rDesc.GetNumOffset() );
|
|
}
|
|
else if ( pNode )
|
|
{
|
|
const SwFmtPageDesc &rDesc = pNode->GetSwAttrSet().GetPageDesc();
|
|
pDesc = (SwPageDesc*)rDesc.GetPageDesc();
|
|
//#19104# Seitennummeroffset beruecksictigen!!
|
|
bIsVirtPageNum = 0 != ( nPgNum = rDesc.GetNumOffset() );
|
|
}
|
|
else
|
|
bIsVirtPageNum = FALSE;
|
|
if ( !pDesc )
|
|
pDesc = (SwPageDesc*)
|
|
&const_cast<const SwDoc *>(pDoc)->GetPageDesc( 0 );
|
|
const BOOL bOdd = !nPgNum || 0 != ( nPgNum % 2 );
|
|
|
|
//Eine Seite erzeugen und in das Layout stellen
|
|
SwPageFrm *pPage = ::InsertNewPage( *pDesc, this, bOdd, FALSE, FALSE, 0 );
|
|
|
|
//Erstes Blatt im Bodytext-Bereich suchen.
|
|
SwLayoutFrm *pLay = pPage->FindBodyCont();
|
|
while( pLay->Lower() )
|
|
pLay = (SwLayoutFrm*)pLay->Lower();
|
|
|
|
SwNodeIndex aTmp( *pDoc->GetNodes().GetEndOfContent().StartOfSectionNode(), 1 );
|
|
::_InsertCnt( pLay, pDoc, aTmp.GetIndex(), TRUE );
|
|
//Noch nicht ersetzte Master aus der Liste entfernen.
|
|
RemoveMasterObjs( pDrawPage );
|
|
if( pSettingAccess->get(IDocumentSettingAccess::GLOBAL_DOCUMENT) )
|
|
pFieldsAccess->UpdateRefFlds( NULL );
|
|
//b6433357: Update page fields after loading
|
|
// --->
|
|
if ( !pCurrShell || !pCurrShell->Imp()->IsUpdateExpFlds() )
|
|
{
|
|
SwDocPosUpdate aMsgHnt( pPage->Frm().Top() );
|
|
pFieldsAccess->UpdatePageFlds( &aMsgHnt );
|
|
}
|
|
// <---
|
|
|
|
pTimerAccess->StartIdling();
|
|
bCallbackActionEnabled = TRUE;
|
|
|
|
ViewShell *pViewSh = GetCurrShell();
|
|
if (pViewSh)
|
|
mbNeedGrammarCheck = pViewSh->GetViewOptions()->IsOnlineSpell();
|
|
}
|
|
|
|
/*************************************************************************
|
|
|*
|
|
|* SwRootFrm::~SwRootFrm()
|
|
|*
|
|
|* Ersterstellung SS 05-Apr-1991
|
|
|* Letzte Aenderung MA 12. Dec. 94
|
|
|*
|
|
|*************************************************************************/
|
|
|
|
|
|
|
|
SwRootFrm::~SwRootFrm()
|
|
{
|
|
bTurboAllowed = FALSE;
|
|
pTurbo = 0;
|
|
if(pBlink)
|
|
pBlink->FrmDelete( this );
|
|
((SwFrmFmt*)pRegisteredIn)->GetDoc()->DelFrmFmt( (SwFrmFmt*)pRegisteredIn );
|
|
delete pDestroy;
|
|
|
|
//Referenzen entfernen.
|
|
for ( USHORT i = 0; i < pCurrShells->Count(); ++i )
|
|
(*pCurrShells)[i]->pRoot = 0;
|
|
|
|
delete pCurrShells;
|
|
|
|
ASSERT( 0==nAccessibleShells, "Some accessible shells are left" );
|
|
}
|
|
|
|
/*************************************************************************
|
|
|*
|
|
|* SwRootFrm::RemoveMasterObjs()
|
|
|*
|
|
|* Ersterstellung MA 19.10.95
|
|
|* Letzte Aenderung MA 19.10.95
|
|
|*
|
|
|*************************************************************************/
|
|
|
|
|
|
void SwRootFrm::RemoveMasterObjs( SdrPage *pPg )
|
|
{
|
|
//Alle Masterobjekte aus der Page entfernen. Nicht loeschen!!
|
|
for( ULONG i = pPg ? pPg->GetObjCount() : 0; i; )
|
|
{
|
|
SdrObject* pObj = pPg->GetObj( --i );
|
|
if( pObj->ISA(SwFlyDrawObj ) )
|
|
pPg->RemoveObject( i );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|