diff options
author | Vladimir Glazunov <vg@openoffice.org> | 2011-01-28 11:59:17 +0100 |
---|---|---|
committer | Vladimir Glazunov <vg@openoffice.org> | 2011-01-28 11:59:17 +0100 |
commit | ccf2a49428345eff761a00d19b24d6ee187d8d7e (patch) | |
tree | 1998b7be0d9ae4081aca671d6b15292f2ea15714 /sd/source/ui/view | |
parent | fa27b2da2f8e7bd9bafb4a057318ac22577727dd (diff) | |
parent | b0879ce503220f8c67f5452d413574b18ad66776 (diff) |
CWS-TOOLING: integrate CWS undoapi
Diffstat (limited to 'sd/source/ui/view')
-rwxr-xr-x | sd/source/ui/view/ViewShellImplementation.cxx | 4 | ||||
-rwxr-xr-x | sd/source/ui/view/ViewShellManager.cxx | 4 | ||||
-rwxr-xr-x | sd/source/ui/view/drviews2.cxx | 2 | ||||
-rwxr-xr-x | sd/source/ui/view/drviewsb.cxx | 6 | ||||
-rwxr-xr-x | sd/source/ui/view/outlview.cxx | 50 | ||||
-rwxr-xr-x | sd/source/ui/view/sdview.cxx | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | sd/source/ui/view/unmodpg.cxx | 4 | ||||
-rw-r--r-- | sd/source/ui/view/viewshe3.cxx | 4 | ||||
-rwxr-xr-x | sd/source/ui/view/viewshel.cxx | 43 |
9 files changed, 69 insertions, 50 deletions
diff --git a/sd/source/ui/view/ViewShellImplementation.cxx b/sd/source/ui/view/ViewShellImplementation.cxx index fdd7c530137f..2a574fa087ef 100755 --- a/sd/source/ui/view/ViewShellImplementation.cxx +++ b/sd/source/ui/view/ViewShellImplementation.cxx @@ -212,7 +212,7 @@ void ViewShell::Implementation::ProcessModifyPageSlot ( SdPage* pUndoPage = bHandoutMode ? pHandoutMPage : pCurrentPage; - SfxUndoManager* pUndoManager = mrViewShell.GetDocSh()->GetUndoManager(); + ::svl::IUndoManager* pUndoManager = mrViewShell.GetDocSh()->GetUndoManager(); DBG_ASSERT(pUndoManager, "No UNDO MANAGER ?!?"); if( pUndoManager ) @@ -220,7 +220,7 @@ void ViewShell::Implementation::ProcessModifyPageSlot ( String aComment( SdResId(STR_UNDO_MODIFY_PAGE) ); pUndoManager->EnterListAction(aComment, aComment); ModifyPageUndoAction* pAction = new ModifyPageUndoAction( - pUndoManager, pDocument, pUndoPage, aNewName, aNewAutoLayout, bBVisible, bBObjsVisible); + pDocument, pUndoPage, aNewName, aNewAutoLayout, bBVisible, bBObjsVisible); pUndoManager->AddUndoAction(pAction); // Clear the selection because the selectec object may be removed as diff --git a/sd/source/ui/view/ViewShellManager.cxx b/sd/source/ui/view/ViewShellManager.cxx index c1ffcb884cd1..2335a6ec838f 100755 --- a/sd/source/ui/view/ViewShellManager.cxx +++ b/sd/source/ui/view/ViewShellManager.cxx @@ -915,7 +915,7 @@ void ViewShellManager::Implementation::UpdateShellStack (void) // Remember the undo manager from the top-most shell on the stack. SfxShell* pTopMostShell = mrBase.GetSubShell(0); - SfxUndoManager* pUndoManager = (pTopMostShell!=NULL) + ::svl::IUndoManager* pUndoManager = (pTopMostShell!=NULL) ? pTopMostShell->GetUndoManager() : NULL; @@ -1015,7 +1015,7 @@ void ViewShellManager::Implementation::TakeShellsFromStack (const SfxShell* pShe // Remember the undo manager from the top-most shell on the stack. SfxShell* pTopMostShell = mrBase.GetSubShell(0); - SfxUndoManager* pUndoManager = (pTopMostShell!=NULL) + ::svl::IUndoManager* pUndoManager = (pTopMostShell!=NULL) ? pTopMostShell->GetUndoManager() : NULL; diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index 7aaba7d9c4fa..092dce05a196 100755 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -151,7 +151,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq) if( rReq.GetArgs() ) { BOOL bMergeUndo = FALSE; - SfxUndoManager* pUndoManager = GetDocSh()->GetUndoManager(); + ::svl::IUndoManager* pUndoManager = GetDocSh()->GetUndoManager(); // Anpassungen Start/EndWidth #63083# if(nSId == SID_ATTR_LINE_WIDTH) diff --git a/sd/source/ui/view/drviewsb.cxx b/sd/source/ui/view/drviewsb.cxx index d7cc1fc1d84a..b9f6ec9a4a96 100755 --- a/sd/source/ui/view/drviewsb.cxx +++ b/sd/source/ui/view/drviewsb.cxx @@ -356,7 +356,7 @@ void DrawViewShell::FuTemp02(SfxRequest& rReq) break; } - SfxUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager(); + ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager(); SdLayerModifyUndoAction* pAction = new SdLayerModifyUndoAction( GetDoc(), pLayer, @@ -748,9 +748,9 @@ bool DrawViewShell::RenameSlide( USHORT nPageId, const String & rName ) SetOfByte aVisibleLayers = mpActualPage->TRG_GetMasterPageVisibleLayers(); // (#67720#) - SfxUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager(); + ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager(); ModifyPageUndoAction* pAction = new ModifyPageUndoAction( - pManager, GetDoc(), pUndoPage, rName, pUndoPage->GetAutoLayout(), + GetDoc(), pUndoPage, rName, pUndoPage->GetAutoLayout(), aVisibleLayers.IsSet( nBackground ), aVisibleLayers.IsSet( nBgObj )); pManager->AddUndoAction( pAction ); diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx index dfad4b34c6f2..ee2ac158bffa 100755 --- a/sd/source/ui/view/outlview.cxx +++ b/sd/source/ui/view/outlview.cxx @@ -1451,7 +1451,7 @@ SdPage* OutlineView::GetActualPage() SdPage* pCurrent = GetPageForParagraph(static_cast<Paragraph*>(pSelList->First()) ); DBG_ASSERT( pCurrent || - (mpDocSh->GetUndoManager() && static_cast< sd::UndoManager *>(mpDocSh->GetUndoManager())->isInUndo()) || + (mpDocSh->GetUndoManager() && static_cast< sd::UndoManager *>(mpDocSh->GetUndoManager())->IsDoing()) || maDragAndDropModelGuard.get(), "sd::OutlineView::GetActualPage(), no current page?" ); if( pCurrent ) @@ -1783,7 +1783,7 @@ void OutlineView::EndModelChange() { UpdateDocument(); - SfxUndoManager* pDocUndoMgr = mpDocSh->GetUndoManager(); + ::svl::IUndoManager* pDocUndoMgr = mpDocSh->GetUndoManager(); bool bHasUndoActions = pDocUndoMgr->GetUndoActionCount() != 0; @@ -1801,6 +1801,9 @@ void OutlineView::EndModelChange() if( bHasUndoActions && mpOutliner->GetEditEngine().HasTriedMergeOnLastAddUndo() ) TryToMergeUndoActions(); + + mpOutlineViewShell->Invalidate( SID_UNDO ); + mpOutlineViewShell->Invalidate( SID_REDO ); } /** updates all changes in the outliner model to the draw model */ @@ -1838,7 +1841,7 @@ void OutlineView::UpdateDocument() /** merge edit engine undo actions if possible */ void OutlineView::TryToMergeUndoActions() { - SfxUndoManager& rOutlineUndo = mpOutliner->GetUndoManager(); + ::svl::IUndoManager& rOutlineUndo = mpOutliner->GetUndoManager(); if( rOutlineUndo.GetUndoActionCount() > 1 ) { SfxListUndoAction* pListAction = dynamic_cast< SfxListUndoAction* >( rOutlineUndo.GetUndoAction(0) ); @@ -1846,11 +1849,11 @@ void OutlineView::TryToMergeUndoActions() if( pListAction && pPrevListAction ) { // find the top EditUndo action in the top undo action list - USHORT nAction = pListAction->aUndoActions.Count(); + size_t nAction = pListAction->aUndoActions.size(); EditUndo* pEditUndo = 0; while( !pEditUndo && nAction ) { - pEditUndo = dynamic_cast< EditUndo* >(pListAction->aUndoActions[--nAction]); + pEditUndo = dynamic_cast< EditUndo* >(pListAction->aUndoActions[--nAction].pAction); } USHORT nEditPos = nAction; // we need this later to remove the merged undo actions @@ -1858,7 +1861,7 @@ void OutlineView::TryToMergeUndoActions() // make sure it is the only EditUndo action in the top undo list while( pEditUndo && nAction ) { - if( dynamic_cast< EditUndo* >(pListAction->aUndoActions[--nAction]) ) + if( dynamic_cast< EditUndo* >(pListAction->aUndoActions[--nAction].pAction) ) pEditUndo = 0; } @@ -1867,10 +1870,10 @@ void OutlineView::TryToMergeUndoActions() { // yes, see if we can merge it with the prev undo list - nAction = pPrevListAction->aUndoActions.Count(); + nAction = pPrevListAction->aUndoActions.size(); EditUndo* pPrevEditUndo = 0; while( !pPrevEditUndo && nAction ) - pPrevEditUndo = dynamic_cast< EditUndo* >(pPrevListAction->aUndoActions[--nAction]); + pPrevEditUndo = dynamic_cast< EditUndo* >(pPrevListAction->aUndoActions[--nAction].pAction); if( pPrevEditUndo && pPrevEditUndo->Merge( pEditUndo ) ) { @@ -1878,22 +1881,23 @@ void OutlineView::TryToMergeUndoActions() // the top EditUndo of the previous undo list // first remove the merged undo action - DBG_ASSERT( pListAction->aUndoActions[nEditPos] == pEditUndo, "sd::OutlineView::TryToMergeUndoActions(), wrong edit pos!" ); + DBG_ASSERT( pListAction->aUndoActions[nEditPos].pAction == pEditUndo, + "sd::OutlineView::TryToMergeUndoActions(), wrong edit pos!" ); pListAction->aUndoActions.Remove(nEditPos); delete pEditUndo; // now check if we also can merge the draw undo actions - SfxUndoManager* pDocUndoManager = mpDocSh->GetUndoManager(); - if( pDocUndoManager && ( pListAction->aUndoActions.Count() == 1 )) + ::svl::IUndoManager* pDocUndoManager = mpDocSh->GetUndoManager(); + if( pDocUndoManager && ( pListAction->aUndoActions.size() == 1 )) { - SfxLinkUndoAction* pLinkAction = dynamic_cast< SfxLinkUndoAction* >( pListAction->aUndoActions[0] ); + SfxLinkUndoAction* pLinkAction = dynamic_cast< SfxLinkUndoAction* >( pListAction->aUndoActions[0].pAction ); SfxLinkUndoAction* pPrevLinkAction = 0; if( pLinkAction ) { - nAction = pPrevListAction->aUndoActions.Count(); + nAction = pPrevListAction->aUndoActions.size(); while( !pPrevLinkAction && nAction ) - pPrevLinkAction = dynamic_cast< SfxLinkUndoAction* >(pPrevListAction->aUndoActions[--nAction]); + pPrevLinkAction = dynamic_cast< SfxLinkUndoAction* >(pPrevListAction->aUndoActions[--nAction].pAction); } if( pLinkAction && pPrevLinkAction && @@ -1905,15 +1909,15 @@ void OutlineView::TryToMergeUndoActions() if( pSourceList && pDestinationList ) { - USHORT nCount = pSourceList->aUndoActions.Count(); - USHORT nDestAction = pDestinationList->aUndoActions.Count(); + USHORT nCount = pSourceList->aUndoActions.size(); + USHORT nDestAction = pDestinationList->aUndoActions.size(); while( nCount-- ) { - const SfxUndoAction* pTemp = pSourceList->aUndoActions.GetObject(0); + SfxUndoAction* pTemp = pSourceList->aUndoActions[0].pAction; pSourceList->aUndoActions.Remove(0); pDestinationList->aUndoActions.Insert( pTemp, nDestAction++ ); } - pDestinationList->nCurUndoAction = pDestinationList->aUndoActions.Count(); + pDestinationList->nCurUndoAction = pDestinationList->aUndoActions.size(); pListAction->aUndoActions.Remove(0); delete pLinkAction; @@ -1923,21 +1927,21 @@ void OutlineView::TryToMergeUndoActions() } } - if( pListAction->aUndoActions.Count() ) + if ( !pListAction->aUndoActions.empty() ) { // now we have to move all remaining doc undo actions from the top undo // list to the previous undo list and remove the top undo list - USHORT nCount = pListAction->aUndoActions.Count(); - USHORT nDestAction = pPrevListAction->aUndoActions.Count(); + size_t nCount = pListAction->aUndoActions.size(); + size_t nDestAction = pPrevListAction->aUndoActions.size(); while( nCount-- ) { - const SfxUndoAction* pTemp = pListAction->aUndoActions.GetObject(0); + SfxUndoAction* pTemp = pListAction->aUndoActions[0].pAction; pListAction->aUndoActions.Remove(0); if( pTemp ) pPrevListAction->aUndoActions.Insert( pTemp, nDestAction++ ); } - pPrevListAction->nCurUndoAction = pPrevListAction->aUndoActions.Count(); + pPrevListAction->nCurUndoAction = pPrevListAction->aUndoActions.size(); } rOutlineUndo.RemoveLastUndoAction(); diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx index 3aed9c6c0d9c..36d55213ab78 100755 --- a/sd/source/ui/view/sdview.cxx +++ b/sd/source/ui/view/sdview.cxx @@ -1167,7 +1167,7 @@ bool View::isRecordingUndo() const if( mpDoc && mpDoc->IsUndoEnabled() ) { sd::UndoManager* pUndoManager = mpDoc ? mpDoc->GetUndoManager() : 0; - return pUndoManager && pUndoManager->isInListAction(); + return pUndoManager && pUndoManager->IsInListAction(); } else { diff --git a/sd/source/ui/view/unmodpg.cxx b/sd/source/ui/view/unmodpg.cxx index 5a7f9830895e..66e5c7a506e5 100644..100755 --- a/sd/source/ui/view/unmodpg.cxx +++ b/sd/source/ui/view/unmodpg.cxx @@ -56,15 +56,13 @@ TYPEINIT1(ModifyPageUndoAction, SdUndoAction); \************************************************************************/ ModifyPageUndoAction::ModifyPageUndoAction( - SfxUndoManager* pTheManager, // #67720# SdDrawDocument* pTheDoc, SdPage* pThePage, String aTheNewName, AutoLayout eTheNewAutoLayout, BOOL bTheNewBckgrndVisible, BOOL bTheNewBckgrndObjsVisible) -: SdUndoAction(pTheDoc), - mpManager(pTheManager) +: SdUndoAction(pTheDoc) { DBG_ASSERT(pThePage, "Undo ohne Seite ???"); diff --git a/sd/source/ui/view/viewshe3.cxx b/sd/source/ui/view/viewshe3.cxx index 363ff91edf36..ab4b9e6732f5 100644 --- a/sd/source/ui/view/viewshe3.cxx +++ b/sd/source/ui/view/viewshe3.cxx @@ -151,7 +151,7 @@ void ViewShell::GetMenuState( SfxItemSet &rSet ) // #96090# if(SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_UNDO)) { - SfxUndoManager* pUndoManager = ImpGetUndoManager(); + ::svl::IUndoManager* pUndoManager = ImpGetUndoManager(); sal_Bool bActivate(FALSE); if(pUndoManager) @@ -179,7 +179,7 @@ void ViewShell::GetMenuState( SfxItemSet &rSet ) // #96090# if(SFX_ITEM_AVAILABLE == rSet.GetItemState(SID_REDO)) { - SfxUndoManager* pUndoManager = ImpGetUndoManager(); + ::svl::IUndoManager* pUndoManager = ImpGetUndoManager(); sal_Bool bActivate(FALSE); if(pUndoManager) diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx index 7885d07e5f2c..7f142ded077e 100755 --- a/sd/source/ui/view/viewshel.cxx +++ b/sd/source/ui/view/viewshel.cxx @@ -85,6 +85,7 @@ #include <svx/extrusionbar.hxx> #include <svx/fontworkbar.hxx> #include <svx/svdoutl.hxx> +#include <tools/diagnose_ex.h> // #96090# #include <svl/slstitm.hxx> @@ -1040,7 +1041,7 @@ void ViewShell::UpdatePreview (SdPage*, BOOL ) // usefull is still done. } -SfxUndoManager* ViewShell::ImpGetUndoManager (void) const +::svl::IUndoManager* ViewShell::ImpGetUndoManager (void) const { const ViewShell* pMainViewShell = GetViewShellBase().GetMainViewShell().get(); @@ -1081,7 +1082,7 @@ SfxUndoManager* ViewShell::ImpGetUndoManager (void) const void ViewShell::ImpGetUndoStrings(SfxItemSet &rSet) const { - SfxUndoManager* pUndoManager = ImpGetUndoManager(); + ::svl::IUndoManager* pUndoManager = ImpGetUndoManager(); if(pUndoManager) { sal_uInt16 nCount(pUndoManager->GetUndoActionCount()); @@ -1116,7 +1117,7 @@ void ViewShell::ImpGetUndoStrings(SfxItemSet &rSet) const void ViewShell::ImpGetRedoStrings(SfxItemSet &rSet) const { - SfxUndoManager* pUndoManager = ImpGetUndoManager(); + ::svl::IUndoManager* pUndoManager = ImpGetUndoManager(); if(pUndoManager) { sal_uInt16 nCount(pUndoManager->GetRedoActionCount()); @@ -1151,7 +1152,7 @@ void ViewShell::ImpGetRedoStrings(SfxItemSet &rSet) const void ViewShell::ImpSidUndo(BOOL, SfxRequest& rReq) { - SfxUndoManager* pUndoManager = ImpGetUndoManager(); + ::svl::IUndoManager* pUndoManager = ImpGetUndoManager(); sal_uInt16 nNumber(1); const SfxItemSet* pReqArgs = rReq.GetArgs(); @@ -1166,11 +1167,19 @@ void ViewShell::ImpSidUndo(BOOL, SfxRequest& rReq) sal_uInt16 nCount(pUndoManager->GetUndoActionCount()); if(nCount >= nNumber) { - // #94637# when UndoStack is cleared by ModifyPageUndoAction - // the nCount may have changed, so test GetUndoActionCount() - while(nNumber-- && pUndoManager->GetUndoActionCount()) + try { - pUndoManager->Undo(); + // #94637# when UndoStack is cleared by ModifyPageUndoAction + // the nCount may have changed, so test GetUndoActionCount() + while(nNumber-- && pUndoManager->GetUndoActionCount()) + { + pUndoManager->Undo(); + } + } + catch( const Exception& e ) + { + // no need to handle. By definition, the UndoManager handled this by clearing the + // Undo/Redo stacks } } @@ -1192,7 +1201,7 @@ void ViewShell::ImpSidUndo(BOOL, SfxRequest& rReq) void ViewShell::ImpSidRedo(BOOL, SfxRequest& rReq) { - SfxUndoManager* pUndoManager = ImpGetUndoManager(); + ::svl::IUndoManager* pUndoManager = ImpGetUndoManager(); sal_uInt16 nNumber(1); const SfxItemSet* pReqArgs = rReq.GetArgs(); @@ -1207,11 +1216,19 @@ void ViewShell::ImpSidRedo(BOOL, SfxRequest& rReq) sal_uInt16 nCount(pUndoManager->GetRedoActionCount()); if(nCount >= nNumber) { - // #94637# when UndoStack is cleared by ModifyPageRedoAction - // the nCount may have changed, so test GetRedoActionCount() - while(nNumber-- && pUndoManager->GetRedoActionCount()) + try + { + // #94637# when UndoStack is cleared by ModifyPageRedoAction + // the nCount may have changed, so test GetRedoActionCount() + while(nNumber-- && pUndoManager->GetRedoActionCount()) + { + pUndoManager->Redo(); + } + } + catch( const Exception& e ) { - pUndoManager->Redo(); + // no need to handle. By definition, the UndoManager handled this by clearing the + // Undo/Redo stacks } } |