diff options
author | Armin Le Grand <alg@apache.org> | 2012-08-09 08:42:27 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-05-28 15:55:23 +0100 |
commit | 12a4200e8ff7f045efcc7e9d15a24b15b248c437 (patch) | |
tree | 00363aedf07713ec9ff931d933b86a6b35e20267 /editeng/source | |
parent | 64b07d99aa0b31b3d04519afe6afe0cdf36bcd6f (diff) |
Related: #i120498# Enhanced Undo/Redo and user experience...
when editing texts in graphic objects and/or tables
(cherry picked from commit a096725779b210c7a2706e72596fd7c80e049fdd)
Conflicts:
editeng/inc/editeng/editeng.hxx
editeng/inc/editeng/editund2.hxx
editeng/inc/editeng/outliner.hxx
editeng/source/editeng/editundo.cxx
editeng/source/editeng/impedit.hxx
editeng/source/outliner/outliner.cxx
sd/source/core/undo/undomanager.cxx
sd/source/ui/view/drviewse.cxx
svx/Library_svxcore.mk
svx/Package_inc.mk
svx/inc/svx/svdedxv.hxx
svx/source/svdraw/svdedxv.cxx
Change-Id: I40e3ef2dff681f9b6f2f6b5d35507071f8110533
Comment unused variable pNewEditUndoManager to silence the compiler
(cherry picked from commit 568655083af7830e7b9edf56ef862ddf9a99003b)
Change-Id: Ib7179ee6c34ce03a75942978831c3a55968f161f
Removed unused variable
(cherry picked from commit 0bbde4414badfd40234de4a4c9f750194f5d1d5e)
Change-Id: I39e7f25426e8e7d1367102d603b0f6c84d96622f
Diffstat (limited to 'editeng/source')
-rw-r--r-- | editeng/source/editeng/editeng.cxx | 6 | ||||
-rw-r--r-- | editeng/source/editeng/editundo.cxx | 15 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.hxx | 25 | ||||
-rw-r--r-- | editeng/source/outliner/outliner.cxx | 6 |
4 files changed, 48 insertions, 4 deletions
diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 1edc5aefd79d..9bf29e5c2e9b 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -134,6 +134,12 @@ sal_Bool EditEngine::IsInUndo() return pImpEditEngine->GetUndoManager(); } +::svl::IUndoManager* EditEngine::SetUndoManager(::svl::IUndoManager* pNew) +{ + DBG_CHKTHIS( EditEngine, 0 ); + return pImpEditEngine->SetUndoManager(pNew); +} + void EditEngine::UndoActionStart( sal_uInt16 nId ) { DBG_CHKTHIS( EditEngine, 0 ); diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index 2f548e36d83f..dfc8df189530 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -37,11 +37,20 @@ static void lcl_DoSetSelection( EditView* pView, sal_uInt16 nPara ) pView->GetImpEditView()->SetEditSelection( aSel ); } -EditUndoManager::EditUndoManager(EditEngine* pEE) : mpEditEngine(pEE) {} +EditUndoManager::EditUndoManager(sal_uInt16 nMaxUndoActionCount ) +: SfxUndoManager(nMaxUndoActionCount), + mpEditEngine(0) +{ +} + +void EditUndoManager::SetEditEngine(EditEngine* pNew) +{ + mpEditEngine = pNew; +} sal_Bool EditUndoManager::Undo() { - if ( GetUndoActionCount() == 0 ) + if ( !mpEditEngine || GetUndoActionCount() == 0 ) return sal_False; DBG_ASSERT( mpEditEngine->GetActiveView(), "Active View?" ); @@ -76,7 +85,7 @@ sal_Bool EditUndoManager::Undo() sal_Bool EditUndoManager::Redo() { - if ( GetRedoActionCount() == 0 ) + if ( !mpEditEngine || GetRedoActionCount() == 0 ) return sal_False; DBG_ASSERT( mpEditEngine->GetActiveView(), "Active View?" ); diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index b6dbcdc8a08a..55b98f15fcb6 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -681,6 +681,7 @@ public: ~ImpEditEngine(); inline EditUndoManager& GetUndoManager(); + inline ::svl::IUndoManager* SetUndoManager(::svl::IUndoManager* pNew); void SetUpdateMode( bool bUp, EditView* pCurView = 0, sal_Bool bForceUpdate = sal_False ); bool GetUpdateMode() const { return bUpdate; } @@ -1072,10 +1073,32 @@ inline void ImpEditEngine::IdleFormatAndUpdate( EditView* pCurView ) inline EditUndoManager& ImpEditEngine::GetUndoManager() { if ( !pUndoManager ) - pUndoManager = new EditUndoManager(pEditEngine); + { + pUndoManager = new EditUndoManager(); + pUndoManager->SetEditEngine(pEditEngine); + } return *pUndoManager; } +inline ::svl::IUndoManager* ImpEditEngine::SetUndoManager(::svl::IUndoManager* pNew) +{ + ::svl::IUndoManager* pRetval = pUndoManager; + + if(pUndoManager) + { + pUndoManager->SetEditEngine(0); + } + + pUndoManager = dynamic_cast< EditUndoManager* >(pNew); + + if(pUndoManager) + { + pUndoManager->SetEditEngine(pEditEngine); + } + + return pRetval; +} + inline const ParaPortion* ImpEditEngine::FindParaPortion( const ContentNode* pNode ) const { sal_Int32 nPos = aEditDoc.GetPos( pNode ); diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx index c8971da9f06a..c5fe66c913b5 100644 --- a/editeng/source/outliner/outliner.cxx +++ b/editeng/source/outliner/outliner.cxx @@ -1218,6 +1218,12 @@ void Outliner::ImpFilterIndents( sal_Int32 nFirstPara, sal_Int32 nLastPara ) return pEditEngine->GetUndoManager(); } +::svl::IUndoManager* Outliner::SetUndoManager(::svl::IUndoManager* pNew) +{ + DBG_CHKTHIS(Outliner,0); + return pEditEngine->SetUndoManager(pNew); +} + void Outliner::ImpTextPasted( sal_Int32 nStartPara, sal_Int32 nCount ) { DBG_CHKTHIS(Outliner,0); |