1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: unfmco.cxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_sw.hxx"
37 #include "swundo.hxx" // fuer die UndoIds
45 inline SwDoc
& SwUndoIter::GetDoc() const { return *pAktPam
->GetDoc(); }
47 //--------------------------------------------------
50 // --> OD 2008-04-15 #refactorlists#
51 SwUndoFmtColl::SwUndoFmtColl( const SwPaM
& rRange
,
54 const bool bResetListAttrs
)
55 : SwUndo( UNDO_SETFMTCOLL
),
57 pHistory( new SwHistory
),
60 mbResetListAttrs( bResetListAttrs
)
63 // --> FME 2004-08-06 #i31191#
65 aFmtName
= pColl
->GetName();
70 SwUndoFmtColl::~SwUndoFmtColl()
76 void SwUndoFmtColl::Undo( SwUndoIter
& rUndoIter
)
78 // die alten Werte wieder zurueck
79 pHistory
->TmpRollback( &rUndoIter
.GetDoc(), 0 );
80 pHistory
->SetTmpEnd( pHistory
->Count() );
82 // setze noch den Cursor auf den Undo-Bereich
87 void SwUndoFmtColl::Redo( SwUndoIter
& rUndoIter
)
89 // setze Attribut in dem Bereich:
91 rUndoIter
.pLastUndoObj
= 0;
93 Repeat( rUndoIter
); // Collection setzen
95 rUndoIter
.pLastUndoObj
= 0;
99 void SwUndoFmtColl::Repeat( SwUndoIter
& rUndoIter
)
101 if( UNDO_SETFMTCOLL
== rUndoIter
.GetLastUndoId() &&
102 pFmtColl
== ((SwUndoFmtColl
*)rUndoIter
.pLastUndoObj
)->pFmtColl
)
105 // es kann nur eine TextFmtColl auf einen Bereich angewendet werden,
106 // also erfrage auch nur in dem Array
107 USHORT nPos
= rUndoIter
.GetDoc().GetTxtFmtColls()->GetPos(
108 (SwTxtFmtColl
*)pFmtColl
);
109 // ist das Format ueberhaupt noch vorhanden?
110 if( USHRT_MAX
!= nPos
)
112 // --> OD 2008-04-15 #refactorlists#
113 rUndoIter
.GetDoc().SetTxtFmtColl( *rUndoIter
.pAktPam
,
114 (SwTxtFmtColl
*)pFmtColl
,
120 rUndoIter
.pLastUndoObj
= this;
123 SwRewriter
SwUndoFmtColl::GetRewriter() const
127 // --> FME 2004-08-06 #i31191# Use stored format name instead of
128 // pFmtColl->GetName(), because pFmtColl does not have to be available
130 aResult
.AddRule(UNDO_ARG1
, aFmtName
);