diff options
Diffstat (limited to 'sd/source/ui/view/outlview.cxx')
-rwxr-xr-x | sd/source/ui/view/outlview.cxx | 50 |
1 files changed, 27 insertions, 23 deletions
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(); |