Files
libreoffice/sw/source/core/doc/docdesc.cxx

905 lines
31 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2000-09-18 23:08:29 +00:00
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2000-09-18 23:08:29 +00:00
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
2000-09-18 23:08:29 +00:00
*
* OpenOffice.org - a multi-platform office productivity suite
2000-09-18 23:08:29 +00:00
*
* This file is part of OpenOffice.org.
2000-09-18 23:08:29 +00:00
*
* 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.
2000-09-18 23:08:29 +00:00
*
* 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).
2000-09-18 23:08:29 +00:00
*
* 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.
2000-09-18 23:08:29 +00:00
*
************************************************************************/
2000-09-18 23:08:29 +00:00
#include <svx/svdmodel.hxx>
#include <editeng/ulspitem.hxx>
#include <editeng/paperinf.hxx>
#include "editeng/frmdiritem.hxx"
2009-06-04 08:23:53 +00:00
#include <sfx2/printer.hxx>
2000-09-18 23:08:29 +00:00
#include <fmtfsize.hxx>
#include <fmthdft.hxx>
#include <fmtcntnt.hxx>
#include <ftninfo.hxx>
#include <fesh.hxx>
#include <ndole.hxx>
#include <mdiexp.hxx>
#include <doc.hxx>
#include <IDocumentUndoRedo.hxx>
2000-09-18 23:08:29 +00:00
#include <docary.hxx>
2011-11-19 12:05:18 +01:00
#include <rootfrm.hxx> //For DelPageDesc
2000-09-18 23:08:29 +00:00
#include <frmtool.hxx>
#include <poolfmt.hxx>
#include <docsh.hxx>
#include <ftnidx.hxx>
#include <fmtftn.hxx>
#include <txtftn.hxx>
#include <fntcache.hxx>
#include <viewopt.hxx>
#include <fldbas.hxx>
#include <swwait.hxx>
#include <GetMetricVal.hxx>
2000-09-18 23:08:29 +00:00
#include <statstr.hrc>
#include <hints.hxx>
#include <SwUndoPageDesc.hxx>
#include <pagedeschint.hxx>
#include <tgrditem.hxx>
using namespace com::sun::star;
static void lcl_DefaultPageFmt( sal_uInt16 nPoolFmtId,
SwFrmFmt &rFmt1,
SwFrmFmt &rFmt2,
SwFrmFmt &rFmt3 )
2000-09-18 23:08:29 +00:00
{
// --> #i41075# Printer on demand
// This function does not require a printer anymore.
// The default page size is obtained from the application
//locale
2000-09-18 23:08:29 +00:00
SwFmtFrmSize aFrmSize( ATT_FIX_SIZE );
CWS-TOOLING: integrate CWS unifypaper01 2009-05-27 17:14:41 +0200 cmc r272362 : #i92819#, psprint moved into vcl 2009-05-19 15:45:46 +0200 cmc r272083 : #i92819# having difficultly in getting this right under windows 2009-05-18 18:04:22 +0200 cmc r272043 : #i92819# missing some export magic somewhere 2009-05-18 15:34:18 +0200 cmc r272028 : #i92819# get depends right 2009-05-18 11:50:43 +0200 cmc r272010 : ##i92819# fix import/export stuff 2009-05-18 10:07:00 +0200 cmc r272000 : #i92819# fix window imp name 2009-05-16 15:17:23 +0200 cmc r271975 : #i92819# fix win paper names 2009-05-16 11:11:29 +0200 cmc r271974 : #i92819# std::abs prolematic for msvc 2009-05-15 15:36:56 +0200 cmc r271941 : #i92819# handle missing setting, at least on mac 2009-05-15 10:13:44 +0200 cmc r271927 : #i92819# adjust for moved page dialog 2009-05-14 13:47:14 +0200 cmc r271887 : remove dead files that reappeared 2009-05-14 09:57:17 +0200 cmc r271872 : CWS-TOOLING: rebase CWS unifypaper01 to trunk@271830 (milestone: DEV300:m48) 2009-05-11 12:27:18 +0200 cmc r271763 : #i92819# check return value 2009-05-06 17:28:25 +0200 cmc r271602 : #i92819# these B4/B5s are the JIS ones according to their dimensions 2009-05-06 17:17:03 +0200 cmc r271601 : #i92819# micro-optimization 2009-05-03 18:20:48 +0200 cmc r271434 : #i92819# paper libs 2009-05-03 16:08:32 +0200 cmc r271433 : CWS-TOOLING: rebase CWS unifypaper01 to trunk@271427 (milestone: DEV300:m47) 2009-04-06 15:33:37 +0200 cmc r270556 : CWS-TOOLING: rebase CWS unifypaper01 to trunk@270033 (milestone: DEV300:m45) 2009-03-12 14:36:35 +0100 cmc r269415 : #i92819# merge paper utilities 2009-03-11 13:44:27 +0100 cmc r269328 : CWS-TOOLING: rebase CWS unifypaper01 to trunk@269297 (milestone: DEV300:m43) 2009-03-09 14:42:07 +0100 cmc r269190 : remove config_office from synced version 2009-03-09 14:34:50 +0100 cmc r269187 : CWS-TOOLING: rebase CWS unifypaper01 to trunk@268395 (milestone: DEV300:m42) 2009-03-09 12:11:29 +0100 cmc r269077 : CWS-TOOLING: rebase CWS unifypaper01 to trunk@265758 (milestone: DEV300:m38) 2009-03-06 17:17:39 +0100 cmc r269027 : #i92819# paper goo 2008-12-04 11:29:30 +0100 cmc r264826 : CWS-TOOLING: rebase CWS unifypaper01 to trunk@264807 (milestone: DEV300:m37) 2008-11-26 10:33:06 +0100 cmc r264357 : CWS-TOOLING: rebase CWS unifypaper01 to trunk@264325 (milestone: DEV300:m36) 2008-11-21 14:09:36 +0100 cmc r264138 : #i92819# paper consolidation
2009-06-12 09:36:34 +00:00
const Size aPhysSize = SvxPaperInfo::GetDefaultPaperSize();
aFrmSize.SetSize( aPhysSize );
// Prepare for default margins.
// Margins have a default minimum size.
// If the printer forces a larger margins, that's ok too.
2011-01-29 18:12:26 +09:00
// The HTML page desc had A4 as page size always.
// This has been changed to take the page size from the printer.
// Unfortunately, the margins of the HTML page desc are smaller than
// the margins used here in general, so one extra case is required.
// In the long term, this needs to be changed to always keep the
// margins from the page desc.
sal_Int32 nMinTop, nMinBottom, nMinLeft, nMinRight;
if( RES_POOLPAGE_HTML == nPoolFmtId )
2000-09-18 23:08:29 +00:00
{
nMinRight = nMinTop = nMinBottom = GetMetricVal( CM_1 );
nMinLeft = nMinRight * 2;
2000-09-18 23:08:29 +00:00
}
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
else if( MEASURE_METRIC == SvtSysLocale().GetLocaleData().getMeasurementSystemEnum() )
2000-09-18 23:08:29 +00:00
{
2011-11-19 12:05:18 +01:00
nMinTop = nMinBottom = nMinLeft = nMinRight = 1134; // 2 centimetres
2000-09-18 23:08:29 +00:00
}
else
2000-09-18 23:08:29 +00:00
{
2011-11-24 13:07:19 +01:00
nMinTop = nMinBottom = 1440; // as in MS Word: 1 Inch
nMinLeft = nMinRight = 1800; // 1,25 Inch
2000-09-18 23:08:29 +00:00
}
// set margins
SvxLRSpaceItem aLR( RES_LR_SPACE );
SvxULSpaceItem aUL( RES_UL_SPACE );
aUL.SetUpper( (sal_uInt16)nMinTop );
aUL.SetLower( (sal_uInt16)nMinBottom );
aLR.SetRight( nMinRight );
aLR.SetLeft( nMinLeft );
rFmt1.SetFmtAttr( aFrmSize );
rFmt1.SetFmtAttr( aLR );
rFmt1.SetFmtAttr( aUL );
rFmt2.SetFmtAttr( aFrmSize );
rFmt2.SetFmtAttr( aLR );
rFmt2.SetFmtAttr( aUL );
rFmt3.SetFmtAttr( aFrmSize );
rFmt3.SetFmtAttr( aLR );
rFmt3.SetFmtAttr( aUL );
2000-09-18 23:08:29 +00:00
}
/*************************************************************************
|*
|* SwDoc::ChgPageDesc()
|*
|*************************************************************************/
static void lcl_DescSetAttr( const SwFrmFmt &rSource, SwFrmFmt &rDest,
const bool bPage = true )
2000-09-18 23:08:29 +00:00
{
2011-11-19 12:05:18 +01:00
// We should actually use ItemSet's Intersect here, but that doesn't work
// correctly if we have different WhichRanges.
// Take over the attributes which are of interest.
Merge commit 'ooo/DEV300_m101' into integration/dev300_m101 Conflicts: starmath/inc/applicat.hxx starmath/inc/dialog.hxx starmath/inc/document.hxx starmath/inc/edit.hxx starmath/inc/format.hxx starmath/inc/node.hxx starmath/inc/parse.hxx starmath/inc/rect.hxx starmath/inc/smdll.hxx starmath/inc/smmod.hxx starmath/inc/starmath.hrc starmath/inc/symbol.hxx starmath/inc/toolbox.hxx starmath/inc/utility.hxx starmath/inc/view.hxx starmath/prj/build.lst starmath/qa/cppunit/version.map starmath/sdi/smslots.sdi starmath/source/accessibility.cxx starmath/source/cfgitem.cxx starmath/source/cfgitem.hxx starmath/source/config.cxx starmath/source/dialog.cxx starmath/source/document.cxx starmath/source/edit.cxx starmath/source/format.cxx starmath/source/makefile.mk starmath/source/math_pch.cxx starmath/source/mathmlexport.cxx starmath/source/mathmlimport.cxx starmath/source/mathtype.cxx starmath/source/node.cxx starmath/source/parse.cxx starmath/source/rect.cxx starmath/source/register.cxx starmath/source/smdetect.cxx starmath/source/smdll.cxx starmath/source/smmod.cxx starmath/source/smres.src starmath/source/symbol.cxx starmath/source/toolbox.cxx starmath/source/unomodel.cxx starmath/source/utility.cxx starmath/source/view.cxx sw/JunitTest_sw_unoapi.mk sw/Library_swd.mk sw/Makefile sw/inc/IDocumentFieldsAccess.hxx sw/inc/IDocumentSettingAccess.hxx sw/inc/IDocumentUndoRedo.hxx sw/inc/IShellCursorSupplier.hxx sw/inc/SwUndoField.hxx sw/inc/acmplwrd.hxx sw/inc/authfld.hxx sw/inc/bparr.hxx sw/inc/calbck.hxx sw/inc/calc.hxx sw/inc/ccoll.hxx sw/inc/cellatr.hxx sw/inc/cellfml.hxx sw/inc/chpfld.hxx sw/inc/cmdid.h sw/inc/crsrsh.hxx sw/inc/crstate.hxx sw/inc/dbfld.hxx sw/inc/dbmgr.hxx sw/inc/dcontact.hxx sw/inc/ddefld.hxx sw/inc/doc.hxx sw/inc/docary.hxx sw/inc/docsh.hxx sw/inc/docstat.hxx sw/inc/docstyle.hxx sw/inc/docufld.hxx sw/inc/editsh.hxx sw/inc/errhdl.hxx sw/inc/expfld.hxx sw/inc/fchrfmt.hxx sw/inc/fesh.hxx sw/inc/fldbas.hxx sw/inc/flddat.hxx sw/inc/flddropdown.hxx sw/inc/flypos.hxx sw/inc/fmtanchr.hxx sw/inc/fmtautofmt.hxx sw/inc/fmtclds.hxx sw/inc/fmtcnct.hxx sw/inc/fmtcol.hxx sw/inc/fmtfsize.hxx sw/inc/fmtftn.hxx sw/inc/fmtftntx.hxx sw/inc/fmthdft.hxx sw/inc/fmtinfmt.hxx sw/inc/fmtline.hxx sw/inc/fmtornt.hxx sw/inc/fmtpdsc.hxx sw/inc/fmtruby.hxx sw/inc/fmtsrnd.hxx sw/inc/fmturl.hxx sw/inc/fmtwrapinfluenceonobjpos.hxx sw/inc/format.hxx sw/inc/frmatr.hxx sw/inc/frmfmt.hxx sw/inc/grfatr.hxx sw/inc/helpid.h sw/inc/hintids.hxx sw/inc/hints.hxx sw/inc/htmltbl.hxx sw/inc/inetfld.hxx sw/inc/io.hxx sw/inc/iodetect.hxx sw/inc/itabenum.hxx sw/inc/ndarr.hxx sw/inc/ndgrf.hxx sw/inc/ndindex.hxx sw/inc/ndnotxt.hxx sw/inc/ndole.hxx sw/inc/ndtxt.hxx sw/inc/ndtyp.hxx sw/inc/node.hxx sw/inc/numrule.hxx sw/inc/pagedesc.hxx sw/inc/pagepreviewlayout.hxx sw/inc/pam.hxx sw/inc/paratr.hxx sw/inc/poolfmt.awk sw/inc/poolfmt.hxx sw/inc/printdata.hxx sw/inc/reffld.hxx sw/inc/shellio.hxx sw/inc/shellres.hxx sw/inc/swabstdlg.hxx sw/inc/swatrset.hxx sw/inc/swerror.h sw/inc/swprtopt.hxx sw/inc/swtable.hxx sw/inc/swtypes.hxx sw/inc/tblafmt.hxx sw/inc/tgrditem.hxx sw/inc/tox.hxx sw/inc/undobj.hxx sw/inc/unocoll.hxx sw/inc/unoframe.hxx sw/inc/unoprnms.hxx sw/inc/usrfld.hxx sw/inc/viewopt.hxx sw/inc/viewsh.hxx sw/inc/viscrs.hxx sw/prj/build.lst sw/qa/complex/accessibility/makefile.mk sw/qa/core/Test-BigPtrArray.cxx sw/qa/core/makefile.mk sw/sdi/makefile.mk sw/source/core/access/makefile.mk sw/source/core/access/textmarkuphelper.cxx sw/source/core/attr/calbck.cxx sw/source/core/attr/cellatr.cxx sw/source/core/attr/fmtwrapinfluenceonobjpos.cxx sw/source/core/attr/format.cxx sw/source/core/attr/hints.cxx sw/source/core/bastyp/calc.cxx sw/source/core/bastyp/init.cxx sw/source/core/bastyp/makefile.mk sw/source/core/bastyp/swcache.cxx sw/source/core/crsr/bookmrk.cxx sw/source/core/crsr/callnk.cxx sw/source/core/crsr/crsrsh.cxx sw/source/core/crsr/crstrvl.cxx sw/source/core/crsr/findattr.cxx sw/source/core/crsr/findcoll.cxx sw/source/core/crsr/makefile.mk sw/source/core/crsr/pam.cxx sw/source/core/crsr/swcrsr.cxx sw/source/core/crsr/trvltbl.cxx sw/source/core/crsr/unocrsr.cxx sw/source/core/crsr/viscrs.cxx sw/source/core/doc/acmplwrd.cxx sw/source/core/doc/doc.cxx sw/source/core/doc/docbm.cxx sw/source/core/doc/doccomp.cxx sw/source/core/doc/docdesc.cxx sw/source/core/doc/docdraw.cxx sw/source/core/doc/docedt.cxx sw/source/core/doc/docfld.cxx sw/source/core/doc/docfly.cxx sw/source/core/doc/docfmt.cxx sw/source/core/doc/docftn.cxx sw/source/core/doc/docglbl.cxx sw/source/core/doc/docglos.cxx sw/source/core/doc/doclay.cxx sw/source/core/doc/docnew.cxx sw/source/core/doc/docnum.cxx sw/source/core/doc/docredln.cxx sw/source/core/doc/docruby.cxx sw/source/core/doc/docsort.cxx sw/source/core/doc/docstat.cxx sw/source/core/doc/doctxm.cxx sw/source/core/doc/fmtcol.cxx sw/source/core/doc/gctable.cxx sw/source/core/doc/htmltbl.cxx sw/source/core/doc/makefile.mk sw/source/core/doc/number.cxx sw/source/core/doc/poolfmt.cxx sw/source/core/doc/tblafmt.cxx sw/source/core/doc/tblcpy.cxx sw/source/core/doc/tblrwcl.cxx sw/source/core/docnode/makefile.mk sw/source/core/docnode/ndcopy.cxx sw/source/core/docnode/ndnum.cxx sw/source/core/docnode/ndsect.cxx sw/source/core/docnode/ndtbl.cxx sw/source/core/docnode/ndtbl1.cxx sw/source/core/docnode/node.cxx sw/source/core/docnode/node2lay.cxx sw/source/core/docnode/nodes.cxx sw/source/core/docnode/section.cxx sw/source/core/docnode/swbaslnk.cxx sw/source/core/draw/dcontact.cxx sw/source/core/draw/dflyobj.cxx sw/source/core/draw/drawdoc.cxx sw/source/core/draw/dview.cxx sw/source/core/draw/makefile.mk sw/source/core/edit/autofmt.cxx sw/source/core/edit/edattr.cxx sw/source/core/edit/eddel.cxx sw/source/core/edit/edfcol.cxx sw/source/core/edit/edfld.cxx sw/source/core/edit/edfldexp.cxx sw/source/core/edit/edfmt.cxx sw/source/core/edit/edglss.cxx sw/source/core/edit/editsh.cxx sw/source/core/edit/edlingu.cxx sw/source/core/edit/ednumber.cxx sw/source/core/edit/edsect.cxx sw/source/core/edit/edtab.cxx sw/source/core/edit/edtox.cxx sw/source/core/edit/edundo.cxx sw/source/core/edit/makefile.mk sw/source/core/except/dbgloop.cxx sw/source/core/except/errhdl.cxx sw/source/core/fields/authfld.cxx sw/source/core/fields/cellfml.cxx sw/source/core/fields/chpfld.cxx sw/source/core/fields/dbfld.cxx sw/source/core/fields/ddefld.cxx sw/source/core/fields/ddetbl.cxx sw/source/core/fields/docufld.cxx sw/source/core/fields/expfld.cxx sw/source/core/fields/fldbas.cxx sw/source/core/fields/flddat.cxx sw/source/core/fields/flddropdown.cxx sw/source/core/fields/macrofld.cxx sw/source/core/fields/makefile.mk sw/source/core/fields/reffld.cxx sw/source/core/fields/scrptfld.cxx sw/source/core/fields/tblcalc.cxx sw/source/core/fields/usrfld.cxx sw/source/core/frmedt/fecopy.cxx sw/source/core/frmedt/fedesc.cxx sw/source/core/frmedt/fefly1.cxx sw/source/core/frmedt/feshview.cxx sw/source/core/frmedt/fetab.cxx sw/source/core/frmedt/fews.cxx sw/source/core/frmedt/makefile.mk sw/source/core/frmedt/tblsel.cxx sw/source/core/graphic/grfatr.cxx sw/source/core/inc/SwUndoFmt.hxx sw/source/core/inc/SwUndoTOXChange.hxx sw/source/core/inc/anchoredobjectposition.hxx sw/source/core/inc/dbgloop.hxx sw/source/core/inc/drawfont.hxx sw/source/core/inc/flowfrm.hxx sw/source/core/inc/frame.hxx sw/source/core/inc/frmtool.hxx sw/source/core/inc/layact.hxx sw/source/core/inc/layfrm.hxx sw/source/core/inc/notxtfrm.hxx sw/source/core/inc/rolbck.hxx sw/source/core/inc/rootfrm.hxx sw/source/core/inc/scriptinfo.hxx sw/source/core/inc/swblocks.hxx sw/source/core/inc/swcache.hxx sw/source/core/inc/tabfrm.hxx sw/source/core/inc/txmsrt.hxx sw/source/core/inc/undoflystrattr.hxx sw/source/core/inc/viewimp.hxx sw/source/core/layout/atrfrm.cxx sw/source/core/layout/calcmove.cxx sw/source/core/layout/dbg_lay.cxx sw/source/core/layout/findfrm.cxx sw/source/core/layout/flowfrm.cxx sw/source/core/layout/fly.cxx sw/source/core/layout/flycnt.cxx sw/source/core/layout/flyincnt.cxx sw/source/core/layout/flylay.cxx sw/source/core/layout/frmtool.cxx sw/source/core/layout/ftnfrm.cxx sw/source/core/layout/layact.cxx sw/source/core/layout/laycache.cxx sw/source/core/layout/makefile.mk sw/source/core/layout/objectformatter.cxx sw/source/core/layout/pagechg.cxx sw/source/core/layout/pagedesc.cxx sw/source/core/layout/paintfrm.cxx sw/source/core/layout/sectfrm.cxx sw/source/core/layout/tabfrm.cxx sw/source/core/layout/trvlfrm.cxx sw/source/core/layout/unusedf.cxx sw/source/core/layout/wsfrm.cxx sw/source/core/makefile.mk sw/source/core/objectpositioning/anchoredobjectposition.cxx sw/source/core/objectpositioning/ascharanchoredobjectposition.cxx sw/source/core/objectpositioning/makefile.mk sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx sw/source/core/objectpositioning/tolayoutanchoredobjectposition.cxx sw/source/core/ole/ndole.cxx sw/source/core/para/makefile.mk sw/source/core/para/paratr.cxx sw/source/core/sw3io/makefile.mk sw/source/core/sw3io/sw3convert.cxx sw/source/core/swg/SwXMLTextBlocks.cxx sw/source/core/swg/makefile.mk sw/source/core/swg/swblocks.cxx sw/source/core/table/swnewtable.cxx sw/source/core/table/swtable.cxx sw/source/core/text/EnhancedPDFExportHelper.cxx sw/source/core/text/atrstck.cxx sw/source/core/text/frmcrsr.cxx sw/source/core/text/frmform.cxx sw/source/core/text/itrcrsr.cxx sw/source/core/text/itrform2.cxx sw/source/core/text/makefile.mk sw/source/core/text/porlay.cxx sw/source/core/text/pormulti.cxx sw/source/core/text/txtfld.cxx sw/source/core/text/txtfrm.cxx sw/source/core/text/txtio.cxx sw/source/core/tox/makefile.mk sw/source/core/tox/txmsrt.cxx sw/source/core/txtnode/fmtatr2.cxx sw/source/core/txtnode/fntcache.cxx sw/source/core/txtnode/fntcap.cxx sw/source/core/txtnode/makefile.mk sw/source/core/txtnode/ndhints.cxx sw/source/core/txtnode/ndtxt.cxx sw/source/core/txtnode/swfont.cxx sw/source/core/txtnode/thints.cxx sw/source/core/txtnode/txtatr2.cxx sw/source/core/txtnode/txtedt.cxx sw/source/core/undo/SwUndoField.cxx sw/source/core/undo/SwUndoPageDesc.cxx sw/source/core/undo/SwUndoTOXChange.cxx sw/source/core/undo/docundo.cxx sw/source/core/undo/makefile.mk sw/source/core/undo/rolbck.cxx sw/source/core/undo/unbkmk.cxx sw/source/core/undo/undel.cxx sw/source/core/undo/undobj.cxx sw/source/core/undo/undobj1.cxx sw/source/core/undo/unfmco.cxx sw/source/core/undo/unins.cxx sw/source/core/undo/unnum.cxx sw/source/core/undo/unoutl.cxx sw/source/core/undo/unredln.cxx sw/source/core/undo/unsect.cxx sw/source/core/undo/unsort.cxx sw/source/core/undo/unspnd.cxx sw/source/core/undo/untbl.cxx sw/source/core/unocore/makefile.mk sw/source/core/unocore/swunohelper.cxx sw/source/core/unocore/unobkm.cxx sw/source/core/unocore/unocoll.cxx sw/source/core/unocore/unocrsrhelper.cxx sw/source/core/unocore/unodraw.cxx sw/source/core/unocore/unofield.cxx sw/source/core/unocore/unoframe.cxx sw/source/core/unocore/unomap.cxx sw/source/core/unocore/unoprnms.cxx sw/source/core/unocore/unoredlines.cxx sw/source/core/unocore/unosett.cxx sw/source/core/unocore/unosrch.cxx sw/source/core/unocore/unostyle.cxx sw/source/core/unocore/unotbl.cxx sw/source/core/view/vdraw.cxx sw/source/core/view/viewimp.cxx sw/source/core/view/viewpg.cxx sw/source/core/view/viewsh.cxx sw/source/core/view/vnew.cxx sw/source/core/view/vprint.cxx sw/source/filter/ascii/ascatr.cxx sw/source/filter/ascii/makefile.mk sw/source/filter/ascii/wrtasc.cxx sw/source/filter/basflt/fltini.cxx sw/source/filter/basflt/iodetect.cxx sw/source/filter/basflt/makefile.mk sw/source/filter/html/SwAppletImpl.cxx sw/source/filter/html/css1atr.cxx sw/source/filter/html/htmlatr.cxx sw/source/filter/html/htmlbas.cxx sw/source/filter/html/htmlcss1.cxx sw/source/filter/html/htmlfly.cxx sw/source/filter/html/htmlftn.cxx sw/source/filter/html/htmlgrin.cxx sw/source/filter/html/htmlnum.cxx sw/source/filter/html/htmlplug.cxx sw/source/filter/html/htmltab.cxx sw/source/filter/html/makefile.mk sw/source/filter/html/parcss1.cxx sw/source/filter/html/svxcss1.cxx sw/source/filter/html/swhtml.cxx sw/source/filter/inc/msfilter.hxx sw/source/filter/inc/wrtswtbl.hxx sw/source/filter/rtf/makefile.mk sw/source/filter/rtf/rtffly.cxx sw/source/filter/rtf/rtfnum.cxx sw/source/filter/rtf/rtftbl.cxx sw/source/filter/rtf/swparrtf.cxx sw/source/filter/rtf/swparrtf.hxx sw/source/filter/writer/makefile.mk sw/source/filter/writer/writer.cxx sw/source/filter/writer/wrt_fn.cxx sw/source/filter/writer/wrtswtbl.cxx sw/source/filter/ww1/fltshell.cxx sw/source/filter/ww1/makefile.mk sw/source/filter/ww1/w1class.cxx sw/source/filter/ww1/w1class.hxx sw/source/filter/ww1/w1filter.cxx sw/source/filter/ww1/w1par.cxx sw/source/filter/ww1/w1sprm.cxx sw/source/filter/ww1/w1struct.hxx sw/source/filter/ww8/README-rtf.txt sw/source/filter/ww8/attributeoutputbase.hxx sw/source/filter/ww8/docxattributeoutput.cxx sw/source/filter/ww8/docxattributeoutput.hxx sw/source/filter/ww8/docxexport.cxx sw/source/filter/ww8/docxexport.hxx sw/source/filter/ww8/docxexportfilter.cxx sw/source/filter/ww8/dump/dump8.cxx sw/source/filter/ww8/dump/dump8a.cxx sw/source/filter/ww8/dump/msvbasic.cxx sw/source/filter/ww8/dump/msvbasic.hxx sw/source/filter/ww8/dump/ww8darr.cxx sw/source/filter/ww8/dump/ww8darr.hxx sw/source/filter/ww8/dump/ww8dout.cxx sw/source/filter/ww8/dump/ww8dout.hxx sw/source/filter/ww8/dump/ww8scan.cxx sw/source/filter/ww8/dump/ww8scan.hxx sw/source/filter/ww8/dump/ww8struc.hxx sw/source/filter/ww8/makefile.mk sw/source/filter/ww8/rtfattributeoutput.cxx sw/source/filter/ww8/rtfattributeoutput.hxx sw/source/filter/ww8/rtfexport.cxx sw/source/filter/ww8/rtfexport.hxx sw/source/filter/ww8/rtfexportfilter.cxx sw/source/filter/ww8/rtfexportfilter.hxx sw/source/filter/ww8/rtfimportfilter.cxx sw/source/filter/ww8/rtfimportfilter.hxx sw/source/filter/ww8/rtfsdrexport.cxx sw/source/filter/ww8/rtfsdrexport.hxx sw/source/filter/ww8/writerhelper.cxx sw/source/filter/ww8/writerwordglue.cxx sw/source/filter/ww8/wrtw8esh.cxx sw/source/filter/ww8/wrtw8nds.cxx sw/source/filter/ww8/wrtw8num.cxx sw/source/filter/ww8/wrtw8sty.cxx sw/source/filter/ww8/wrtww8.cxx sw/source/filter/ww8/wrtww8.hxx sw/source/filter/ww8/wrtww8gr.cxx sw/source/filter/ww8/ww8atr.cxx sw/source/filter/ww8/ww8attributeoutput.hxx sw/source/filter/ww8/ww8graf.cxx sw/source/filter/ww8/ww8graf.hxx sw/source/filter/ww8/ww8graf2.cxx sw/source/filter/ww8/ww8par.cxx sw/source/filter/ww8/ww8par.hxx sw/source/filter/ww8/ww8par2.cxx sw/source/filter/ww8/ww8par3.cxx sw/source/filter/ww8/ww8par5.cxx sw/source/filter/ww8/ww8par6.cxx sw/source/filter/ww8/ww8scan.cxx sw/source/filter/ww8/ww8scan.hxx sw/source/filter/ww8/ww8struc.hxx sw/source/filter/xml/makefile.mk sw/source/filter/xml/xmlimpit.cxx sw/source/filter/xml/xmltble.cxx sw/source/filter/xml/xmltbli.cxx sw/source/ui/app/appenv.cxx sw/source/ui/app/apphdl.cxx sw/source/ui/app/applab.cxx sw/source/ui/app/appopt.cxx sw/source/ui/app/docsh.cxx sw/source/ui/app/docsh2.cxx sw/source/ui/app/docshini.cxx sw/source/ui/app/docst.cxx sw/source/ui/app/docstyle.cxx sw/source/ui/app/makefile.mk sw/source/ui/app/mn.src sw/source/ui/app/swmodul1.cxx sw/source/ui/cctrl/makefile.mk sw/source/ui/cctrl/swlbox.cxx sw/source/ui/chrdlg/break.cxx sw/source/ui/chrdlg/ccoll.cxx sw/source/ui/chrdlg/chardlg.cxx sw/source/ui/chrdlg/drpcps.cxx sw/source/ui/chrdlg/makefile.mk sw/source/ui/chrdlg/numpara.cxx sw/source/ui/chrdlg/pardlg.cxx sw/source/ui/chrdlg/swuiccoll.cxx sw/source/ui/config/barcfg.cxx sw/source/ui/config/caption.cxx sw/source/ui/config/cfgitems.cxx sw/source/ui/config/fontcfg.cxx sw/source/ui/config/mailconfigpage.cxx sw/source/ui/config/makefile.mk sw/source/ui/config/modcfg.cxx sw/source/ui/config/optcomp.cxx sw/source/ui/config/optload.cxx sw/source/ui/config/optpage.cxx sw/source/ui/config/prtopt.cxx sw/source/ui/config/uinums.cxx sw/source/ui/config/usrpref.cxx sw/source/ui/config/viewopt.cxx sw/source/ui/dbui/dbinsdlg.cxx sw/source/ui/dbui/dbmgr.cxx sw/source/ui/dbui/dbtree.cxx sw/source/ui/dbui/makefile.mk sw/source/ui/dbui/mmaddressblockpage.cxx sw/source/ui/dbui/mmdocselectpage.cxx sw/source/ui/dbui/mmoutputpage.cxx sw/source/ui/dbui/swdbtoolsclient.cxx sw/source/ui/dialog/abstract.cxx sw/source/ui/dialog/ascfldlg.cxx sw/source/ui/dialog/macassgn.cxx sw/source/ui/dialog/makefile.mk sw/source/ui/dialog/regionsw.cxx sw/source/ui/dialog/swdlgfact.cxx sw/source/ui/dialog/swdlgfact.hxx sw/source/ui/dialog/uiregionsw.cxx sw/source/ui/dochdl/gloshdl.cxx sw/source/ui/dochdl/makefile.mk sw/source/ui/dochdl/swdtflvr.cxx sw/source/ui/docvw/PostItMgr.cxx sw/source/ui/docvw/SidebarWin.cxx sw/source/ui/docvw/edtdd.cxx sw/source/ui/docvw/edtwin.cxx sw/source/ui/docvw/edtwin2.cxx sw/source/ui/docvw/edtwin3.cxx sw/source/ui/docvw/makefile.mk sw/source/ui/docvw/romenu.cxx sw/source/ui/docvw/romenu.hxx sw/source/ui/docvw/srcedtw.cxx sw/source/ui/envelp/envfmt.cxx sw/source/ui/envelp/envimg.cxx sw/source/ui/envelp/envlop1.cxx sw/source/ui/envelp/envprt.cxx sw/source/ui/envelp/label1.cxx sw/source/ui/envelp/labfmt.cxx sw/source/ui/envelp/labprt.cxx sw/source/ui/envelp/mailmrge.cxx sw/source/ui/envelp/makefile.mk sw/source/ui/fldui/flddb.cxx sw/source/ui/fldui/flddinf.cxx sw/source/ui/fldui/flddok.cxx sw/source/ui/fldui/fldedt.cxx sw/source/ui/fldui/fldfunc.cxx sw/source/ui/fldui/fldmgr.cxx sw/source/ui/fldui/fldpage.cxx sw/source/ui/fldui/fldref.cxx sw/source/ui/fldui/fldtdlg.cxx sw/source/ui/fldui/fldvar.cxx sw/source/ui/fldui/fldwrap.cxx sw/source/ui/fldui/inpdlg.cxx sw/source/ui/fldui/makefile.mk sw/source/ui/fmtui/makefile.mk sw/source/ui/fmtui/tmpdlg.cxx sw/source/ui/frmdlg/colmgr.cxx sw/source/ui/frmdlg/column.cxx sw/source/ui/frmdlg/cption.cxx sw/source/ui/frmdlg/frmdlg.cxx sw/source/ui/frmdlg/frmmgr.cxx sw/source/ui/frmdlg/frmpage.cxx sw/source/ui/frmdlg/makefile.mk sw/source/ui/frmdlg/wrap.cxx sw/source/ui/globdoc/makefile.mk sw/source/ui/inc/bmpwin.hxx sw/source/ui/inc/colmgr.hxx sw/source/ui/inc/column.hxx sw/source/ui/inc/envimg.hxx sw/source/ui/inc/envlop.hxx sw/source/ui/inc/frmpage.hxx sw/source/ui/inc/inputwin.hxx sw/source/ui/inc/javaedit.hxx sw/source/ui/inc/num.hxx sw/source/ui/inc/optpage.hxx sw/source/ui/inc/regionsw.hxx sw/source/ui/inc/split.hxx sw/source/ui/inc/swlbox.hxx sw/source/ui/inc/swmn_tmpl.hrc sw/source/ui/inc/swuiidxmrk.hxx sw/source/ui/inc/tabsh.hxx sw/source/ui/inc/toxmgr.hxx sw/source/ui/inc/uiitems.hxx sw/source/ui/inc/view.hxx sw/source/ui/inc/workctrl.hxx sw/source/ui/inc/wrap.hxx sw/source/ui/inc/wrtsh.hxx sw/source/ui/index/cnttab.cxx sw/source/ui/index/makefile.mk sw/source/ui/index/toxmgr.cxx sw/source/ui/lingu/hhcwrp.cxx sw/source/ui/lingu/makefile.mk sw/source/ui/lingu/olmenu.cxx sw/source/ui/misc/bookmark.cxx sw/source/ui/misc/docfnote.cxx sw/source/ui/misc/glosbib.cxx sw/source/ui/misc/glosdoc.cxx sw/source/ui/misc/glshell.cxx sw/source/ui/misc/insfnote.cxx sw/source/ui/misc/linenum.cxx sw/source/ui/misc/makefile.mk sw/source/ui/misc/num.cxx sw/source/ui/misc/numberingtypelistbox.cxx sw/source/ui/misc/outline.cxx sw/source/ui/misc/pgfnote.cxx sw/source/ui/misc/pggrid.cxx sw/source/ui/misc/redlndlg.cxx sw/source/ui/misc/srtdlg.cxx sw/source/ui/misc/swmodalredlineacceptdlg.cxx sw/source/ui/ribbar/conarc.cxx sw/source/ui/ribbar/drawbase.cxx sw/source/ui/ribbar/inputwin.cxx sw/source/ui/ribbar/inputwin.src sw/source/ui/ribbar/makefile.mk sw/source/ui/ribbar/tbxanchr.cxx sw/source/ui/ribbar/workctrl.cxx sw/source/ui/ribbar/workctrl.src sw/source/ui/shells/annotsh.cxx sw/source/ui/shells/basesh.cxx sw/source/ui/shells/beziersh.cxx sw/source/ui/shells/drawdlg.cxx sw/source/ui/shells/drwbassh.cxx sw/source/ui/shells/drwtxtex.cxx sw/source/ui/shells/drwtxtsh.cxx sw/source/ui/shells/frmsh.cxx sw/source/ui/shells/grfsh.cxx sw/source/ui/shells/grfshex.cxx sw/source/ui/shells/makefile.mk sw/source/ui/shells/tabsh.cxx sw/source/ui/shells/textfld.cxx sw/source/ui/shells/textglos.cxx sw/source/ui/shells/textsh.cxx sw/source/ui/shells/textsh1.cxx sw/source/ui/shells/txtattr.cxx sw/source/ui/shells/txtcrsr.cxx sw/source/ui/shells/txtnum.cxx sw/source/ui/table/convert.cxx sw/source/ui/table/instable.cxx sw/source/ui/table/makefile.mk sw/source/ui/table/swtablerep.cxx sw/source/ui/table/tabledlg.cxx sw/source/ui/table/tablemgr.cxx sw/source/ui/table/tablepg.hxx sw/source/ui/table/tautofmt.cxx sw/source/ui/uiview/formatclipboard.cxx sw/source/ui/uiview/makefile.mk sw/source/ui/uiview/pview.cxx sw/source/ui/uiview/pview.src sw/source/ui/uiview/scroll.cxx sw/source/ui/uiview/srcview.cxx sw/source/ui/uiview/swcli.cxx sw/source/ui/uiview/uivwimp.cxx sw/source/ui/uiview/view.cxx sw/source/ui/uiview/view1.cxx sw/source/ui/uiview/view2.cxx sw/source/ui/uiview/viewcoll.cxx sw/source/ui/uiview/viewdlg2.cxx sw/source/ui/uiview/viewling.cxx sw/source/ui/uiview/viewmdi.cxx sw/source/ui/uiview/viewport.cxx sw/source/ui/uiview/viewprt.cxx sw/source/ui/uiview/viewsrch.cxx sw/source/ui/uiview/viewtab.cxx sw/source/ui/uno/SwXDocumentSettings.cxx sw/source/ui/uno/SwXPrintPreviewSettings.cxx sw/source/ui/uno/SwXPrintPreviewSettings.hxx sw/source/ui/uno/unoatxt.cxx sw/source/ui/uno/unomod.cxx sw/source/ui/uno/unotxdoc.cxx sw/source/ui/uno/unotxvw.cxx sw/source/ui/utlui/attrdesc.cxx sw/source/ui/utlui/content.cxx sw/source/ui/utlui/glbltree.cxx sw/source/ui/utlui/initui.cxx sw/source/ui/utlui/makefile.mk sw/source/ui/utlui/navipi.cxx sw/source/ui/utlui/navipi.src sw/source/ui/utlui/numfmtlb.cxx sw/source/ui/utlui/prcntfld.cxx sw/source/ui/utlui/uiitems.cxx sw/source/ui/utlui/uitool.cxx sw/source/ui/utlui/unotools.cxx sw/source/ui/utlui/viewlayoutctrl.cxx sw/source/ui/utlui/zoomctrl.cxx sw/source/ui/vba/makefile.mk sw/source/ui/vba/service.cxx sw/source/ui/web/makefile.mk sw/source/ui/wrtsh/makefile.mk sw/source/ui/wrtsh/wrtsh1.cxx sw/source/ui/wrtsh/wrtsh2.cxx sw/source/ui/wrtsh/wrtsh4.cxx sw/source/ui/wrtsh/wrtundo.cxx sw/util/hidother.src sw/util/makefile.mk sw/util/msword.map
2011-03-14 16:51:14 +00:00
sal_uInt16 const aIdArr[] = { RES_FRM_SIZE, RES_UL_SPACE,
2000-09-18 23:08:29 +00:00
RES_BACKGROUND, RES_SHADOW,
RES_COL, RES_COL,
RES_FRAMEDIR, RES_FRAMEDIR,
RES_TEXTGRID, RES_TEXTGRID,
// #i45539#
RES_HEADER_FOOTER_EAT_SPACING,
RES_HEADER_FOOTER_EAT_SPACING,
RES_UNKNOWNATR_CONTAINER,
RES_UNKNOWNATR_CONTAINER,
0 };
2000-09-18 23:08:29 +00:00
const SfxPoolItem* pItem;
for( sal_uInt16 n = 0; aIdArr[ n ]; n += 2 )
2000-09-18 23:08:29 +00:00
{
for( sal_uInt16 nId = aIdArr[ n ]; nId <= aIdArr[ n+1]; ++nId )
2000-09-18 23:08:29 +00:00
{
// #i45539#
// bPage == true:
// All in aIdArr except from RES_HEADER_FOOTER_EAT_SPACING
// bPage == false:
// All in aIdArr except from RES_COL and RES_PAPER_BIN:
if( ( bPage && RES_HEADER_FOOTER_EAT_SPACING != nId ) ||
( !bPage && RES_COL != nId && RES_PAPER_BIN != nId ))
2000-09-18 23:08:29 +00:00
{
if( SFX_ITEM_SET == rSource.GetItemState( nId, sal_False, &pItem ))
rDest.SetFmtAttr( *pItem );
2000-09-18 23:08:29 +00:00
else
rDest.ResetFmtAttr( nId );
2000-09-18 23:08:29 +00:00
}
}
}
2011-11-19 12:05:18 +01:00
// Transmit pool and help IDs too
2000-09-18 23:08:29 +00:00
rDest.SetPoolFmtId( rSource.GetPoolFmtId() );
rDest.SetPoolHelpId( rSource.GetPoolHelpId() );
rDest.SetPoolHlpFileId( rSource.GetPoolHlpFileId() );
}
void SwDoc::CopyMasterHeader(const SwPageDesc &rChged, const SwFmtHeader &rHead, SwPageDesc *pDesc, bool bLeft)
2000-09-18 23:08:29 +00:00
{
SwFrmFmt& rDescFrmFmt = (bLeft ? pDesc->GetLeft() : pDesc->GetFirst());
if ( (bLeft ? rChged.IsHeaderShared() : rChged.IsFirstShared() ) || !rHead.IsActive() )
2000-09-18 23:08:29 +00:00
{
// Left or first shares the header with the Master.
rDescFrmFmt.SetFmtAttr( pDesc->GetMaster().GetHeader() );
2000-09-18 23:08:29 +00:00
}
else if ( rHead.IsActive() )
{ // Left or first gets its own header if the Format doesn't alrady have one.
2011-11-19 12:05:18 +01:00
// If it already has one and it points to the same Section as the
// Right one, it needs to get an own Header.
// The content is evidently copied.
const SwFmtHeader &rFmtHead = rDescFrmFmt.GetHeader();
if ( !rFmtHead.IsActive() )
2000-09-18 23:08:29 +00:00
{
SwFmtHeader aHead( MakeLayoutFmt( RND_STD_HEADERL, 0 ) );
rDescFrmFmt.SetFmtAttr( aHead );
// take over additional attributes (margins, borders ...)
::lcl_DescSetAttr( *rHead.GetHeaderFmt(), *aHead.GetHeaderFmt(), false);
2000-09-18 23:08:29 +00:00
}
else
{
const SwFrmFmt *pRight = rHead.GetHeaderFmt();
const SwFmtCntnt &aRCnt = pRight->GetCntnt();
const SwFmtCntnt &aCnt = rFmtHead.GetHeaderFmt()->GetCntnt();
if( !aCnt.GetCntntIdx() )
2000-09-18 23:08:29 +00:00
{
const SwFrmFmt& rChgedFrmFmt = (bLeft ? rChged.GetLeft() : rChged.GetFirst());
rDescFrmFmt.SetFmtAttr( rChgedFrmFmt.GetHeader() );
2000-09-18 23:08:29 +00:00
}
else if( (*aRCnt.GetCntntIdx()) == (*aCnt.GetCntntIdx()) )
{
SwFrmFmt *pFmt = new SwFrmFmt( GetAttrPool(), (bLeft ? "Left header" : "First header"),
GetDfltFrmFmt() );
::lcl_DescSetAttr( *pRight, *pFmt, false );
// The section which the right header attribute is pointing
// is copied, and the Index to the StartNode is set to
// the left or first header attribute.
SwNodeIndex aTmp( GetNodes().GetEndOfAutotext() );
SwStartNode* pSttNd = GetNodes().MakeEmptySection( aTmp, SwHeaderStartNode );
SwNodeRange aRange( aRCnt.GetCntntIdx()->GetNode(), 0,
*aRCnt.GetCntntIdx()->GetNode().EndOfSectionNode() );
aTmp = *pSttNd->EndOfSectionNode();
GetNodes()._Copy( aRange, aTmp, sal_False );
pFmt->SetFmtAttr( SwFmtCntnt( pSttNd ) );
rDescFrmFmt.SetFmtAttr( SwFmtHeader( pFmt ) );
}
else
::lcl_DescSetAttr( *pRight,
*(SwFrmFmt*)rFmtHead.GetHeaderFmt(), false );
}
}
}
2000-09-18 23:08:29 +00:00
void SwDoc::CopyMasterFooter(const SwPageDesc &rChged, const SwFmtFooter &rFoot, SwPageDesc *pDesc, bool bLeft)
{
SwFrmFmt& rDescFrmFmt = (bLeft ? pDesc->GetLeft() : pDesc->GetFirst());
if ( (bLeft ? rChged.IsFooterShared() : rChged.IsFirstShared() ) || !rFoot.IsActive() )
// Left or first shares the Header with the Master.
rDescFrmFmt.SetFmtAttr( pDesc->GetMaster().GetFooter() );
2000-09-18 23:08:29 +00:00
else if ( rFoot.IsActive() )
{ // Left or first gets its own Footer if the Format does not already have one.
2011-11-19 12:05:18 +01:00
// If the Format already has a Footer and it points to the same section as the Right one,
// it needs to get an own one.
// The content is evidently copied.
const SwFmtFooter &rFmtFoot = rDescFrmFmt.GetFooter();
if ( !rFmtFoot.IsActive() )
2000-09-18 23:08:29 +00:00
{
SwFmtFooter aFoot( MakeLayoutFmt( RND_STD_FOOTER, 0 ) );
rDescFrmFmt.SetFmtAttr( aFoot );
// Take over additional attributes (margins, borders ...).
::lcl_DescSetAttr( *rFoot.GetFooterFmt(), *aFoot.GetFooterFmt(), false);
2000-09-18 23:08:29 +00:00
}
else
{
const SwFrmFmt *pRight = rFoot.GetFooterFmt();
const SwFmtCntnt &aRCnt = pRight->GetCntnt();
const SwFmtCntnt &aLCnt = rFmtFoot.GetFooterFmt()->GetCntnt();
if( !aLCnt.GetCntntIdx() )
{
const SwFrmFmt& rChgedFrmFmt = (bLeft ? rChged.GetLeft() : rChged.GetFirst());
rDescFrmFmt.SetFmtAttr( rChgedFrmFmt.GetFooter() );
}
else if( (*aRCnt.GetCntntIdx()) == (*aLCnt.GetCntntIdx()) )
2000-09-18 23:08:29 +00:00
{
SwFrmFmt *pFmt = new SwFrmFmt( GetAttrPool(), (bLeft ? "Left footer" : "First footer"),
2000-09-18 23:08:29 +00:00
GetDfltFrmFmt() );
::lcl_DescSetAttr( *pRight, *pFmt, false );
// The section to which the right footer attribute is pointing
// is copied, and the Index to the StartNode is set to
// the left footer attribute.
2000-09-18 23:08:29 +00:00
SwNodeIndex aTmp( GetNodes().GetEndOfAutotext() );
SwStartNode* pSttNd = GetNodes().MakeEmptySection( aTmp, SwFooterStartNode );
SwNodeRange aRange( aRCnt.GetCntntIdx()->GetNode(), 0,
*aRCnt.GetCntntIdx()->GetNode().EndOfSectionNode() );
aTmp = *pSttNd->EndOfSectionNode();
GetNodes()._Copy( aRange, aTmp, sal_False );
2000-09-18 23:08:29 +00:00
pFmt->SetFmtAttr( SwFmtCntnt( pSttNd ) );
rDescFrmFmt.SetFmtAttr( SwFmtFooter( pFmt ) );
2000-09-18 23:08:29 +00:00
}
else
::lcl_DescSetAttr( *pRight,
*(SwFrmFmt*)rFmtFoot.GetFooterFmt(), false );
2000-09-18 23:08:29 +00:00
}
}
}
void SwDoc::ChgPageDesc( sal_uInt16 i, const SwPageDesc &rChged )
{
OSL_ENSURE( i < aPageDescs.size(), "PageDescs is out of range." );
SwPageDesc *pDesc = aPageDescs[i];
SwRootFrm* pTmpRoot = GetCurrentLayout();
if (GetIDocumentUndoRedo().DoesUndo())
{
SwUndo *const pUndo(new SwUndoPageDesc(*pDesc, rChged, this));
GetIDocumentUndoRedo().AppendUndo(pUndo);
}
::sw::UndoGuard const undoGuard(GetIDocumentUndoRedo());
// Mirror at first if needed.
if ( rChged.GetUseOn() == nsUseOnPage::PD_MIRROR )
((SwPageDesc&)rChged).Mirror();
else
{
// Or else transfer values from Master to Left and First.
::lcl_DescSetAttr( ((SwPageDesc&)rChged).GetMaster(),
((SwPageDesc&)rChged).GetLeft() );
::lcl_DescSetAttr( ((SwPageDesc&)rChged).GetMaster(),
((SwPageDesc&)rChged).GetFirst() );
}
// Take over NumType.
if( rChged.GetNumType().GetNumberingType() != pDesc->GetNumType().GetNumberingType() )
{
pDesc->SetNumType( rChged.GetNumType() );
// Notify page number fields that NumFormat has changed
GetSysFldType( RES_PAGENUMBERFLD )->UpdateFlds();
GetSysFldType( RES_REFPAGEGETFLD )->UpdateFlds();
// If the numbering scheme has changed we could have QuoVadis/ErgoSum texts
// that refer to a changed page, so we invalidate foot notes.
SwFtnIdxs& rFtnIdxs = GetFtnIdxs();
for( sal_uInt16 nPos = 0; nPos < rFtnIdxs.size(); ++nPos )
{
SwTxtFtn *pTxtFtn = rFtnIdxs[ nPos ];
const SwFmtFtn &rFtn = pTxtFtn->GetFtn();
pTxtFtn->SetNumber( rFtn.GetNumber(), &rFtn.GetNumStr());
}
}
// Take over orientation
pDesc->SetLandscape( rChged.GetLandscape() );
pDesc->ChgFirstShare( rChged.IsFirstShared() );
// #i46909# no undo if header or footer changed
bool bHeaderFooterChanged = false;
// Synch header.
const SwFmtHeader &rHead = rChged.GetMaster().GetHeader();
if (undoGuard.UndoWasEnabled())
{
// #i46909# no undo if header or footer changed
// Did something change in the nodes?
const SwFmtHeader &rOldHead = pDesc->GetMaster().GetHeader();
bHeaderFooterChanged |=
( rHead.IsActive() != rOldHead.IsActive() ||
rChged.IsHeaderShared() != pDesc->IsHeaderShared() ||
rChged.IsFirstShared() != pDesc->IsFirstShared() );
}
pDesc->GetMaster().SetFmtAttr( rHead );
CopyMasterHeader(rChged, rHead, pDesc, true); // Copy left header
CopyMasterHeader(rChged, rHead, pDesc, false); // Copy first header
pDesc->ChgHeaderShare( rChged.IsHeaderShared() );
// Synch Footer.
const SwFmtFooter &rFoot = rChged.GetMaster().GetFooter();
if (undoGuard.UndoWasEnabled())
{
// #i46909# no undo if header or footer changed
// Did something change in the Nodes?
const SwFmtFooter &rOldFoot = pDesc->GetMaster().GetFooter();
bHeaderFooterChanged |=
( rFoot.IsActive() != rOldFoot.IsActive() ||
rChged.IsFooterShared() != pDesc->IsFooterShared() ||
rChged.IsFirstShared() != pDesc->IsFirstShared() );
}
pDesc->GetMaster().SetFmtAttr( rFoot );
CopyMasterFooter(rChged, rFoot, pDesc, true); // Copy left footer
CopyMasterFooter(rChged, rFoot, pDesc, false); // Copy first footer
2000-09-18 23:08:29 +00:00
pDesc->ChgFooterShare( rChged.IsFooterShared() );
if ( pDesc->GetName() != rChged.GetName() )
pDesc->SetName( rChged.GetName() );
2011-11-19 12:05:18 +01:00
// A RegisterChange is triggered, if necessary
2000-09-18 23:08:29 +00:00
pDesc->SetRegisterFmtColl( rChged.GetRegisterFmtColl() );
2011-11-19 12:05:18 +01:00
// If UseOn or the Follow change, the paragraphs need to know about it.
bool bUseOn = false;
bool bFollow = false;
2000-09-18 23:08:29 +00:00
if ( pDesc->GetUseOn() != rChged.GetUseOn() )
{ pDesc->SetUseOn( rChged.GetUseOn() );
bUseOn = true;
2000-09-18 23:08:29 +00:00
}
if ( pDesc->GetFollow() != rChged.GetFollow() )
{ if ( rChged.GetFollow() == &rChged )
{ if ( pDesc->GetFollow() != pDesc )
{ pDesc->SetFollow( pDesc );
bFollow = true;
2000-09-18 23:08:29 +00:00
}
}
else
{ pDesc->SetFollow( rChged.pFollow );
bFollow = true;
2000-09-18 23:08:29 +00:00
}
}
if ( (bUseOn || bFollow) && pTmpRoot)
2011-11-19 12:05:18 +01:00
// Inform layout!
{
std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllCheckPageDescs));
}
2000-09-18 23:08:29 +00:00
2011-11-19 12:05:18 +01:00
// Take over the page attributes.
2000-09-18 23:08:29 +00:00
::lcl_DescSetAttr( rChged.GetMaster(), pDesc->GetMaster() );
::lcl_DescSetAttr( rChged.GetLeft(), pDesc->GetLeft() );
::lcl_DescSetAttr( rChged.GetFirst(), pDesc->GetFirst() );
2000-09-18 23:08:29 +00:00
2011-11-19 12:05:18 +01:00
// If the FootnoteInfo changes, the pages are triggered.
2000-09-18 23:08:29 +00:00
if( !(pDesc->GetFtnInfo() == rChged.GetFtnInfo()) )
{
pDesc->SetFtnInfo( rChged.GetFtnInfo() );
SwMsgPoolItem aInfo( RES_PAGEDESC_FTNINFO );
{
pDesc->GetMaster().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
2000-09-18 23:08:29 +00:00
}
{
pDesc->GetLeft().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
2000-09-18 23:08:29 +00:00
}
{
pDesc->GetFirst().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
}
2000-09-18 23:08:29 +00:00
}
SetModified();
// #i46909# no undo if header or footer changed
if( bHeaderFooterChanged )
{
GetIDocumentUndoRedo().DelAllUndoObj();
}
2000-09-18 23:08:29 +00:00
}
/*************************************************************************
|*
|* SwDoc::DelPageDesc()
|*
|* Description: All descriptors whose Follow point to the to-be-deleted
2011-11-19 12:05:18 +01:00
|* have to be adapted.
2000-09-18 23:08:29 +00:00
|*
|*************************************************************************/
// #i7983#
void SwDoc::PreDelPageDesc(SwPageDesc * pDel)
2000-09-18 23:08:29 +00:00
{
if (0 == pDel)
2000-09-18 23:08:29 +00:00
return;
// mba: test iteration as clients are removed while iteration
SwPageDescHint aHint( aPageDescs[0] );
pDel->CallSwClientNotify( aHint );
bool bHasLayout = HasLayout();
if ( pFtnInfo->DependsOn( pDel ) )
2000-09-18 23:08:29 +00:00
{
pFtnInfo->ChgPageDesc( aPageDescs[0] );
if ( bHasLayout )
2000-09-18 23:08:29 +00:00
{
std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::CheckFtnPageDescs), false));
2000-09-18 23:08:29 +00:00
}
}
else if ( pEndNoteInfo->DependsOn( pDel ) )
{
pEndNoteInfo->ChgPageDesc( aPageDescs[0] );
if ( bHasLayout )
2000-09-18 23:08:29 +00:00
{
std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::CheckFtnPageDescs), true));
2000-09-18 23:08:29 +00:00
}
}
for ( sal_uInt16 j = 0; j < aPageDescs.size(); ++j )
2000-09-18 23:08:29 +00:00
{
if ( aPageDescs[j]->GetFollow() == pDel )
{
aPageDescs[j]->SetFollow( 0 );
if( bHasLayout )
{
std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::mem_fun(&SwRootFrm::AllCheckPageDescs));
}
2000-09-18 23:08:29 +00:00
}
}
}
void SwDoc::BroadcastStyleOperation(String rName, SfxStyleFamily eFamily,
sal_uInt16 nOp)
{
if (pDocShell)
{
SfxStyleSheetBasePool * pPool = pDocShell->GetStyleSheetPool();
if (pPool)
{
pPool->SetSearchMask(eFamily, SFXSTYLEBIT_ALL );
SfxStyleSheetBase * pBase = pPool->Find(rName);
if (pBase != NULL)
pPool->Broadcast(SfxStyleSheetHint( nOp, *pBase ));
}
}
}
void SwDoc::DelPageDesc( sal_uInt16 i, bool bBroadcast )
{
OSL_ENSURE( i < aPageDescs.size(), "PageDescs is out of range." );
2011-11-19 12:05:18 +01:00
OSL_ENSURE( i != 0, "You cannot delete the default Pagedesc.");
if ( i == 0 )
return;
SwPageDesc *pDel = aPageDescs[i];
if (bBroadcast)
BroadcastStyleOperation(pDel->GetName(), SFX_STYLE_FAMILY_PAGE,
SFX_STYLESHEET_ERASED);
if (GetIDocumentUndoRedo().DoesUndo())
{
SwUndo *const pUndo(new SwUndoPageDescDelete(*pDel, this));
GetIDocumentUndoRedo().AppendUndo(pUndo);
}
PreDelPageDesc(pDel); // #i7983#
2000-09-18 23:08:29 +00:00
aPageDescs.erase( aPageDescs.begin() + i );
2000-09-18 23:08:29 +00:00
delete pDel;
SetModified();
}
2002-12-04 13:34:31 +00:00
2000-09-18 23:08:29 +00:00
/*************************************************************************
|*
|* SwDoc::MakePageDesc()
|*
|*************************************************************************/
sal_uInt16 SwDoc::MakePageDesc( const String &rName, const SwPageDesc *pCpy,
bool bRegardLanguage, bool bBroadcast)
2000-09-18 23:08:29 +00:00
{
SwPageDesc *pNew;
if( pCpy )
{
pNew = new SwPageDesc( *pCpy );
pNew->SetName( rName );
if( rName != pCpy->GetName() )
{
pNew->SetPoolFmtId( USHRT_MAX );
pNew->SetPoolHelpId( USHRT_MAX );
pNew->SetPoolHlpFileId( UCHAR_MAX );
}
}
else
{
pNew = new SwPageDesc( rName, GetDfltFrmFmt(), this );
2011-11-19 12:05:18 +01:00
// Set the default page format.
lcl_DefaultPageFmt( USHRT_MAX, pNew->GetMaster(), pNew->GetLeft(), pNew->GetFirst() );
2002-12-04 13:34:31 +00:00
SvxFrameDirection aFrameDirection = bRegardLanguage ?
GetDefaultFrameDirection(GetAppLanguage())
2002-12-04 13:34:31 +00:00
: FRMDIR_HORI_LEFT_TOP;
pNew->GetMaster().SetFmtAttr( SvxFrameDirectionItem(aFrameDirection, RES_FRAMEDIR) );
pNew->GetLeft().SetFmtAttr( SvxFrameDirectionItem(aFrameDirection, RES_FRAMEDIR) );
pNew->GetFirst().SetFmtAttr( SvxFrameDirectionItem(aFrameDirection, RES_FRAMEDIR) );
2000-09-18 23:08:29 +00:00
}
aPageDescs.push_back( pNew );
if (bBroadcast)
BroadcastStyleOperation(rName, SFX_STYLE_FAMILY_PAGE,
SFX_STYLESHEET_CREATED);
if (GetIDocumentUndoRedo().DoesUndo())
{
GetIDocumentUndoRedo().AppendUndo(new SwUndoPageDescCreate(pNew, this));
}
2000-09-18 23:08:29 +00:00
SetModified();
return (aPageDescs.size()-1);
2000-09-18 23:08:29 +00:00
}
SwPageDesc* SwDoc::FindPageDescByName( const String& rName, sal_uInt16* pPos ) const
2000-09-18 23:08:29 +00:00
{
SwPageDesc* pRet = 0;
if( pPos ) *pPos = USHRT_MAX;
for( sal_uInt16 n = 0, nEnd = aPageDescs.size(); n < nEnd; ++n )
2000-09-18 23:08:29 +00:00
if( aPageDescs[ n ]->GetName() == rName )
{
pRet = aPageDescs[ n ];
if( pPos )
*pPos = n;
break;
}
return pRet;
}
/******************************************************************************
2011-11-19 12:05:18 +01:00
* Method : void SwDoc::PrtDataChanged()
* Description :
2000-09-18 23:08:29 +00:00
******************************************************************************/
void SwDoc::PrtDataChanged()
{
2011-11-19 12:05:18 +01:00
// If you change this, also modify InJobSetup in Sw3io if appropriate.
2000-09-18 23:08:29 +00:00
// #i41075#
OSL_ENSURE( get(IDocumentSettingAccess::USE_VIRTUAL_DEVICE) ||
2011-11-19 12:05:18 +01:00
0 != getPrinter( sal_False ), "PrtDataChanged will be called recursively!" );
SwRootFrm* pTmpRoot = GetCurrentLayout();
2000-09-18 23:08:29 +00:00
SwWait *pWait = 0;
bool bEndAction = false;
2000-09-18 23:08:29 +00:00
if( GetDocShell() )
GetDocShell()->UpdateFontList();
bool bDraw = true;
if ( pTmpRoot )
2000-09-18 23:08:29 +00:00
{
ViewShell *pSh = GetCurrentViewShell();
if( pSh &&
(!pSh->GetViewOptions()->getBrowseMode() ||
pSh->GetViewOptions()->IsPrtFormat()) )
2000-09-18 23:08:29 +00:00
{
if ( GetDocShell() )
pWait = new SwWait( *GetDocShell(), sal_True );
2000-09-18 23:08:29 +00:00
pTmpRoot->StartAllAction();
bEndAction = true;
2000-09-18 23:08:29 +00:00
bDraw = false;
2000-09-18 23:08:29 +00:00
if( pDrawModel )
{
pDrawModel->SetAddExtLeading( get(IDocumentSettingAccess::ADD_EXT_LEADING) );
pDrawModel->SetRefDevice( getReferenceDevice( false ) );
}
2000-09-18 23:08:29 +00:00
pFntCache->Flush();
std::set<SwRootFrm*> aAllLayouts = GetAllLayouts();
std::for_each( aAllLayouts.begin(), aAllLayouts.end(),std::bind2nd(std::mem_fun(&SwRootFrm::InvalidateAllCntnt), INV_SIZE));
2000-09-18 23:08:29 +00:00
do
2000-09-18 23:08:29 +00:00
{
pSh->InitPrt( pPrt );
pSh = (ViewShell*)pSh->GetNext();
2000-09-18 23:08:29 +00:00
}
while ( pSh != GetCurrentViewShell() );
2000-09-18 23:08:29 +00:00
}
}
if ( bDraw && pDrawModel )
{
const sal_Bool bTmpAddExtLeading = get(IDocumentSettingAccess::ADD_EXT_LEADING);
if ( bTmpAddExtLeading != pDrawModel->IsAddExtLeading() )
pDrawModel->SetAddExtLeading( bTmpAddExtLeading );
OutputDevice* pOutDev = getReferenceDevice( false );
if ( pOutDev != pDrawModel->GetRefDevice() )
pDrawModel->SetRefDevice( pOutDev );
}
2000-09-18 23:08:29 +00:00
PrtOLENotify( sal_True );
2000-09-18 23:08:29 +00:00
if ( bEndAction )
pTmpRoot->EndAllAction();
2000-09-18 23:08:29 +00:00
delete pWait;
}
2011-11-19 12:05:18 +01:00
// We collect the GlobalNames of the servers at runtime, who don't want to be notified
// about printer changes. Thereby saving loading a lot of objects (luckily all foreign
// objects are mapped to one ID).
// Initialisation and deinitialisation can be found in init.cxx
extern std::vector<SvGlobalName*> *pGlobalOLEExcludeList;
2000-09-18 23:08:29 +00:00
void SwDoc::PrtOLENotify( sal_Bool bAll )
2000-09-18 23:08:29 +00:00
{
SwFEShell *pShell = 0;
if ( GetCurrentViewShell() )
2000-09-18 23:08:29 +00:00
{
ViewShell *pSh = GetCurrentViewShell();
2000-09-18 23:08:29 +00:00
if ( !pSh->ISA(SwFEShell) )
do
{ pSh = (ViewShell*)pSh->GetNext();
} while ( !pSh->ISA(SwFEShell) &&
pSh != GetCurrentViewShell() );
2000-09-18 23:08:29 +00:00
if ( pSh->ISA(SwFEShell) )
pShell = (SwFEShell*)pSh;
}
2000-09-18 23:08:29 +00:00
if ( !pShell )
{
2011-11-19 12:05:18 +01:00
// This doesn't make sense without a Shell and thus without a client, because
// the communication about size changes is implemented by these components.
// Because we don't have a Shell we remember this unfortunate situation
// in the document,
2011-11-19 12:05:18 +01:00
// which is made up for later on when creating the first Shell.
mbOLEPrtNotifyPending = sal_True;
2000-09-18 23:08:29 +00:00
if ( bAll )
mbAllOLENotify = sal_True;
2000-09-18 23:08:29 +00:00
}
else
{
if ( mbAllOLENotify )
bAll = sal_True;
2000-09-18 23:08:29 +00:00
mbOLEPrtNotifyPending = mbAllOLENotify = sal_False;
2000-09-18 23:08:29 +00:00
SwOLENodes *pNodes = SwCntntNode::CreateOLENodesArray( *GetDfltGrfFmtColl(), !bAll );
2000-09-18 23:08:29 +00:00
if ( pNodes )
{
::StartProgress( STR_STATSTR_SWGPRTOLENOTIFY,
0, pNodes->size(), GetDocShell());
GetCurrentLayout()->StartAllAction();
2000-09-18 23:08:29 +00:00
for( sal_uInt16 i = 0; i < pNodes->size(); ++i )
2000-09-18 23:08:29 +00:00
{
::SetProgressState( i, GetDocShell() );
SwOLENode* pOLENd = (*pNodes)[i];
pOLENd->SetOLESizeInvalid( sal_False );
2000-09-18 23:08:29 +00:00
2011-11-19 12:05:18 +01:00
// At first load the Infos and see if it's not already in the exclude list.
2000-09-18 23:08:29 +00:00
SvGlobalName aName;
svt::EmbeddedObjectRef& xObj = pOLENd->GetOLEObj().GetObject();
if ( xObj.is() )
aName = SvGlobalName( xObj->getClassID() );
2011-11-19 12:05:18 +01:00
else // Not yet loaded
2000-09-18 23:08:29 +00:00
{
// TODO/LATER: retrieve ClassID of an unloaded object
// aName = ????
2000-09-18 23:08:29 +00:00
}
bool bFound = false;
for ( sal_uInt16 j = 0;
j < pGlobalOLEExcludeList->size() && !bFound;
++j )
2000-09-18 23:08:29 +00:00
{
bFound = *(*pGlobalOLEExcludeList)[j] == aName;
2000-09-18 23:08:29 +00:00
}
if ( bFound )
continue;
2011-11-19 12:05:18 +01:00
// We don't know it, so the object has to be loaded.
// If it doesn't want to be informed
if ( xObj.is() )
2000-09-18 23:08:29 +00:00
{
pGlobalOLEExcludeList->push_back( new SvGlobalName( aName ) );
2000-09-18 23:08:29 +00:00
}
}
delete pNodes;
GetCurrentLayout()->EndAllAction();
2000-09-18 23:08:29 +00:00
::EndProgress( GetDocShell() );
}
}
}
IMPL_LINK( SwDoc, DoUpdateModifiedOLE, Timer *, )
2000-09-18 23:08:29 +00:00
{
SwFEShell* pSh = (SwFEShell*)GetEditShell();
if( pSh )
{
mbOLEPrtNotifyPending = mbAllOLENotify = sal_False;
2000-09-18 23:08:29 +00:00
SwOLENodes *pNodes = SwCntntNode::CreateOLENodesArray( *GetDfltGrfFmtColl(), true );
if( pNodes )
2000-09-18 23:08:29 +00:00
{
::StartProgress( STR_STATSTR_SWGPRTOLENOTIFY,
0, pNodes->size(), GetDocShell());
GetCurrentLayout()->StartAllAction();
2000-09-18 23:08:29 +00:00
SwMsgPoolItem aMsgHint( RES_UPDATE_ATTR );
for( sal_uInt16 i = 0; i < pNodes->size(); ++i )
2000-09-18 23:08:29 +00:00
{
::SetProgressState( i, GetDocShell() );
SwOLENode* pOLENd = (*pNodes)[i];
pOLENd->SetOLESizeInvalid( sal_False );
2000-09-18 23:08:29 +00:00
2011-11-19 12:05:18 +01:00
// We don't know it, so the object has to be loaded.
// If it doesn't want to be informed
if( pOLENd->GetOLEObj().GetOleRef().is() ) // Broken?
2000-09-18 23:08:29 +00:00
{
pOLENd->ModifyNotification( &aMsgHint, &aMsgHint );
2000-09-18 23:08:29 +00:00
}
}
GetCurrentLayout()->EndAllAction();
2000-09-18 23:08:29 +00:00
::EndProgress( GetDocShell() );
delete pNodes;
2000-09-18 23:08:29 +00:00
}
}
return 0;
}
bool SwDoc::FindPageDesc( const String & rName, sal_uInt16 * pFound)
{
bool bResult = false;
sal_uInt16 nI;
for (nI = 0; nI < aPageDescs.size(); nI++)
{
if (aPageDescs[nI]->GetName() == rName)
{
*pFound = nI;
bResult = true;
break;
}
}
2000-09-18 23:08:29 +00:00
return bResult;
}
2000-09-18 23:08:29 +00:00
SwPageDesc * SwDoc::GetPageDesc( const String & rName )
{
SwPageDesc * aResult = NULL;
sal_uInt16 nI;
if (FindPageDesc(rName, &nI))
aResult = aPageDescs[nI];
return aResult;
}
void SwDoc::DelPageDesc( const String & rName, bool bBroadcast )
{
sal_uInt16 nI;
if (FindPageDesc(rName, &nI))
2011-02-07 20:21:18 +01:00
DelPageDesc(nI, bBroadcast);
}
2000-09-18 23:08:29 +00:00
void SwDoc::ChgPageDesc( const String & rName, const SwPageDesc & rDesc)
{
sal_uInt16 nI;
if (FindPageDesc(rName, &nI))
ChgPageDesc(nI, rDesc);
}
/*
* The HTML import cannot resist changing the page descriptions, I don't
* know why. This function is meant to check the page descriptors for invalid
* values.
*/
void SwDoc::CheckDefaultPageFmt()
{
for ( sal_uInt16 i = 0; i < GetPageDescCnt(); ++i )
{
SwPageDesc& rDesc = GetPageDesc( i );
SwFrmFmt& rMaster = rDesc.GetMaster();
SwFrmFmt& rLeft = rDesc.GetLeft();
const SwFmtFrmSize& rMasterSize = rMaster.GetFrmSize();
const SwFmtFrmSize& rLeftSize = rLeft.GetFrmSize();
const bool bSetSize = LONG_MAX == rMasterSize.GetWidth() ||
LONG_MAX == rMasterSize.GetHeight() ||
LONG_MAX == rLeftSize.GetWidth() ||
LONG_MAX == rLeftSize.GetHeight();
if ( bSetSize )
lcl_DefaultPageFmt( rDesc.GetPoolFmtId(), rDesc.GetMaster(), rDesc.GetLeft(), rDesc.GetFirst() );
}
}
void SwDoc::SetDefaultPageMode(bool bSquaredPageMode)
{
if( !bSquaredPageMode == !IsSquaredPageMode() )
return;
const SwTextGridItem& rGrid =
(const SwTextGridItem&)GetDefault( RES_TEXTGRID );
SwTextGridItem aNewGrid = rGrid;
aNewGrid.SetSquaredMode(bSquaredPageMode);
aNewGrid.Init();
SetDefault(aNewGrid);
for ( sal_uInt16 i = 0; i < GetPageDescCnt(); ++i )
{
SwPageDesc& rDesc = GetPageDesc( i );
SwFrmFmt& rMaster = rDesc.GetMaster();
SwFrmFmt& rLeft = rDesc.GetLeft();
SwTextGridItem aGrid((SwTextGridItem&)rMaster.GetFmtAttr(RES_TEXTGRID));
aGrid.SwitchPaperMode( bSquaredPageMode );
rMaster.SetFmtAttr(aGrid);
rLeft.SetFmtAttr(aGrid);
}
}
sal_Bool SwDoc::IsSquaredPageMode() const
{
const SwTextGridItem& rGrid =
(const SwTextGridItem&)GetDefault( RES_TEXTGRID );
return rGrid.IsSquaredMode();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */