diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2021-03-26 09:30:18 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2021-03-30 15:16:57 +0200 |
commit | 795005f210e74bf04be798609ca1d4d93be74061 (patch) | |
tree | 880b233809d2381597411f1bd24e9e31eeb57e63 /svx/source/svdraw | |
parent | 09afa34955d76419ebe8f4d15780d801f95256ca (diff) |
Don't end text editing in other views if shape inserted
This is revert of a small piece of
tdf#126180: EndTextEdit on all views before delete/cut slide
e6c7a018a0cfee395ce2886d41c908a2447ef5cc
Change needed for online where multiple users work together
and we need to not disturb other views in editing.
Change-Id: I73c2289a9d950465f020f684e9e736148380f5c5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113148
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'svx/source/svdraw')
-rw-r--r-- | svx/source/svdraw/svdedtv.cxx | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx index b301d19312d2..b48174ad8b57 100644 --- a/svx/source/svdraw/svdedtv.cxx +++ b/svx/source/svdraw/svdedtv.cxx @@ -973,11 +973,8 @@ bool SdrEditView::InsertObjectAtView(SdrObject* pObj, SdrPageView& rPV, SdrInser if (!pObj->IsInserted()) { rPV.GetObjList()->InsertObject(pObj, SAL_MAX_SIZE); } - if( IsUndoEnabled()) - { - EndTextEditAllViews(); + if( IsUndoEnabled() && CanDoSdrUndo()) AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoNewObject(*pObj)); - } if (!(nOptions & SdrInsertFlags::DONTMARK)) { if (!(nOptions & SdrInsertFlags::ADDMARK)) UnmarkAllObj(); @@ -1032,6 +1029,22 @@ bool SdrEditView::IsUndoEnabled() const return mpModel->IsUndoEnabled(); } +bool SdrEditView::CanDoSdrUndo() const +{ + size_t nViews = mpModel->GetListenerCount(); + for (size_t nView = 0; nView < nViews; ++nView) + { + SdrEditView* pView = dynamic_cast<SdrEditView*>(mpModel->GetListener(nView)); + if (!pView) + continue; + + if (pView->IsTextEdit()) + return false; + } + + return true; +} + void SdrEditView::EndTextEditAllViews() const { size_t nViews = mpModel->GetListenerCount(); |