From 02f51dc8f51f431e99062ae1ac144ff3e0ecdd94 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Sun, 16 Jun 2024 13:49:48 +0200 Subject: 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 Tested-by: Jenkins --- editeng/source/editeng/editeng.cxx | 44 +++---------------------------- editeng/source/editeng/impedit.hxx | 4 +++ editeng/source/editeng/impedit5.cxx | 52 +++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 40 deletions(-) (limited to 'editeng') 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") { -- cgit