1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SVX_SVDUNDO_HXX
21 #define INCLUDED_SVX_SVDUNDO_HXX
23 #include <sal/config.h>
28 #include <svl/solar.hrc>
29 #include <svl/undo.hxx>
30 #include <svl/style.hxx>
31 #include <tools/gen.hxx>
32 #include <svx/svdtypes.hxx>
33 #include <svx/svdsob.hxx>
34 #include <svx/svxdllapi.h>
48 class OutlinerParaObject
;
51 * Abstract base class (ABC) for all UndoActions of DrawingEngine
54 class SVX_DLLPUBLIC SdrUndoAction
: public SfxUndoAction
58 ViewShellId m_nViewShellId
;
61 SdrUndoAction(SdrModel
& rNewMod
);
64 virtual ~SdrUndoAction() override
;
66 virtual bool CanRepeat(SfxRepeatTarget
& rView
) const override
;
67 virtual void Repeat(SfxRepeatTarget
& rView
) override
;
69 virtual OUString
GetRepeatComment(SfxRepeatTarget
& rView
) const override
;
70 virtual OUString
GetSdrRepeatComment(SdrView
& rView
) const;
72 virtual bool CanSdrRepeat(SdrView
& rView
) const;
73 virtual void SdrRepeat(SdrView
& rView
);
75 /// See SfxUndoAction::GetViewShellId().
76 ViewShellId
GetViewShellId() const override
;
80 * Aggregation of arbitrarily many UndoActions to a single UndoAction.
81 * Undo() executes the single UndoActions backwards (LIFO, first the last
82 * ones attached), Redo() executes the UndoActions in the order they were
86 class SVX_DLLPUBLIC SdrUndoGroup
: public SdrUndoAction
89 std::vector
<SdrUndoAction
*> aBuf
;
91 // No expanded description of the Action (contains %O)
93 OUString aObjDescription
;
95 SdrRepeatFunc eFunction
;
98 SdrUndoGroup(SdrModel
& rNewMod
);
99 virtual ~SdrUndoGroup() override
;
102 sal_uIntPtr
GetActionCount() const { return aBuf
.size(); }
103 SdrUndoAction
* GetAction(sal_uIntPtr nNum
) const { return aBuf
[nNum
]; }
104 void AddAction(SdrUndoAction
* pAct
);
106 void SetComment(const OUString
& rStr
) { aComment
=rStr
; }
107 void SetObjDescription(const OUString
& rStr
) { aObjDescription
=rStr
; }
108 virtual OUString
GetComment() const override
;
109 virtual OUString
GetSdrRepeatComment(SdrView
& rView
) const override
;
111 virtual void Undo() override
;
112 virtual void Redo() override
;
114 virtual bool CanSdrRepeat(SdrView
& rView
) const override
;
115 virtual void SdrRepeat(SdrView
& rView
) override
;
116 void SetRepeatFunction(SdrRepeatFunc eFunc
) { eFunction
=eFunc
; }
120 * Abstract base class for all UndoActions that handle objects.
123 class SVX_DLLPUBLIC SdrUndoObj
: public SdrUndoAction
129 SdrUndoObj(SdrObject
& rNewObj
);
131 void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID
, OUString
& rStr
, bool bRepeat
= false) const;
133 static SAL_WARN_UNUSED_RESULT OUString
GetDescriptionStringForObject( const SdrObject
& _rForObject
, sal_uInt16 nStrCacheID
, bool bRepeat
= false );
135 // #94278# new method for evtl. PageChange at UNDO/REDO
136 void ImpShowPageOfThisObject();
140 * Changing the object attributes.
141 * Create Action right before setting the new attributes.
142 * Also for StyleSheets.
145 class SVX_DLLPUBLIC SdrUndoAttrObj
: public SdrUndoObj
148 SfxItemSet
* pUndoSet
;
149 SfxItemSet
* pRedoSet
;
150 SfxItemSet
* pRepeatSet
;
152 // FIXME: Or should we better remember the StyleSheetNames?
153 rtl::Reference
< SfxStyleSheetBase
> mxUndoStyleSheet
;
154 rtl::Reference
< SfxStyleSheetBase
> mxRedoStyleSheet
;
156 bool bHaveToTakeRedoSet
;
158 // When assigning TextItems to a drawing object with text:
159 OutlinerParaObject
* pTextUndo
;
161 // The text rescue mechanism needs also to be implemented for redo actions.
162 OutlinerParaObject
* pTextRedo
;
164 // If we have a group object:
165 SdrUndoGroup
* pUndoGroup
;
167 // Helper to ensure StyleSheet is in pool (provided by SdrModel from SdrObject)
168 static void ensureStyleSheetInStyleSheetPool(SfxStyleSheetBasePool
& rStyleSheetPool
, SfxStyleSheet
& rSheet
);
171 SdrUndoAttrObj(SdrObject
& rNewObj
, bool bStyleSheet1
= false, bool bSaveText
= false);
172 virtual ~SdrUndoAttrObj() override
;
173 virtual void Undo() override
;
174 virtual void Redo() override
;
176 virtual OUString
GetComment() const override
;
177 virtual OUString
GetSdrRepeatComment(SdrView
& rView
) const override
;
179 virtual void SdrRepeat(SdrView
& rView
) override
;
180 virtual bool CanSdrRepeat(SdrView
& rView
) const override
;
184 * Only moving of an object.
185 * Create Action right before moving.
188 class SVX_DLLPUBLIC SdrUndoMoveObj
: public SdrUndoObj
191 Size aDistance
; // Distance by which we move
194 SdrUndoMoveObj(SdrObject
& rNewObj
): SdrUndoObj(rNewObj
) {}
195 SdrUndoMoveObj(SdrObject
& rNewObj
, const Size
& rDist
): SdrUndoObj(rNewObj
),aDistance(rDist
) {}
196 virtual ~SdrUndoMoveObj() override
;
198 virtual void Undo() override
;
199 virtual void Redo() override
;
201 virtual OUString
GetComment() const override
;
202 virtual OUString
GetSdrRepeatComment(SdrView
& rView
) const override
;
204 virtual void SdrRepeat(SdrView
& rView
) override
;
205 virtual bool CanSdrRepeat(SdrView
& rView
) const override
;
209 * Changing the geometry of an object.
210 * Create Action right before the geometric transformation.
213 class SVX_DLLPUBLIC SdrUndoGeoObj
: public SdrUndoObj
216 SdrObjGeoData
* pUndoGeo
;
217 SdrObjGeoData
* pRedoGeo
;
218 // If we have a group object:
219 SdrUndoGroup
* pUndoGroup
;
220 /// If we have a table object, should its layout change?
221 bool mbSkipChangeLayout
;
224 SdrUndoGeoObj(SdrObject
& rNewObj
);
225 virtual ~SdrUndoGeoObj() override
;
227 virtual void Undo() override
;
228 virtual void Redo() override
;
230 virtual OUString
GetComment() const override
;
231 void SetSkipChangeLayout(bool bOn
) { mbSkipChangeLayout
=bOn
; }
235 * Manipulation of an ObjList: New Object, DeleteObj, SetObjZLevel, Grouping, ...
236 * Abstract base class.
239 class SVX_DLLPUBLIC SdrUndoObjList
: public SdrUndoObj
{
240 class ObjListListener
;
241 friend class ObjListListener
;
247 SdrObjList
* pObjList
;
251 SdrUndoObjList(SdrObject
& rNewObj
, bool bOrdNumDirect
);
252 virtual ~SdrUndoObjList() override
;
254 bool IsOwner() { return bOwner
; }
255 void SetOwner(bool bNew
);
259 * Removing an Object from an ObjectList.
260 * To be used with corresponding Inserts within a UndoGroup.
262 * Create Action before removing from the ObjList.
265 class SVX_DLLPUBLIC SdrUndoRemoveObj
: public SdrUndoObjList
268 SdrUndoRemoveObj(SdrObject
& rNewObj
, bool bOrdNumDirect
= false)
269 : SdrUndoObjList(rNewObj
,bOrdNumDirect
) {}
271 virtual void Undo() override
;
272 virtual void Redo() override
;
274 virtual ~SdrUndoRemoveObj() override
;
278 * Inserting Objects into a ObjectList.
279 * Use with corresponding Removes within an UndoGroup.
280 * Create Action before removal from ObjList.
283 class SVX_DLLPUBLIC SdrUndoInsertObj
: public SdrUndoObjList
286 SdrUndoInsertObj(SdrObject
& rNewObj
, bool bOrdNumDirect
= false)
287 : SdrUndoObjList(rNewObj
,bOrdNumDirect
) {}
289 virtual void Undo() override
;
290 virtual void Redo() override
;
294 * Deleting an Object.
295 * Create Action before removing from ObjList.
298 class SVX_DLLPUBLIC SdrUndoDelObj
: public SdrUndoRemoveObj
301 SdrUndoDelObj(SdrObject
& rNewObj
, bool bOrdNumDirect
= false);
303 virtual void Undo() override
;
304 virtual void Redo() override
;
306 virtual OUString
GetComment() const override
;
307 virtual OUString
GetSdrRepeatComment(SdrView
& rView
) const override
;
309 virtual void SdrRepeat(SdrView
& rView
) override
;
310 virtual bool CanSdrRepeat(SdrView
& rView
) const override
;
314 * Inserting a NEW Object.
315 * Create Action after insertion into the ObjList.
318 class SVX_DLLPUBLIC SdrUndoNewObj
: public SdrUndoInsertObj
321 SdrUndoNewObj(SdrObject
& rNewObj
, bool bOrdNumDirect
= false)
322 : SdrUndoInsertObj(rNewObj
,bOrdNumDirect
) {}
324 virtual void Undo() override
;
325 virtual void Redo() override
;
327 virtual OUString
GetComment() const override
;
329 static OUString
GetComment(const SdrObject
& _rForObject
);
333 * Replacing an Object.
334 * Create Action before Replace in ObjList.
337 class SVX_DLLPUBLIC SdrUndoReplaceObj
: public SdrUndoObj
343 SdrObjList
* pObjList
;
348 SdrUndoReplaceObj(SdrObject
& rOldObj1
, SdrObject
& rNewObj1
, bool bOrdNumDirect
);
349 virtual ~SdrUndoReplaceObj() override
;
351 virtual void Undo() override
;
352 virtual void Redo() override
;
354 bool IsNewOwner() { return bNewOwner
; }
355 void SetNewOwner(bool bNew
);
357 bool IsOldOwner() { return bOldOwner
; }
358 void SetOldOwner(bool bNew
);
363 * Create Action before inserting into the ObjList.
366 class SdrUndoCopyObj
: public SdrUndoNewObj
369 SdrUndoCopyObj(SdrObject
& rNewObj
, bool bOrdNumDirect
)
370 : SdrUndoNewObj(rNewObj
,bOrdNumDirect
) {}
372 virtual OUString
GetComment() const override
;
375 class SdrUndoObjOrdNum
: public SdrUndoObj
378 sal_uInt32 nOldOrdNum
;
379 sal_uInt32 nNewOrdNum
;
382 SdrUndoObjOrdNum(SdrObject
& rNewObj
, sal_uInt32 nOldOrdNum1
, sal_uInt32 nNewOrdNum1
);
384 virtual void Undo() override
;
385 virtual void Redo() override
;
387 virtual OUString
GetComment() const override
;
393 class SVX_DLLPUBLIC SdrUndoObjectLayerChange
: public SdrUndoObj
396 SdrLayerID maOldLayer
;
397 SdrLayerID maNewLayer
;
400 SdrUndoObjectLayerChange(SdrObject
& rObj
, SdrLayerID aOldLayer
, SdrLayerID aNewLayer
);
402 virtual void Undo() override
;
403 virtual void Redo() override
;
406 class SVX_DLLPUBLIC SdrUndoObjSetText
: public SdrUndoObj
409 OutlinerParaObject
* pOldText
;
410 OutlinerParaObject
* pNewText
;
411 bool bNewTextAvailable
;
416 SdrUndoObjSetText(SdrObject
& rNewObj
, sal_Int32 nText
);
417 virtual ~SdrUndoObjSetText() override
;
419 bool IsDifferent() const { return pOldText
!=pNewText
; }
422 virtual void Undo() override
;
423 virtual void Redo() override
;
425 virtual OUString
GetComment() const override
;
426 virtual OUString
GetSdrRepeatComment(SdrView
& rView
) const override
;
428 virtual void SdrRepeat(SdrView
& rView
) override
;
429 virtual bool CanSdrRepeat(SdrView
& rView
) const override
;
433 * Implement Title/Description Elements UI for Writer
434 * text frames, graphics and embedded objects (#i73249#)
436 class SdrUndoObjStrAttr
: public SdrUndoObj
439 enum class ObjStrAttrType
447 const ObjStrAttrType meObjStrAttr
;
448 const OUString msOldStr
;
449 const OUString msNewStr
;
452 SdrUndoObjStrAttr( SdrObject
& rNewObj
,
453 const ObjStrAttrType eObjStrAttr
,
454 const OUString
& sOldStr
,
455 const OUString
& sNewStr
);
457 virtual void Undo() override
;
458 virtual void Redo() override
;
460 virtual OUString
GetComment() const override
;
469 * Abstract base class for all UndoActions that have something to do with SdrLayer.
472 class SdrUndoLayer
: public SdrUndoAction
476 SdrLayerAdmin
* pLayerAdmin
;
481 SdrUndoLayer(sal_uInt16 nLayerNum
, SdrLayerAdmin
& rNewLayerAdmin
, SdrModel
& rNewModel
);
482 virtual ~SdrUndoLayer() override
;
486 * Inserting a new Layer.
487 * Create Action after Insertion.
490 class SdrUndoNewLayer
: public SdrUndoLayer
493 SdrUndoNewLayer(sal_uInt16 nLayerNum
, SdrLayerAdmin
& rNewLayerAdmin
, SdrModel
& rNewModel
)
494 : SdrUndoLayer(nLayerNum
,rNewLayerAdmin
,rNewModel
) {}
496 virtual void Undo() override
;
497 virtual void Redo() override
;
499 virtual OUString
GetComment() const override
;
504 * Create Action before the Remove.
507 class SdrUndoDelLayer
: public SdrUndoLayer
510 SdrUndoDelLayer(sal_uInt16 nLayerNum
, SdrLayerAdmin
& rNewLayerAdmin
, SdrModel
& rNewModel
)
511 : SdrUndoLayer(nLayerNum
,rNewLayerAdmin
,rNewModel
) { bItsMine
=true; }
513 virtual void Undo() override
;
514 virtual void Redo() override
;
516 virtual OUString
GetComment() const override
;
521 * Create Action before the Move.
524 class SdrUndoMoveLayer
: public SdrUndoLayer
529 SdrUndoMoveLayer(sal_uInt16 nLayerNum
, SdrLayerAdmin
& rNewLayerAdmin
, SdrModel
& rNewModel
, sal_uInt16 nNeuPos1
)
530 : SdrUndoLayer(nLayerNum
,rNewLayerAdmin
,rNewModel
), nNeuPos(nNeuPos1
) {}
532 virtual void Undo() override
;
533 virtual void Redo() override
;
535 virtual OUString
GetComment() const override
;
544 * ABC for all UndoActions that have something to do with SdrPages.
547 class SVX_DLLPUBLIC SdrUndoPage
: public SdrUndoAction
553 void ImpInsertPage(sal_uInt16 nNum
);
554 void ImpRemovePage(sal_uInt16 nNum
);
555 void ImpMovePage(sal_uInt16 nOldNum
, sal_uInt16 nNewNum
);
558 SdrUndoPage(SdrPage
& rNewPg
);
560 static void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID
, OUString
& rStr
);
564 * ABC for manipulation of a PageList: New Page, DeletePage, MovePage (ChangePageNum).
567 class SVX_DLLPUBLIC SdrUndoPageList
: public SdrUndoPage
572 // It's possible that the object is re-assigned during a Undo/Redo.
573 // The Page is deleted in the dtor, if bItsMine==TRUE
577 SdrUndoPageList(SdrPage
& rNewPg
);
578 virtual ~SdrUndoPageList() override
;
583 * Create Action before removing from the List.
586 class SVX_DLLPUBLIC SdrUndoDelPage
: public SdrUndoPageList
588 // When deleting a MasterPage, we remember all relations of the
589 // Character Page with the MasterPage in this UndoGroup.
590 std::unique_ptr
<SdrUndoGroup
> pUndoGroup
;
591 std::unique_ptr
<SfxPoolItem
> mpFillBitmapItem
;
592 bool mbHasFillBitmap
;
595 SdrUndoDelPage(SdrPage
& rNewPg
);
596 virtual ~SdrUndoDelPage() override
;
598 virtual void Undo() override
;
599 virtual void Redo() override
;
601 virtual OUString
GetComment() const override
;
602 virtual OUString
GetSdrRepeatComment(SdrView
& rView
) const override
;
604 virtual void SdrRepeat(SdrView
& rView
) override
;
605 virtual bool CanSdrRepeat(SdrView
& rView
) const override
;
608 void queryFillBitmap(const SfxItemSet
&rItemSet
);
609 void clearFillBitmap();
610 void restoreFillBitmap();
614 * Inserting a new Page.
615 * Create Action after inserting into the List.
618 class SVX_DLLPUBLIC SdrUndoNewPage
: public SdrUndoPageList
621 SdrUndoNewPage(SdrPage
& rNewPg
): SdrUndoPageList(rNewPg
) {}
623 virtual void Undo() override
;
624 virtual void Redo() override
;
626 virtual OUString
GetComment() const override
;
631 * Create Action after inserting into the List.
634 class SdrUndoCopyPage
: public SdrUndoNewPage
637 SdrUndoCopyPage(SdrPage
& rNewPg
): SdrUndoNewPage(rNewPg
) {}
639 virtual OUString
GetComment() const override
;
640 virtual OUString
GetSdrRepeatComment(SdrView
& rView
) const override
;
642 virtual void SdrRepeat(SdrView
& rView
) override
;
643 virtual bool CanSdrRepeat(SdrView
& rView
) const override
;
647 * Moving a Page within the List.
648 * Create Action before moving the Page.
651 class SVX_DLLPUBLIC SdrUndoSetPageNum
: public SdrUndoPage
654 sal_uInt16 nOldPageNum
;
655 sal_uInt16 nNewPageNum
;
658 SdrUndoSetPageNum(SdrPage
& rNewPg
, sal_uInt16 nOldPageNum1
, sal_uInt16 nNewPageNum1
)
659 : SdrUndoPage(rNewPg
),nOldPageNum(nOldPageNum1
),nNewPageNum(nNewPageNum1
) {}
661 virtual void Undo() override
;
662 virtual void Redo() override
;
664 virtual OUString
GetComment() const override
;
673 * ABC for all UndoActions that have something to do with
674 * MasterPage relationships.
677 class SdrUndoPageMasterPage
: public SdrUndoPage
680 bool mbOldHadMasterPage
;
681 SdrLayerIDSet maOldSet
;
682 sal_uInt16 maOldMasterPageNumber
;
685 SdrUndoPageMasterPage(SdrPage
& rChangedPage
);
688 SVX_DLLPUBLIC
virtual ~SdrUndoPageMasterPage() override
;
692 * Removal of a MasterPage from a Character Page.
693 * Create Action before removing the MasterPageDescriptor.
696 class SdrUndoPageRemoveMasterPage
: public SdrUndoPageMasterPage
699 SdrUndoPageRemoveMasterPage(SdrPage
& rChangedPage
);
701 virtual void Undo() override
;
702 virtual void Redo() override
;
704 virtual OUString
GetComment() const override
;
708 * Changing the MasterPageDescriptor (e.g. change of the VisibleLayer).
709 * Create Action before changing the MasterPageDescriptors.
712 class SVX_DLLPUBLIC SdrUndoPageChangeMasterPage
: public SdrUndoPageMasterPage
715 bool mbNewHadMasterPage
;
716 SdrLayerIDSet maNewSet
;
717 sal_uInt16 maNewMasterPageNumber
;
720 SdrUndoPageChangeMasterPage(SdrPage
& rChangedPage
);
722 virtual void Undo() override
;
723 virtual void Redo() override
;
725 virtual OUString
GetComment() const override
;
730 * The SdrUndoFactory can be set and retrieved from the SdrModel.
731 * It is used by the drawing layer implementations to create undo actions.
732 * It can be used by applications to create application specific undo actions.
734 class SVX_DLLPUBLIC SdrUndoFactory
738 virtual ~SdrUndoFactory();
739 virtual SdrUndoAction
* CreateUndoMoveObject( SdrObject
& rObject
);
740 virtual SdrUndoAction
* CreateUndoMoveObject( SdrObject
& rObject
, const Size
& rDist
);
741 virtual SdrUndoAction
* CreateUndoGeoObject( SdrObject
& rObject
);
742 virtual SdrUndoAction
* CreateUndoAttrObject( SdrObject
& rObject
, bool bStyleSheet1
= false, bool bSaveText
= false );
743 virtual SdrUndoAction
* CreateUndoRemoveObject( SdrObject
& rObject
, bool bOrdNumDirect
= false);
744 virtual SdrUndoAction
* CreateUndoInsertObject( SdrObject
& rObject
, bool bOrdNumDirect
= false);
745 virtual SdrUndoAction
* CreateUndoDeleteObject( SdrObject
& rObject
, bool bOrdNumDirect
= false);
746 virtual SdrUndoAction
* CreateUndoNewObject( SdrObject
& rObject
, bool bOrdNumDirect
= false);
747 virtual SdrUndoAction
* CreateUndoCopyObject( SdrObject
& rObject
, bool bOrdNumDirect
= false);
749 virtual SdrUndoAction
* CreateUndoObjectOrdNum( SdrObject
& rObject
, sal_uInt32 nOldOrdNum1
, sal_uInt32 nNewOrdNum1
);
751 virtual SdrUndoAction
* CreateUndoReplaceObject( SdrObject
& rOldObject
, SdrObject
& rNewObject
, bool bOrdNumDirect
= false );
752 virtual SdrUndoAction
* CreateUndoObjectLayerChange( SdrObject
& rObject
, SdrLayerID aOldLayer
, SdrLayerID aNewLayer
);
753 virtual SdrUndoAction
* CreateUndoObjectSetText( SdrObject
& rNewObj
, sal_Int32 nText
);
755 // Implement Title/Description Elements UI for Writer text frames, graphics and embedded objects (#i73249#)
756 static SdrUndoAction
* CreateUndoObjectStrAttr( SdrObject
& rObject
,
757 SdrUndoObjStrAttr::ObjStrAttrType eObjStrAttrType
,
758 const OUString
& sOldStr
,
759 const OUString
& sNewStr
);
762 virtual SdrUndoAction
* CreateUndoNewLayer(sal_uInt16 nLayerNum
, SdrLayerAdmin
& rNewLayerAdmin
, SdrModel
& rNewModel
);
763 virtual SdrUndoAction
* CreateUndoDeleteLayer(sal_uInt16 nLayerNum
, SdrLayerAdmin
& rNewLayerAdmin
, SdrModel
& rNewModel
);
764 virtual SdrUndoAction
* CreateUndoMoveLayer(sal_uInt16 nLayerNum
, SdrLayerAdmin
& rNewLayerAdmin
, SdrModel
& rNewModel
, sal_uInt16 nNeuPos1
);
767 virtual SdrUndoAction
* CreateUndoDeletePage(SdrPage
& rPage
);
768 virtual SdrUndoAction
* CreateUndoNewPage(SdrPage
& rPage
);
769 virtual SdrUndoAction
* CreateUndoCopyPage(SdrPage
& rPage
);
770 virtual SdrUndoAction
* CreateUndoSetPageNum(SdrPage
& rNewPg
, sal_uInt16 nOldPageNum1
, sal_uInt16 nNewPageNum1
);
773 virtual SdrUndoAction
* CreateUndoPageRemoveMasterPage(SdrPage
& rChangedPage
);
774 virtual SdrUndoAction
* CreateUndoPageChangeMasterPage(SdrPage
& rChangedPage
);
777 #endif // INCLUDED_SVX_SVDUNDO_HXX
779 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */