editeng/source/editeng/editeng.cxx | 51 ++--------------------------- editeng/source/editeng/impedit.hxx | 6 +++ editeng/source/editeng/impedit5.cxx | 62 ++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 46 deletions(-)
New commits: commit 37702339ec543710de7a122f4b9d01650e24d0ee Author: Noel Grandin <[email protected]> AuthorDate: Sun Jun 16 13:54:26 2024 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Sun Jun 16 16:35:37 2024 +0200 move SetDefTab code from EditEngine to ImpEditEngine so we have the implementation in one class, instead of bouncing back and forth between two. Change-Id: Ia887c46c70971f51a77a74fd03132b7eebb6c192 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168927 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index d78f07fb78e7..dc3c0ca40d2b 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -257,12 +257,7 @@ void EditEngine::SetActiveView(EditView* pView) void EditEngine::SetDefTab( sal_uInt16 nDefTab ) { - getImpl().GetEditDoc().SetDefTab(nDefTab); - if (getImpl().IsFormatted()) - { - getImpl().FormatFullDoc(); - getImpl().UpdateViews(); - } + getImpl().SetDefTab(nDefTab); } void EditEngine::SetPaperSize(const Size& rNewSize) diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index f63a0fc06a9d..50d84299d144 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -1366,6 +1366,8 @@ public: tools::Long getBottomDocOffset(const tools::Rectangle& rect) const; Size getTopLeftDocOffset(const tools::Rectangle& rect) const; + void SetDefTab( sal_uInt16 nDefTab ); + #ifdef DBG_UTIL void DumpData(bool bInfoBox); #endif diff --git a/editeng/source/editeng/impedit5.cxx b/editeng/source/editeng/impedit5.cxx index 9ca92cf856c5..99a1796bfc28 100644 --- a/editeng/source/editeng/impedit5.cxx +++ b/editeng/source/editeng/impedit5.cxx @@ -861,6 +861,16 @@ bool ImpEditEngine::HasView( EditView* pView ) const return std::find(maEditViews.begin(), maEditViews.end(), pView) != maEditViews.end(); } +void ImpEditEngine::SetDefTab( sal_uInt16 nDefTab ) +{ + maEditDoc.SetDefTab(nDefTab); + if (IsFormatted()) + { + FormatFullDoc(); + UpdateViews(); + } +} + IdleFormattter::IdleFormattter() : Idle("editeng::ImpEditEngine aIdleFormatter") { commit 02f51dc8f51f431e99062ae1ac144ff3e0ecdd94 Author: Noel Grandin <[email protected]> AuthorDate: Sun Jun 16 13:49:48 2024 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Sun Jun 16 16:35:28 2024 +0200 move InsertView/RemoveView code from EditEngine to ImpEditEngine so we have the implementation in one class, instead of bouncing back and forth between two. Change-Id: Iec4edf42c3047823b4dce6af789a94a849dd5039 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168926 Reviewed-by: Noel Grandin <[email protected]> Tested-by: Jenkins diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 0c68a1e9bee8..d78f07fb78e7 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -217,52 +217,17 @@ void EditEngine::Draw( OutputDevice& rOutDev, const tools::Rectangle& rOutRect, void EditEngine::InsertView(EditView* pEditView, size_t nIndex) { - if (nIndex > getImpl().GetEditViews().size()) - nIndex = getImpl().GetEditViews().size(); - - ImpEditEngine::ViewsType& rViews = getImpl().GetEditViews(); - rViews.insert(rViews.begin()+nIndex, pEditView); - - EditSelection aStartSel = getImpl().GetEditDoc().GetStartPaM(); - pEditView->getImpl().SetEditSelection( aStartSel ); - if (!getImpl().GetActiveView()) - getImpl().SetActiveView(pEditView); - - pEditView->getImpl().AddDragAndDropListeners(); + getImpl().InsertView(pEditView, nIndex); } EditView* EditEngine::RemoveView( EditView* pView ) { - pView->HideCursor(); - EditView* pRemoved = nullptr; - ImpEditEngine::ViewsType& rViews = getImpl().GetEditViews(); - ImpEditEngine::ViewsType::iterator it = std::find(rViews.begin(), rViews.end(), pView); - - DBG_ASSERT( it != rViews.end(), "RemoveView with invalid index" ); - if (it != rViews.end()) - { - pRemoved = *it; - rViews.erase(it); - if (getImpl().GetActiveView() == pView) - { - getImpl().SetActiveView(nullptr); - getImpl().GetSelEngine().SetCurView(nullptr); - } - pView->getImpl().RemoveDragAndDropListeners(); - - } - return pRemoved; + return getImpl().RemoveView(pView); } void EditEngine::RemoveView(size_t nIndex) { - ImpEditEngine::ViewsType& rViews = getImpl().GetEditViews(); - if (nIndex >= rViews.size()) - return; - - EditView* pView = rViews[nIndex]; - if ( pView ) - RemoveView( pView ); + getImpl().RemoveView(nIndex); } EditView* EditEngine::GetView(size_t nIndex) const @@ -277,8 +242,7 @@ size_t EditEngine::GetViewCount() const bool EditEngine::HasView( EditView* pView ) const { - ImpEditEngine::ViewsType const& rViews = getImpl().GetEditViews(); - return std::find(rViews.begin(), rViews.end(), pView) != rViews.end(); + return getImpl().HasView(pView); } EditView* EditEngine::GetActiveView() const diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 36a276f3b935..f63a0fc06a9d 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -941,6 +941,10 @@ public: ViewsType& GetEditViews() { return maEditViews; } const ViewsType& GetEditViews() const { return maEditViews; } + void InsertView(EditView* pEditView, size_t nIndex); + EditView* RemoveView( EditView* pView ); + void RemoveView(size_t nIndex); + bool HasView( EditView* pView ) const; const Size& GetPaperSize() const { return maPaperSize; } diff --git a/editeng/source/editeng/impedit5.cxx b/editeng/source/editeng/impedit5.cxx index 7246d4cc4c4c..9ca92cf856c5 100644 --- a/editeng/source/editeng/impedit5.cxx +++ b/editeng/source/editeng/impedit5.cxx @@ -809,6 +809,58 @@ void ImpEditEngine::SetPolygon(const basegfx::B2DPolyPolygon& rPolyPolygon, cons maPaperSize = pRanger->GetBoundRect().GetSize(); } +void ImpEditEngine::InsertView(EditView* pEditView, size_t nIndex) +{ + if (nIndex > maEditViews.size()) + nIndex = maEditViews.size(); + + maEditViews.insert(maEditViews.begin()+nIndex, pEditView); + + EditSelection aStartSel = maEditDoc.GetStartPaM(); + pEditView->getImpl().SetEditSelection( aStartSel ); + if (!mpActiveView) + SetActiveView(pEditView); + + pEditView->getImpl().AddDragAndDropListeners(); +} + +EditView* ImpEditEngine::RemoveView( EditView* pView ) +{ + pView->HideCursor(); + EditView* pRemoved = nullptr; + ImpEditEngine::ViewsType::iterator it = std::find(maEditViews.begin(), maEditViews.end(), pView); + + DBG_ASSERT( it != maEditViews.end(), "RemoveView with invalid index" ); + if (it != maEditViews.end()) + { + pRemoved = *it; + maEditViews.erase(it); + if (mpActiveView == pView) + { + SetActiveView(nullptr); + GetSelEngine().SetCurView(nullptr); + } + pView->getImpl().RemoveDragAndDropListeners(); + + } + return pRemoved; +} + +void ImpEditEngine::RemoveView(size_t nIndex) +{ + if (nIndex >= maEditViews.size()) + return; + + EditView* pView = maEditViews[nIndex]; + if ( pView ) + RemoveView( pView ); +} + +bool ImpEditEngine::HasView( EditView* pView ) const +{ + return std::find(maEditViews.begin(), maEditViews.end(), pView) != maEditViews.end(); +} + IdleFormattter::IdleFormattter() : Idle("editeng::ImpEditEngine aIdleFormatter") {
