editeng/inc/editeng/editeng.hxx | 19 +++ editeng/inc/editeng/editund2.hxx | 12 +- editeng/source/editeng/editeng.cxx | 75 +++++++++++++-- editeng/source/editeng/editundo.cxx | 174 ++++++++++++++++++------------------ editeng/source/editeng/editundo.hxx | 10 +- editeng/source/editeng/impedit.hxx | 14 -- 6 files changed, 189 insertions(+), 115 deletions(-)
New commits: commit 620ca8c527fb77334bdb29eb4d00e8102b731bde Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Apr 16 23:48:35 2012 -0400 Remove the last undo friend from ImpEditEngine. diff --git a/editeng/inc/editeng/editeng.hxx b/editeng/inc/editeng/editeng.hxx index a239b9f..043776b 100644 --- a/editeng/inc/editeng/editeng.hxx +++ b/editeng/inc/editeng/editeng.hxx @@ -564,6 +564,8 @@ public: EditPaM ConnectContents(sal_uInt16 nLeftNode, bool bBackward); EditPaM InsertFeature(const EditSelection& rEditSelection, const SfxPoolItem& rItem); + + EditSelection MoveParagraphs(const Range& rParagraphs, sal_uInt16 nNewPos, EditView* pCurView); }; #endif // _MyEDITENG_HXX diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 4a1fa61..81ad880 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -787,6 +787,11 @@ EditPaM EditEngine::InsertFeature(const EditSelection& rEditSelection, const Sfx return pImpEditEngine->ImpInsertFeature(rEditSelection, rItem); } +EditSelection EditEngine::MoveParagraphs(const Range& rParagraphs, sal_uInt16 nNewPos, EditView* pCurView) +{ + return pImpEditEngine->MoveParagraphs(rParagraphs, nNewPos, pCurView); +} + uno::Reference<datatransfer::XTransferable> EditEngine::CreateTransferable(const EditSelection& rSelection) { return pImpEditEngine->CreateTransferable(rSelection); diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index 9c370d1..067d84f 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -448,7 +448,7 @@ EditUndoMoveParagraphs::~EditUndoMoveParagraphs() void EditUndoMoveParagraphs::Undo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); Range aTmpRange( nParagraphs ); long nTmpDest = aTmpRange.Min(); @@ -465,15 +465,15 @@ void EditUndoMoveParagraphs::Undo() else nTmpDest += aTmpRange.Len(); - EditSelection aNewSel( GetImpEditEngine()->MoveParagraphs( aTmpRange, (sal_uInt16)nTmpDest, 0 ) ); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aNewSel ); + EditSelection aNewSel = GetEditEngine()->MoveParagraphs(aTmpRange, (sal_uInt16)nTmpDest, 0); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aNewSel ); } void EditUndoMoveParagraphs::Redo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - EditSelection aNewSel( GetImpEditEngine()->MoveParagraphs( nParagraphs, nDest, 0 ) ); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aNewSel ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + EditSelection aNewSel = GetEditEngine()->MoveParagraphs(nParagraphs, nDest, 0); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aNewSel ); } EditUndoSetStyleSheet::EditUndoSetStyleSheet( ImpEditEngine* _pImpEE, sal_uInt16 nP, diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 6e0ebb7..6b013bc 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -380,12 +380,8 @@ public: class ImpEditEngine : public SfxListener, boost::noncopyable { - // The Undos have to manipulate directly ( private-Methods ), - // do that no new Undo is inserted! - friend class EditUndoMoveParagraphs; - - friend class EditEngine; // For access to Imp-Methods - friend class EditDbg; // Debug Routines + friend class EditEngine; + friend class EditDbg; public: typedef std::vector<EditView*> ViewsType; commit ba644a0947a91bba7ccb62fe6e1ae85f0ee30041 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Apr 16 23:44:29 2012 -0400 EditUndoSplitPara diff --git a/editeng/inc/editeng/editeng.hxx b/editeng/inc/editeng/editeng.hxx index 5dfddf7..a239b9f 100644 --- a/editeng/inc/editeng/editeng.hxx +++ b/editeng/inc/editeng/editeng.hxx @@ -562,6 +562,8 @@ public: void InsertContent(ContentNode* pNode, sal_uInt16 nPos); EditPaM SplitContent(sal_uInt16 nNode, sal_uInt16 nSepPos); EditPaM ConnectContents(sal_uInt16 nLeftNode, bool bBackward); + + EditPaM InsertFeature(const EditSelection& rEditSelection, const SfxPoolItem& rItem); }; #endif // _MyEDITENG_HXX diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 3d28480..4a1fa61 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -782,6 +782,11 @@ EditPaM EditEngine::ConnectContents(sal_uInt16 nLeftNode, bool bBackward) return pImpEditEngine->ConnectContents(nLeftNode, bBackward); } +EditPaM EditEngine::InsertFeature(const EditSelection& rEditSelection, const SfxPoolItem& rItem) +{ + return pImpEditEngine->ImpInsertFeature(rEditSelection, rItem); +} + uno::Reference<datatransfer::XTransferable> EditEngine::CreateTransferable(const EditSelection& rSelection) { return pImpEditEngine->CreateTransferable(rSelection); diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index fa5c72f..9c370d1 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -412,26 +412,26 @@ EditUndoInsertFeature::~EditUndoInsertFeature() void EditUndoInsertFeature::Undo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - EditPaM aPaM( GetImpEditEngine()->CreateEditPaM( aEPaM ) ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + EditPaM aPaM = GetEditEngine()->CreateEditPaM(aEPaM); EditSelection aSel( aPaM, aPaM ); // Attributes are then corrected implicitly by the document ... aSel.Max().GetIndex()++; - GetImpEditEngine()->ImpDeleteSelection( aSel ); + GetEditEngine()->DeleteSelection(aSel); aSel.Max().GetIndex()--; // For Selection - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aSel ); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection(aSel); } void EditUndoInsertFeature::Redo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - EditPaM aPaM( GetImpEditEngine()->CreateEditPaM( aEPaM ) ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + EditPaM aPaM = GetEditEngine()->CreateEditPaM(aEPaM); EditSelection aSel( aPaM, aPaM ); - GetImpEditEngine()->ImpInsertFeature( aSel, *pFeature ); + GetEditEngine()->InsertFeature(aSel, *pFeature); if ( pFeature->Which() == EE_FEATURE_FIELD ) - GetImpEditEngine()->UpdateFields(); + GetEditEngine()->UpdateFieldsOnly(); aSel.Max().GetIndex()++; - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aSel ); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection(aSel); } EditUndoMoveParagraphs::EditUndoMoveParagraphs diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 842ba66..6e0ebb7 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -382,7 +382,6 @@ class ImpEditEngine : public SfxListener, boost::noncopyable { // The Undos have to manipulate directly ( private-Methods ), // do that no new Undo is inserted! - friend class EditUndoInsertFeature; friend class EditUndoMoveParagraphs; friend class EditEngine; // For access to Imp-Methods commit 6199bd3f73019cc109d385db14596e1ca40300bc Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Apr 16 23:40:39 2012 -0400 EditUndoSplitPara diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index 0aa0a4d..fa5c72f 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -316,16 +316,16 @@ EditUndoSplitPara::~EditUndoSplitPara() void EditUndoSplitPara::Undo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - EditPaM aPaM = GetImpEditEngine()->ConnectContents( nNode, sal_False ); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + EditPaM aPaM = GetEditEngine()->ConnectContents(nNode, false); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); } void EditUndoSplitPara::Redo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - EditPaM aPaM = GetImpEditEngine()->SplitContent( nNode, nSepPos ); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + EditPaM aPaM = GetEditEngine()->SplitContent(nNode, nSepPos); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); } EditUndoInsertChars::EditUndoInsertChars( ImpEditEngine* _pImpEE, const EPaM& rEPaM, const XubString& rStr ) diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index b1d8868..842ba66 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -382,7 +382,6 @@ class ImpEditEngine : public SfxListener, boost::noncopyable { // The Undos have to manipulate directly ( private-Methods ), // do that no new Undo is inserted! - friend class EditUndoSplitPara; friend class EditUndoInsertFeature; friend class EditUndoMoveParagraphs; commit a5927d2166a5095b3edbd1886a6e00bb3f863915 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Apr 16 23:38:43 2012 -0400 Same with EditUndoConnectParas. diff --git a/editeng/inc/editeng/editeng.hxx b/editeng/inc/editeng/editeng.hxx index c7357df..5dfddf7 100644 --- a/editeng/inc/editeng/editeng.hxx +++ b/editeng/inc/editeng/editeng.hxx @@ -553,12 +553,15 @@ public: void RemoveParaPortion(size_t nNode); + void SetCallParaInsertedOrDeleted(bool b); bool IsCallParaInsertedOrDeleted() const; void AppendDeletedNodeInfo(DeletedNodeInfo* pInfo); void UpdateSelections(); void InsertContent(ContentNode* pNode, sal_uInt16 nPos); + EditPaM SplitContent(sal_uInt16 nNode, sal_uInt16 nSepPos); + EditPaM ConnectContents(sal_uInt16 nLeftNode, bool bBackward); }; #endif // _MyEDITENG_HXX diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 93f5dec..3d28480 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -747,6 +747,11 @@ void EditEngine::RemoveParaPortion(size_t nNode) pImpEditEngine->GetParaPortions().Remove(nNode); } +void EditEngine::SetCallParaInsertedOrDeleted(bool b) +{ + pImpEditEngine->SetCallParaInsertedOrDeleted(b); +} + bool EditEngine::IsCallParaInsertedOrDeleted() const { return pImpEditEngine->IsCallParaInsertedOrDeleted(); @@ -767,6 +772,16 @@ void EditEngine::InsertContent(ContentNode* pNode, sal_uInt16 nPos) pImpEditEngine->InsertContent(pNode, nPos); } +EditPaM EditEngine::SplitContent(sal_uInt16 nNode, sal_uInt16 nSepPos) +{ + return pImpEditEngine->SplitContent(nNode, nSepPos); +} + +EditPaM EditEngine::ConnectContents(sal_uInt16 nLeftNode, bool bBackward) +{ + return pImpEditEngine->ConnectContents(nLeftNode, bBackward); +} + uno::Reference<datatransfer::XTransferable> EditEngine::CreateTransferable(const EditSelection& rSelection) { return pImpEditEngine->CreateTransferable(rSelection); diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index fb7cd57..0aa0a4d 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -268,39 +268,39 @@ EditUndoConnectParas::~EditUndoConnectParas() void EditUndoConnectParas::Undo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); // For SplitContent ParagraphInserted can not be called yet because the // Outliner relies on the attributes to initialize the depth - sal_Bool bCall = GetImpEditEngine()->IsCallParaInsertedOrDeleted(); - GetImpEditEngine()->SetCallParaInsertedOrDeleted( sal_False ); + sal_Bool bCall = GetEditEngine()->IsCallParaInsertedOrDeleted(); + GetEditEngine()->SetCallParaInsertedOrDeleted(false); - EditPaM aPaM = GetImpEditEngine()->SplitContent( nNode, nSepPos ); - GetImpEditEngine()->SetParaAttribs( nNode, aLeftParaAttribs ); - GetImpEditEngine()->SetParaAttribs( nNode+1, aRightParaAttribs ); + EditPaM aPaM = GetEditEngine()->SplitContent(nNode, nSepPos); + GetEditEngine()->SetParaAttribs( nNode, aLeftParaAttribs ); + GetEditEngine()->SetParaAttribs( nNode+1, aRightParaAttribs ); - GetImpEditEngine()->SetCallParaInsertedOrDeleted( bCall ); - if ( GetImpEditEngine()->IsCallParaInsertedOrDeleted() ) - GetImpEditEngine()->GetEditEnginePtr()->ParagraphInserted( nNode+1 ); + GetEditEngine()->SetCallParaInsertedOrDeleted( bCall ); + if (GetEditEngine()->IsCallParaInsertedOrDeleted()) + GetEditEngine()->ParagraphInserted( nNode+1 ); - if ( GetImpEditEngine()->GetStyleSheetPool() ) + if (GetEditEngine()->GetStyleSheetPool()) { if ( aLeftStyleName.Len() ) - GetImpEditEngine()->SetStyleSheet( (sal_uInt16)nNode, (SfxStyleSheet*)GetImpEditEngine()->GetStyleSheetPool()->Find( aLeftStyleName, eLeftStyleFamily ) ); + GetEditEngine()->SetStyleSheet( (sal_uInt16)nNode, (SfxStyleSheet*)GetEditEngine()->GetStyleSheetPool()->Find( aLeftStyleName, eLeftStyleFamily ) ); if ( aRightStyleName.Len() ) - GetImpEditEngine()->SetStyleSheet( nNode+1, (SfxStyleSheet*)GetImpEditEngine()->GetStyleSheetPool()->Find( aRightStyleName, eRightStyleFamily ) ); + GetEditEngine()->SetStyleSheet( nNode+1, (SfxStyleSheet*)GetEditEngine()->GetStyleSheetPool()->Find( aRightStyleName, eRightStyleFamily ) ); } - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); } void EditUndoConnectParas::Redo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: Np Active View!" ); - EditPaM aPaM = GetImpEditEngine()->ConnectContents( nNode, bBackward ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: Np Active View!" ); + EditPaM aPaM = GetEditEngine()->ConnectContents( nNode, bBackward ); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); } EditUndoSplitPara::EditUndoSplitPara( ImpEditEngine* _pImpEE, sal_uInt16 nN, sal_uInt16 nSP ) diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 6e31d6c..b1d8868 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -382,7 +382,6 @@ class ImpEditEngine : public SfxListener, boost::noncopyable { // The Undos have to manipulate directly ( private-Methods ), // do that no new Undo is inserted! - friend class EditUndoConnectParas; friend class EditUndoSplitPara; friend class EditUndoInsertFeature; friend class EditUndoMoveParagraphs; commit c998665f8a5d7b46772fbd10b6cbd03384295c7f Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Apr 16 23:31:46 2012 -0400 Same with EditUndoDelContent. diff --git a/editeng/inc/editeng/editeng.hxx b/editeng/inc/editeng/editeng.hxx index 215f63f..c7357df 100644 --- a/editeng/inc/editeng/editeng.hxx +++ b/editeng/inc/editeng/editeng.hxx @@ -110,6 +110,7 @@ class EditDoc; struct PasteOrDropInfos; class Range; struct EPaM; +class DeletedNodeInfo; ////////////////////////////////////////////////////////////////////////////// @@ -549,6 +550,15 @@ public: String GetSelected(const EditSelection& rSel, const LineEnd eParaSep = LINEEND_LF) const; sal_uInt16 GetScriptType(const EditSelection& rSel) const; + + void RemoveParaPortion(size_t nNode); + + bool IsCallParaInsertedOrDeleted() const; + + void AppendDeletedNodeInfo(DeletedNodeInfo* pInfo); + void UpdateSelections(); + + void InsertContent(ContentNode* pNode, sal_uInt16 nPos); }; #endif // _MyEDITENG_HXX diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 1fae331..93f5dec 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -742,6 +742,31 @@ sal_uInt16 EditEngine::GetScriptType(const EditSelection& rSel) const return pImpEditEngine->GetScriptType(rSel); } +void EditEngine::RemoveParaPortion(size_t nNode) +{ + pImpEditEngine->GetParaPortions().Remove(nNode); +} + +bool EditEngine::IsCallParaInsertedOrDeleted() const +{ + return pImpEditEngine->IsCallParaInsertedOrDeleted(); +} + +void EditEngine::AppendDeletedNodeInfo(DeletedNodeInfo* pInfo) +{ + pImpEditEngine->aDeletedNodes.push_back(pInfo); +} + +void EditEngine::UpdateSelections() +{ + pImpEditEngine->UpdateSelections(); +} + +void EditEngine::InsertContent(ContentNode* pNode, sal_uInt16 nPos) +{ + pImpEditEngine->InsertContent(pNode, nPos); +} + uno::Reference<datatransfer::XTransferable> EditEngine::CreateTransferable(const EditSelection& rSelection) { return pImpEditEngine->CreateTransferable(rSelection); diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index e2b9d81..fb7cd57 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -183,13 +183,12 @@ XubString EditUndo::GetComment() const return aComment; } -EditUndoDelContent::EditUndoDelContent( ImpEditEngine* _pImpEE, ContentNode* pNode, sal_uInt16 n ) - : EditUndo( EDITUNDO_DELCONTENT, _pImpEE ) -{ - pContentNode = pNode; - nNode = n; - bDelObject = sal_True; -} +EditUndoDelContent::EditUndoDelContent( + ImpEditEngine* _pImpEE, ContentNode* pNode, size_t nPortion) : + EditUndo(EDITUNDO_DELCONTENT, _pImpEE), + bDelObject(true), + nNode(nPortion), + pContentNode(pNode) {} EditUndoDelContent::~EditUndoDelContent() { @@ -199,44 +198,44 @@ EditUndoDelContent::~EditUndoDelContent() void EditUndoDelContent::Undo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - GetImpEditEngine()->InsertContent( pContentNode, nNode ); - bDelObject = sal_False; // belongs to the Engine again + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + GetEditEngine()->InsertContent( pContentNode, nNode ); + bDelObject = false; // belongs to the Engine again EditSelection aSel( EditPaM( pContentNode, 0 ), EditPaM( pContentNode, pContentNode->Len() ) ); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aSel ); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection(aSel); } void EditUndoDelContent::Redo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - ImpEditEngine* _pImpEE = GetImpEditEngine(); + EditEngine* pEE = GetEditEngine(); // pNode is no longer correct, if the paragraphs where merged // in between Undos - pContentNode = _pImpEE->GetEditDoc().GetObject( nNode ); + pContentNode = pEE->GetEditDoc().GetObject( nNode ); DBG_ASSERT( pContentNode, "EditUndoDelContent::Redo(): Node?!" ); - _pImpEE->GetParaPortions().Remove( nNode ); + pEE->RemoveParaPortion(nNode); // Do not delete node, depends on the undo! - _pImpEE->GetEditDoc().Remove( nNode ); - if( _pImpEE->IsCallParaInsertedOrDeleted() ) - _pImpEE->GetEditEnginePtr()->ParagraphDeleted( nNode ); + pEE->GetEditDoc().Remove( nNode ); + if (pEE->IsCallParaInsertedOrDeleted()) + pEE->ParagraphDeleted( nNode ); DeletedNodeInfo* pInf = new DeletedNodeInfo( (sal_uLong)pContentNode, nNode ); - _pImpEE->aDeletedNodes.push_back(pInf); - _pImpEE->UpdateSelections(); + pEE->AppendDeletedNodeInfo(pInf); + pEE->UpdateSelections(); - ContentNode* pN = ( nNode < _pImpEE->GetEditDoc().Count() ) - ? _pImpEE->GetEditDoc().GetObject( nNode ) - : _pImpEE->GetEditDoc().GetObject( nNode-1 ); + ContentNode* pN = ( nNode < pEE->GetEditDoc().Count() ) + ? pEE->GetEditDoc().GetObject( nNode ) + : pEE->GetEditDoc().GetObject( nNode-1 ); DBG_ASSERT( pN && ( pN != pContentNode ), "?! RemoveContent !? " ); EditPaM aPaM( pN, pN->Len() ); - bDelObject = sal_True; // belongs to the Engine again + bDelObject = true; // belongs to the Engine again - _pImpEE->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); + pEE->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aPaM ) ); } EditUndoConnectParas::EditUndoConnectParas( ImpEditEngine* _pImpEE, sal_uInt16 nN, sal_uInt16 nSP, diff --git a/editeng/source/editeng/editundo.hxx b/editeng/source/editeng/editundo.hxx index bfb141c..67a1b25 100644 --- a/editeng/source/editeng/editundo.hxx +++ b/editeng/source/editeng/editundo.hxx @@ -48,15 +48,15 @@ class EditView; class EditUndoDelContent : public EditUndo { private: - sal_Bool bDelObject; - sal_uInt16 nNode; + bool bDelObject; + size_t nNode; ContentNode* pContentNode; // Points to the valid, // undestroyed object! public: - TYPEINFO(); - EditUndoDelContent( ImpEditEngine* pImpEE, ContentNode* pNode, sal_uInt16 nPortio ); - ~EditUndoDelContent(); + TYPEINFO(); + EditUndoDelContent(ImpEditEngine* pImpEE, ContentNode* pNode, size_t nPortion); + virtual ~EditUndoDelContent(); virtual void Undo(); virtual void Redo(); diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 9f8fb46..6e31d6c 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -382,7 +382,6 @@ class ImpEditEngine : public SfxListener, boost::noncopyable { // The Undos have to manipulate directly ( private-Methods ), // do that no new Undo is inserted! - friend class EditUndoDelContent; friend class EditUndoConnectParas; friend class EditUndoSplitPara; friend class EditUndoInsertFeature; commit 1ab81c180bdda46434fe470f31450c676265aefd Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Apr 16 23:12:59 2012 -0400 same with EditUndoRemoveChars. diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index c98ea01..e2b9d81 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -381,22 +381,22 @@ EditUndoRemoveChars::EditUndoRemoveChars( ImpEditEngine* _pImpEE, const EPaM& rE void EditUndoRemoveChars::Undo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: Keine Active View!" ); - EditPaM aPaM( GetImpEditEngine()->CreateEditPaM( aEPaM ) ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: Keine Active View!" ); + EditPaM aPaM = GetEditEngine()->CreateEditPaM(aEPaM); EditSelection aSel( aPaM, aPaM ); - GetImpEditEngine()->ImpInsertText( aSel, aText ); + GetEditEngine()->InsertText(aSel, aText); aSel.Max().GetIndex() = aSel.Max().GetIndex() + aText.Len(); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aSel ); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection(aSel); } void EditUndoRemoveChars::Redo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - EditPaM aPaM( GetImpEditEngine()->CreateEditPaM( aEPaM ) ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + EditPaM aPaM = GetEditEngine()->CreateEditPaM(aEPaM); EditSelection aSel( aPaM, aPaM ); aSel.Max().GetIndex() = aSel.Max().GetIndex() + aText.Len(); - EditPaM aNewPaM = GetImpEditEngine()->ImpDeleteSelection( aSel ); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( aNewPaM ); + EditPaM aNewPaM = GetEditEngine()->DeleteSelection(aSel); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection(aNewPaM); } EditUndoInsertFeature::EditUndoInsertFeature( ImpEditEngine* _pImpEE, const EPaM& rEPaM, const SfxPoolItem& rFeature) diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index a74fbef..9f8fb46 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -382,7 +382,6 @@ class ImpEditEngine : public SfxListener, boost::noncopyable { // The Undos have to manipulate directly ( private-Methods ), // do that no new Undo is inserted! - friend class EditUndoRemoveChars; friend class EditUndoDelContent; friend class EditUndoConnectParas; friend class EditUndoSplitPara; commit c6eceac87b5f904a2ec51b161dd4136bfb8c4e54 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Apr 16 23:10:13 2012 -0400 EditUndoInsertCharts is no longer a friend of ImpEditEngine. diff --git a/editeng/inc/editeng/editeng.hxx b/editeng/inc/editeng/editeng.hxx index 8bfe3f4..215f63f 100644 --- a/editeng/inc/editeng/editeng.hxx +++ b/editeng/inc/editeng/editeng.hxx @@ -109,6 +109,7 @@ class EditSelectionEngine; class EditDoc; struct PasteOrDropInfos; class Range; +struct EPaM; ////////////////////////////////////////////////////////////////////////////// @@ -519,6 +520,7 @@ public: void ParaAttribsToCharAttribs(ContentNode* pNode); + EditPaM CreateEditPaM(const EPaM& rEPaM); EditPaM ConnectParagraphs( ContentNode* pLeft, ContentNode* pRight, bool bBackward = false); diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index c5e1e5a..1fae331 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -752,6 +752,11 @@ void EditEngine::ParaAttribsToCharAttribs(ContentNode* pNode) pImpEditEngine->ParaAttribsToCharAttribs(pNode); } +EditPaM EditEngine::CreateEditPaM(const EPaM& rEPaM) +{ + return pImpEditEngine->CreateEditPaM(rEPaM); +} + EditPaM EditEngine::ConnectParagraphs( ContentNode* pLeft, ContentNode* pRight, bool bBackward) { @@ -2543,7 +2548,7 @@ void EditEngine::ParagraphHeightChanged( sal_uInt16 nPara ) XubString EditEngine::GetUndoComment( sal_uInt16 nId ) const { DBG_CHKTHIS( EditEngine, 0 ); - rtl::OUString aComment; + XubString aComment; switch ( nId ) { case EDITUNDO_REMOVECHARS: @@ -2552,12 +2557,12 @@ XubString EditEngine::GetUndoComment( sal_uInt16 nId ) const case EDITUNDO_DELCONTENT: case EDITUNDO_DELETE: case EDITUNDO_CUT: - aComment = EE_RESSTR(RID_EDITUNDO_DEL); + aComment = XubString( EditResId( RID_EDITUNDO_DEL ) ); break; case EDITUNDO_MOVEPARAGRAPHS: case EDITUNDO_MOVEPARAS: case EDITUNDO_DRAGANDDROP: - aComment = EE_RESSTR(RID_EDITUNDO_MOVE); + aComment = XubString( EditResId( RID_EDITUNDO_MOVE ) ); break; case EDITUNDO_INSERTFEATURE: case EDITUNDO_SPLITPARA: @@ -2565,29 +2570,29 @@ XubString EditEngine::GetUndoComment( sal_uInt16 nId ) const case EDITUNDO_PASTE: case EDITUNDO_INSERT: case EDITUNDO_READ: - aComment = EE_RESSTR(RID_EDITUNDO_INSERT); + aComment = XubString( EditResId( RID_EDITUNDO_INSERT ) ); break; case EDITUNDO_SRCHANDREPL: case EDITUNDO_REPLACEALL: - aComment = EE_RESSTR(RID_EDITUNDO_REPLACE); + aComment = XubString( EditResId( RID_EDITUNDO_REPLACE ) ); break; case EDITUNDO_ATTRIBS: case EDITUNDO_PARAATTRIBS: case EDITUNDO_STRETCH: - aComment = EE_RESSTR(RID_EDITUNDO_SETATTRIBS); + aComment = XubString( EditResId( RID_EDITUNDO_SETATTRIBS ) ); break; case EDITUNDO_RESETATTRIBS: - aComment = EE_RESSTR(RID_EDITUNDO_RESETATTRIBS); + aComment = XubString( EditResId( RID_EDITUNDO_RESETATTRIBS ) ); break; case EDITUNDO_STYLESHEET: - aComment = EE_RESSTR(RID_EDITUNDO_SETSTYLE); + aComment = XubString( EditResId( RID_EDITUNDO_SETSTYLE ) ); break; case EDITUNDO_TRANSLITERATE: - aComment = EE_RESSTR(RID_EDITUNDO_TRANSLITERATE); + aComment = XubString( EditResId( RID_EDITUNDO_TRANSLITERATE ) ); break; case EDITUNDO_INDENTBLOCK: case EDITUNDO_UNINDENTBLOCK: - aComment = EE_RESSTR(RID_EDITUNDO_INDENT); + aComment = XubString( EditResId( RID_EDITUNDO_INDENT ) ); break; } return aComment; diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index f395729..c98ea01 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -337,22 +337,22 @@ EditUndoInsertChars::EditUndoInsertChars( ImpEditEngine* _pImpEE, const EPaM& rE void EditUndoInsertChars::Undo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); - EditPaM aPaM( GetImpEditEngine()->CreateEditPaM( aEPaM ) ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: No Active View!" ); + EditPaM aPaM = GetEditEngine()->CreateEditPaM(aEPaM); EditSelection aSel( aPaM, aPaM ); aSel.Max().GetIndex() = aSel.Max().GetIndex() + aText.Len(); - EditPaM aNewPaM( GetImpEditEngine()->ImpDeleteSelection( aSel ) ); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aNewPaM, aNewPaM ) ); + EditPaM aNewPaM( GetEditEngine()->DeleteSelection(aSel) ); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aNewPaM, aNewPaM ) ); } void EditUndoInsertChars::Redo() { - DBG_ASSERT( GetImpEditEngine()->GetActiveView(), "Undo/Redo: Keine Active View!" ); - EditPaM aPaM( GetImpEditEngine()->CreateEditPaM( aEPaM ) ); - GetImpEditEngine()->ImpInsertText( EditSelection( aPaM, aPaM ), aText ); + DBG_ASSERT( GetEditEngine()->GetActiveView(), "Undo/Redo: Keine Active View!" ); + EditPaM aPaM = GetEditEngine()->CreateEditPaM(aEPaM); + GetEditEngine()->InsertText(EditSelection(aPaM, aPaM), aText); EditPaM aNewPaM( aPaM ); aNewPaM.GetIndex() = aNewPaM.GetIndex() + aText.Len(); - GetImpEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aNewPaM ) ); + GetEditEngine()->GetActiveView()->GetImpEditView()->SetEditSelection( EditSelection( aPaM, aNewPaM ) ); } sal_Bool EditUndoInsertChars::Merge( SfxUndoAction* pNextAction ) diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 1f77f88..a74fbef 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -382,7 +382,6 @@ class ImpEditEngine : public SfxListener, boost::noncopyable { // The Undos have to manipulate directly ( private-Methods ), // do that no new Undo is inserted! - friend class EditUndoInsertChars; friend class EditUndoRemoveChars; friend class EditUndoDelContent; friend class EditUndoConnectParas; commit c5cf5f700f53f5742bb8f3080083454c9623dadc Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Mon Apr 16 22:51:49 2012 -0400 Have EditUndo also return EditEngine*. This is the first step toward having the undo classes use EditEngine instead of ImpEditEngine. diff --git a/editeng/inc/editeng/editund2.hxx b/editeng/inc/editeng/editund2.hxx index 554fb32..85ad570 100644 --- a/editeng/inc/editeng/editund2.hxx +++ b/editeng/inc/editeng/editund2.hxx @@ -32,6 +32,7 @@ #include "editeng/editengdllapi.h" #include <svl/undo.hxx> +class EditEngine; class ImpEditEngine; class EDITENG_DLLPRIVATE EditUndoManager : public SfxUndoManager @@ -55,14 +56,15 @@ class EDITENG_DLLPUBLIC EditUndo : public SfxUndoAction { private: sal_uInt16 nId; - ImpEditEngine* pImpEE; + ImpEditEngine* mpEditEngine; public: - TYPEINFO(); - EditUndo( sal_uInt16 nI, ImpEditEngine* pImpEE ); - virtual ~EditUndo(); + TYPEINFO(); + EditUndo(sal_uInt16 nI, ImpEditEngine* pEE); + virtual ~EditUndo(); - ImpEditEngine* GetImpEditEngine() const { return pImpEE; } + EditEngine* GetEditEngine(); + ImpEditEngine* GetImpEditEngine(); virtual void Undo() = 0; virtual void Redo() = 0; diff --git a/editeng/source/editeng/editundo.cxx b/editeng/source/editeng/editundo.cxx index 81bce92..f395729 100644 --- a/editeng/source/editeng/editundo.cxx +++ b/editeng/source/editeng/editundo.cxx @@ -140,11 +140,10 @@ sal_Bool EditUndoManager::Redo() return bDone; } -EditUndo::EditUndo( sal_uInt16 nI, ImpEditEngine* p ) +EditUndo::EditUndo(sal_uInt16 nI, ImpEditEngine* pEE) : + nId(nI), mpEditEngine(pEE) { DBG_CTOR( EditUndo, 0 ); - nId = nI; - pImpEE = p; } EditUndo::~EditUndo() @@ -152,6 +151,16 @@ EditUndo::~EditUndo() DBG_DTOR( EditUndo, 0 ); } +EditEngine* EditUndo::GetEditEngine() +{ + return mpEditEngine->GetEditEnginePtr(); +} + +ImpEditEngine* EditUndo::GetImpEditEngine() +{ + return mpEditEngine; +} + sal_uInt16 EditUndo::GetId() const { DBG_CHKTHIS( EditUndo, 0 ); @@ -166,9 +175,9 @@ sal_Bool EditUndo::CanRepeat(SfxRepeatTarget&) const XubString EditUndo::GetComment() const { XubString aComment; - if ( pImpEE ) + if ( mpEditEngine ) { - EditEngine* pEditEng = pImpEE->GetEditEnginePtr(); + EditEngine* pEditEng = mpEditEngine->GetEditEnginePtr(); aComment = pEditEng->GetUndoComment( GetId() ); } return aComment; _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits