summaryrefslogtreecommitdiff
path: root/sd/source/ui/view
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2009-06-04 16:21:29 +0000
committerKurt Zenker <kz@openoffice.org>2009-06-04 16:21:29 +0000
commitef7c5c7534ecf24b2af1bc0de6e221327b4a4c49 (patch)
tree91654c3c0af54f00d2246874ee38e7a02e7035b4 /sd/source/ui/view
parente8cad7c6d2daf5b2b4ec672dbf740737fba426fd (diff)
CWS-TOOLING: integrate CWS clnoundo
2009-05-18 09:40:22 +0200 wg r271998 : i102011 2009-04-28 12:20:24 +0200 cl r271318 : CWS-TOOLING: rebase CWS clnoundo to trunk@270723 (milestone: DEV300:m46) 2009-04-02 11:37:14 +0200 cl r270388 : #i100371# check valid positions all the time to avoid crashes during model lock 2009-03-30 13:02:27 +0200 cl r270219 : #i100371# do not create undo actions in drawing layer during load 2009-03-30 12:59:41 +0200 cl r270218 : #i100371# do not create undo actions in drawing layer during load 2009-03-30 12:55:06 +0200 cl r270217 : #i100371# do not create undo actions in drawing layer during load 2009-03-30 12:53:27 +0200 cl r270216 : #i100371# do not create undo actions in drawing layer during load 2009-03-30 12:49:28 +0200 cl r270215 : #i100371# added EnableUndo() and IsUndoEnabled()
Diffstat (limited to 'sd/source/ui/view')
-rw-r--r--sd/source/ui/view/drbezob.cxx14
-rw-r--r--sd/source/ui/view/drviews2.cxx20
-rw-r--r--sd/source/ui/view/drviews4.cxx31
-rw-r--r--sd/source/ui/view/drviewse.cxx14
-rw-r--r--sd/source/ui/view/sdview.cxx11
-rw-r--r--sd/source/ui/view/sdview2.cxx26
-rw-r--r--sd/source/ui/view/sdview3.cxx63
-rw-r--r--sd/source/ui/view/sdview4.cxx51
-rw-r--r--sd/source/ui/view/viewshe3.cxx19
9 files changed, 176 insertions, 73 deletions
diff --git a/sd/source/ui/view/drbezob.cxx b/sd/source/ui/view/drbezob.cxx
index d5603bd8818b..a1c68e18e131 100644
--- a/sd/source/ui/view/drbezob.cxx
+++ b/sd/source/ui/view/drbezob.cxx
@@ -307,11 +307,19 @@ void BezierObjectBar::Execute(SfxRequest& rReq)
case SID_BEZIER_CLOSE:
{
SdrPathObj* pPathObj = (SdrPathObj*) rMarkList.GetMark(0)->GetMarkedSdrObj();
- mpView->BegUndo(String(SdResId(STR_UNDO_BEZCLOSE)));
+ const bool bUndo = mpView->IsUndoEnabled();
+ if( bUndo )
+ mpView->BegUndo(String(SdResId(STR_UNDO_BEZCLOSE)));
+
mpView->UnmarkAllPoints();
- mpView->AddUndo(mpView->GetModel()->GetSdrUndoFactory().CreateUndoGeoObject(*pPathObj));
+
+ if( bUndo )
+ mpView->AddUndo(mpView->GetModel()->GetSdrUndoFactory().CreateUndoGeoObject(*pPathObj));
+
pPathObj->ToggleClosed();
- mpView->EndUndo();
+
+ if( bUndo )
+ mpView->EndUndo();
break;
}
}
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index c3afe3dda4c7..27d5f6202369 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -254,6 +254,8 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
ULONG nCount = rMarkList.GetMarkCount();
+ const bool bUndo = mpDrawView->IsUndoEnabled();
+
for (ULONG i=0; i<nCount; i++)
{
SfxItemSet aAttr(GetDoc()->GetPool());
@@ -269,15 +271,19 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
if (rFillStyle.GetValue() == XFILL_NONE)
{
- // Vorlage hat keine Fuellung,
- // daher hart attributieren: Fuellung setzen
- if (!bMergeUndo)
+ if( bUndo )
{
- bMergeUndo = TRUE;
- pUndoManager->EnterListAction( String(), String() );
- mpDrawView->BegUndo();
+ // Vorlage hat keine Fuellung,
+ // daher hart attributieren: Fuellung setzen
+ if (!bMergeUndo)
+ {
+ bMergeUndo = TRUE;
+ pUndoManager->EnterListAction( String(), String() );
+ mpDrawView->BegUndo();
+ }
+
+ mpDrawView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoAttrObject(*pObj));
}
- mpDrawView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoAttrObject(*pObj));
aAttr.Put(XFillStyleItem(XFILL_SOLID));
aAttr.Put(XFillColorItem(String(), COL_WHITE));
diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx
index 229e0b8c6eb1..1f98a0705d97 100644
--- a/sd/source/ui/view/drviews4.cxx
+++ b/sd/source/ui/view/drviews4.cxx
@@ -31,6 +31,8 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sd.hxx"
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+
#include "DrawViewShell.hxx"
#include <vcl/msgbox.hxx>
#include <svtools/urlbmk.hxx>
@@ -92,6 +94,8 @@ namespace sd {
#pragma optimize ( "", off )
#endif
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing;
/*************************************************************************
|*
@@ -102,25 +106,20 @@ namespace sd {
void DrawViewShell::DeleteActualPage()
{
USHORT nPage = maTabControl.GetCurPageId() - 1;
- SdPage* pPage = GetDoc()->GetSdPage(nPage,PK_STANDARD);
-
-#ifdef DBG_UTIL
- USHORT nPageCount = GetDoc()->GetPageCount();
- DBG_ASSERT(nPageCount > 1, "aber das ist die letzte!");
-#endif
mpDrawView->SdrEndTextEdit();
- mpDrawView->BegUndo();
-
- mpDrawView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoDeletePage(*pPage));
- GetDoc()->RemovePage(pPage->GetPageNum());
-
- pPage = GetDoc()->GetSdPage(nPage, PK_NOTES);
- mpDrawView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoDeletePage(*pPage));
- GetDoc()->RemovePage(pPage->GetPageNum());
-
- mpDrawView->EndUndo();
+ try
+ {
+ Reference<XDrawPagesSupplier> xDrawPagesSupplier( GetDoc()->getUnoModel(), UNO_QUERY_THROW );
+ Reference<XDrawPages> xPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ Reference< XDrawPage > xPage( xPages->getByIndex( nPage ), UNO_QUERY_THROW );
+ xPages->remove( xPage );
+ }
+ catch( Exception& )
+ {
+ DBG_ERROR("SelectionManager::DeleteSelectedMasterPages(), exception caught!");
+ }
}
/*************************************************************************
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index 7cc9de9f611f..0b3ecf1af6e7 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -727,11 +727,19 @@ void DrawViewShell::FuSupport(SfxRequest& rReq)
if ( rMarkList.GetMark(0) && !mpDrawView->IsAction() )
{
SdrPathObj* pPathObj = (SdrPathObj*) rMarkList.GetMark(0)->GetMarkedSdrObj();
- mpDrawView->BegUndo(String(SdResId(STR_UNDO_BEZCLOSE)));
+ const bool bUndo = mpDrawView->IsUndoEnabled();
+ if( bUndo )
+ mpDrawView->BegUndo(String(SdResId(STR_UNDO_BEZCLOSE)));
+
mpDrawView->UnmarkAllPoints();
- mpDrawView->AddUndo(new SdrUndoGeoObj(*pPathObj));
+
+ if( bUndo )
+ mpDrawView->AddUndo(new SdrUndoGeoObj(*pPathObj));
+
pPathObj->ToggleClosed();
- mpDrawView->EndUndo();
+
+ if( bUndo )
+ mpDrawView->EndUndo();
}
rReq.Done();
}
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index 53532d86d8e1..eb3665fa05f2 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -1252,8 +1252,15 @@ IMPL_LINK( View, OnParagraphRemovingHdl, ::Outliner *, pOutliner )
bool View::isRecordingUndo() const
{
- sd::UndoManager* pUndoManager = mpDoc ? mpDoc->GetUndoManager() : 0;
- return pUndoManager && pUndoManager->isInListAction();
+ if( mpDoc && mpDoc->IsUndoEnabled() )
+ {
+ sd::UndoManager* pUndoManager = mpDoc ? mpDoc->GetUndoManager() : 0;
+ return pUndoManager && pUndoManager->isInListAction();
+ }
+ else
+ {
+ return false;
+ }
}
void View::AddCustomHdl()
diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx
index 0c19247b14e1..bcf84ec006cf 100644
--- a/sd/source/ui/view/sdview2.cxx
+++ b/sd/source/ui/view/sdview2.cxx
@@ -421,10 +421,13 @@ void View::StartDrag( const Point& rStartPos, ::Window* pWindow )
mpDragSrcMarkList = new SdrMarkList(GetMarkedObjectList());
mnDragSrcPgNum = GetSdrPageView()->GetPage()->GetPageNum();
- String aStr( SdResId(STR_UNDO_DRAGDROP) );
- aStr += sal_Unicode(' ');
- aStr += mpDragSrcMarkList->GetMarkDescription();
- BegUndo(aStr);
+ if( IsUndoEnabled() )
+ {
+ String aStr( SdResId(STR_UNDO_DRAGDROP) );
+ aStr += sal_Unicode(' ');
+ aStr += mpDragSrcMarkList->GetMarkDescription();
+ BegUndo(aStr);
+ }
CreateDragDataObject( this, *pWindow, rStartPos );
}
}
@@ -433,6 +436,8 @@ void View::StartDrag( const Point& rStartPos, ::Window* pWindow )
void View::DragFinished( sal_Int8 nDropAction )
{
+ const bool bUndo = IsUndoEnabled();
+
SdTransferable* pDragTransferable = SD_MOD()->pTransferDrag;
if( pDragTransferable )
@@ -444,7 +449,9 @@ void View::DragFinished( sal_Int8 nDropAction )
!IsPresObjSelected() )
{
mpDragSrcMarkList->ForceSort();
- BegUndo();
+
+ if( bUndo )
+ BegUndo();
ULONG nm, nAnz = mpDragSrcMarkList->GetMarkCount();
@@ -452,7 +459,8 @@ void View::DragFinished( sal_Int8 nDropAction )
{
nm--;
SdrMark* pM=mpDragSrcMarkList->GetMark(nm);
- AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pM->GetMarkedSdrObj()));
+ if( bUndo )
+ AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pM->GetMarkedSdrObj()));
}
mpDragSrcMarkList->GetMark(0)->GetMarkedSdrObj()->GetOrdNum();
@@ -474,13 +482,15 @@ void View::DragFinished( sal_Int8 nDropAction )
}
}
- EndUndo();
+ if( bUndo )
+ EndUndo();
}
if( pDragTransferable )
pDragTransferable->SetInternalMove( FALSE );
- EndUndo();
+ if( bUndo )
+ EndUndo();
mnDragSrcPgNum = SDRPAGE_NOTFOUND;
delete mpDragSrcMarkList;
mpDragSrcMarkList = NULL;
diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx
index baf2549acae9..04cebfbdd577 100644
--- a/sd/source/ui/view/sdview3.cxx
+++ b/sd/source/ui/view/sdview3.cxx
@@ -423,9 +423,12 @@ BOOL View::InsertData( const TransferableDataHelper& rDataHelper,
if( pO )
{
// #i11702#
- BegUndo(String(SdResId(STR_MODIFYLAYER)));
- AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoObjectLayerChange(*pO, pO->GetLayer(), (SdrLayerID)nLayer));
- EndUndo();
+ if( IsUndoEnabled() )
+ {
+ BegUndo(String(SdResId(STR_MODIFYLAYER)));
+ AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoObjectLayerChange(*pO, pO->GetLayer(), (SdrLayerID)nLayer));
+ EndUndo();
+ }
pO->SetLayer( (SdrLayerID) nLayer );
}
@@ -504,9 +507,12 @@ BOOL View::InsertData( const TransferableDataHelper& rDataHelper,
pPage->InsertObject(pObj);
- BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
- AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoNewObject(*pObj));
- EndUndo();
+ if( IsUndoEnabled() )
+ {
+ BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
+ AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoNewObject(*pObj));
+ EndUndo();
+ }
// #83525#
ImpRememberOrigAndClone* pRem = new ImpRememberOrigAndClone;
@@ -734,14 +740,28 @@ BOOL View::InsertData( const TransferableDataHelper& rDataHelper,
aVec -= aObjRect.TopLeft();
pNewObj->NbcMove( Size( aVec.X(), aVec.Y() ) );
- BegUndo( String( SdResId(STR_UNDO_DRAGDROP ) ) );
+ const bool bUndo = IsUndoEnabled();
+
+ if( bUndo )
+ BegUndo( String( SdResId(STR_UNDO_DRAGDROP ) ) );
pNewObj->NbcSetLayer( pPickObj->GetLayer() );
SdrPage* pWorkPage = GetSdrPageView()->GetPage();
pWorkPage->InsertObject( pNewObj );
- AddUndo( mpDoc->GetSdrUndoFactory().CreateUndoNewObject( *pNewObj ) );
- AddUndo( mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject( *pPickObj2 ) );
+ if( bUndo )
+ {
+ AddUndo( mpDoc->GetSdrUndoFactory().CreateUndoNewObject( *pNewObj ) );
+ AddUndo( mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject( *pPickObj2 ) );
+ }
pWorkPage->RemoveObject( pPickObj2->GetOrdNum() );
- EndUndo();
+
+ if( bUndo )
+ {
+ EndUndo();
+ }
+ else
+ {
+ SdrObject::Free(pPickObj2 );
+ }
bChanged = TRUE;
mnAction = DND_ACTION_COPY;
}
@@ -750,8 +770,12 @@ BOOL View::InsertData( const TransferableDataHelper& rDataHelper,
SfxItemSet aSet( mpDoc->GetPool() );
// set new attributes to object
- BegUndo( String( SdResId( STR_UNDO_DRAGDROP ) ) );
- AddUndo( mpDoc->GetSdrUndoFactory().CreateUndoAttrObject( *pPickObj ) );
+ const bool bUndo = IsUndoEnabled();
+ if( bUndo )
+ {
+ BegUndo( String( SdResId( STR_UNDO_DRAGDROP ) ) );
+ AddUndo( mpDoc->GetSdrUndoFactory().CreateUndoAttrObject( *pPickObj ) );
+ }
aSet.Put( pObj->GetMergedItemSet() );
// Eckenradius soll nicht uebernommen werden.
@@ -771,11 +795,13 @@ BOOL View::InsertData( const TransferableDataHelper& rDataHelper,
aOldSet.Put(pPickObj->GetMergedItemSet());
aNewSet.Put( pObj->GetMergedItemSet() );
- AddUndo( new E3dAttributesUndoAction( *mpDoc, this, (E3dObject*) pPickObj, aNewSet, aOldSet, FALSE ) );
+ if( bUndo )
+ AddUndo( new E3dAttributesUndoAction( *mpDoc, this, (E3dObject*) pPickObj, aNewSet, aOldSet, FALSE ) );
pPickObj->SetMergedItemSetAndBroadcast( aNewSet );
}
- EndUndo();
+ if( bUndo )
+ EndUndo();
bChanged = TRUE;
}
}
@@ -1252,9 +1278,12 @@ BOOL View::InsertData( const TransferableDataHelper& rDataHelper,
*xStm >> aFillData;
- BegUndo( String( SdResId( STR_UNDO_DRAGDROP ) ) );
- AddUndo( GetModel()->GetSdrUndoFactory().CreateUndoAttrObject( *pPickObj ) );
- EndUndo();
+ if( IsUndoEnabled() )
+ {
+ BegUndo( String( SdResId( STR_UNDO_DRAGDROP ) ) );
+ AddUndo( GetModel()->GetSdrUndoFactory().CreateUndoAttrObject( *pPickObj ) );
+ EndUndo();
+ }
XFillAttrSetItem* pSetItem = aFillData.GetXFillAttrSetItem();
SfxItemSet rSet = pSetItem->GetItemSet();
diff --git a/sd/source/ui/view/sdview4.cxx b/sd/source/ui/view/sdview4.cxx
index 12dcaba2899f..1e6842408e67 100644
--- a/sd/source/ui/view/sdview4.cxx
+++ b/sd/source/ui/view/sdview4.cxx
@@ -134,7 +134,9 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
pNewGrafObj->SetEmptyPresObj(FALSE);
}
- BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
+ const bool bUndo = IsUndoEnabled();
+ if( bUndo )
+ BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
SdPage* pPage = (SdPage*) pPickObj->GetPage();
@@ -142,26 +144,39 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
{
// Neues PresObj in die Liste eintragen
pNewGrafObj->SetUserCall(pPickObj->GetUserCall());
- AddUndo( new sd::UndoObjectPresentationKind( *pPickObj ) );
- AddUndo( new sd::UndoObjectPresentationKind( *pNewGrafObj ) );
+ if( bUndo )
+ {
+ AddUndo( new sd::UndoObjectPresentationKind( *pPickObj ) );
+ AddUndo( new sd::UndoObjectPresentationKind( *pNewGrafObj ) );
+ }
pPage->RemovePresObj(pPickObj);
pPage->InsertPresObj(pNewGrafObj, PRESOBJ_GRAPHIC);
+
+ if( !bUndo )
+ {
+ SdrObject::Free( pPickObj );
+ }
}
if (pImageMap)
pNewGrafObj->InsertUserData(new SdIMapInfo(*pImageMap));
ReplaceObjectAtView(pPickObj, *pPV, pNewGrafObj); // maybe ReplaceObjectAtView
- EndUndo();
+
+ if( bUndo )
+ EndUndo();
}
else if (pPickObj->IsClosedObj() && !pPickObj->ISA(SdrOle2Obj))
{
/******************************************************************
* Das Objekt wird mit der Graphik gefuellt
******************************************************************/
- BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
- AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoAttrObject(*pPickObj));
- EndUndo();
+ if( IsUndoEnabled() )
+ {
+ BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
+ AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoAttrObject(*pPickObj));
+ EndUndo();
+ }
XOBitmap aXOBitmap( rGraphic.GetBitmap() );
SfxItemSet aSet(mpDocSh->GetPool(), XATTR_FILLSTYLE, XATTR_FILLBITMAP);
@@ -238,14 +253,28 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
Point aVec = aPickObjRect.TopLeft() - aObjRect.TopLeft();
pNewGrafObj->NbcMove(Size(aVec.X(), aVec.Y()));
- BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
+ const bool bUndo = IsUndoEnabled();
+
+ if( bUndo )
+ BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
pNewGrafObj->NbcSetLayer(pPickObj->GetLayer());
SdrPage* pP = pPV->GetPage();
pP->InsertObject(pNewGrafObj);
- AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoNewObject(*pNewGrafObj));
- AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pPickObj));
+ if( bUndo )
+ {
+ AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoNewObject(*pNewGrafObj));
+ AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoDeleteObject(*pPickObj));
+ }
pP->RemoveObject(pPickObj->GetOrdNum());
- EndUndo();
+
+ if( bUndo )
+ {
+ EndUndo();
+ }
+ else
+ {
+ SdrObject::Free(pPickObj);
+ }
mnAction = DND_ACTION_COPY;
}
else
diff --git a/sd/source/ui/view/viewshe3.cxx b/sd/source/ui/view/viewshe3.cxx
index 046dfab9526e..38e2b6b88001 100644
--- a/sd/source/ui/view/viewshe3.cxx
+++ b/sd/source/ui/view/viewshe3.cxx
@@ -324,7 +324,9 @@ SdPage* ViewShell::CreateOrDuplicatePage (
// 2. Create a new page or duplicate an existing one.
View* pDrView = GetView();
- pDrView->BegUndo( String( SdResId(STR_INSERTPAGE) ) );
+ const bool bUndo = pDrView && pDrView->IsUndoEnabled();
+ if( bUndo )
+ pDrView->BegUndo( String( SdResId(STR_INSERTPAGE) ) );
USHORT nNewPageIndex = 0xffff;
switch (nSId)
@@ -403,13 +405,18 @@ SdPage* ViewShell::CreateOrDuplicatePage (
}
SdPage* pNewPage = 0;
if(nNewPageIndex != 0xffff)
- {
pNewPage = pDocument->GetSdPage(nNewPageIndex, PK_STANDARD);
- pDrView->AddUndo(pDocument->GetSdrUndoFactory().CreateUndoNewPage(*pNewPage));
- pDrView->AddUndo(pDocument->GetSdrUndoFactory().CreateUndoNewPage(*pDocument->GetSdPage (nNewPageIndex, PK_NOTES)));
- }
- pDrView->EndUndo();
+ if( bUndo )
+ {
+ if( pNewPage )
+ {
+ pDrView->AddUndo(pDocument->GetSdrUndoFactory().CreateUndoNewPage(*pNewPage));
+ pDrView->AddUndo(pDocument->GetSdrUndoFactory().CreateUndoNewPage(*pDocument->GetSdPage (nNewPageIndex, PK_NOTES)));
+ }
+
+ pDrView->EndUndo();
+ }
return pNewPage;
}