summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2021-03-26 09:30:18 +0100
committerJan Holesovsky <kendy@collabora.com>2021-03-30 15:16:57 +0200
commit795005f210e74bf04be798609ca1d4d93be74061 (patch)
tree880b233809d2381597411f1bd24e9e31eeb57e63 /svx
parent09afa34955d76419ebe8f4d15780d801f95256ca (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')
-rw-r--r--svx/source/svdraw/svdedtv.cxx21
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();