summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorArmin Le Grand <alg@apache.org>2012-08-09 08:42:27 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-05-28 15:55:23 +0100
commit12a4200e8ff7f045efcc7e9d15a24b15b248c437 (patch)
tree00363aedf07713ec9ff931d933b86a6b35e20267 /editeng
parent64b07d99aa0b31b3d04519afe6afe0cdf36bcd6f (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')
-rw-r--r--editeng/source/editeng/editeng.cxx6
-rw-r--r--editeng/source/editeng/editundo.cxx15
-rw-r--r--editeng/source/editeng/impedit.hxx25
-rw-r--r--editeng/source/outliner/outliner.cxx6
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);