diff options
author | Kurt Zenker <kz@openoffice.org> | 2009-06-04 16:21:29 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2009-06-04 16:21:29 +0000 |
commit | ef7c5c7534ecf24b2af1bc0de6e221327b4a4c49 (patch) | |
tree | 91654c3c0af54f00d2246874ee38e7a02e7035b4 /sd/source/ui/view | |
parent | e8cad7c6d2daf5b2b4ec672dbf740737fba426fd (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.cxx | 14 | ||||
-rw-r--r-- | sd/source/ui/view/drviews2.cxx | 20 | ||||
-rw-r--r-- | sd/source/ui/view/drviews4.cxx | 31 | ||||
-rw-r--r-- | sd/source/ui/view/drviewse.cxx | 14 | ||||
-rw-r--r-- | sd/source/ui/view/sdview.cxx | 11 | ||||
-rw-r--r-- | sd/source/ui/view/sdview2.cxx | 26 | ||||
-rw-r--r-- | sd/source/ui/view/sdview3.cxx | 63 | ||||
-rw-r--r-- | sd/source/ui/view/sdview4.cxx | 51 | ||||
-rw-r--r-- | sd/source/ui/view/viewshe3.cxx | 19 |
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; } |