diff options
author | Jim Raykowski <raykowj@gmail..com> | 2019-08-15 00:31:25 -0800 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-10-28 10:22:59 +0100 |
commit | 9f86b320a997c77069cf93dcb32fb71f09ad1348 (patch) | |
tree | c7767f9da6a3fbd465d80f36fee8ec2a9bd567fa /sd | |
parent | 2d8efd1afe03a4009600e914910144b70982e98d (diff) |
tdf#125191 Give object copies unique names
This patch makes a unique name for a copy of an object having
a user given name.
Change-Id: I14a7f45cc02962fc34a1532dd5db1cb9657b41d3
Reviewed-on: https://gerrit.libreoffice.org/77500
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/slidesorter/controller/SlsClipboard.cxx | 12 | ||||
-rw-r--r-- | sd/source/ui/view/sdview3.cxx | 7 |
2 files changed, 17 insertions, 2 deletions
diff --git a/sd/source/ui/slidesorter/controller/SlsClipboard.cxx b/sd/source/ui/slidesorter/controller/SlsClipboard.cxx index 95a38e0ee03f..38fcbd964f18 100644 --- a/sd/source/ui/slidesorter/controller/SlsClipboard.cxx +++ b/sd/source/ui/slidesorter/controller/SlsClipboard.cxx @@ -730,7 +730,17 @@ sal_Int8 Clipboard::ExecuteDrop ( mrSlideSorter.GetViewShell()->GetViewShellBase().GetMainViewShell())); mxSelectionObserverContext.reset(new SelectionObserver::Context(mrSlideSorter)); - HandlePageDrop(*pDragTransferable); + if (rEvent.mnAction == DND_ACTION_MOVE) + { + SdDrawDocument* pDoc = mrSlideSorter.GetModel().GetDocument(); + const bool bDoesMakePageObjectsNamesUnique = pDoc->DoesMakePageObjectsNamesUnique(); + pDoc->DoMakePageObjectsNamesUnique(false); + HandlePageDrop(*pDragTransferable); + pDoc->DoMakePageObjectsNamesUnique(bDoesMakePageObjectsNamesUnique); + } + else + HandlePageDrop(*pDragTransferable); + nResult = rEvent.mnAction; // We leave the undo context alive for when moving or diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx index e45441d1affe..6b750c9cb6bd 100644 --- a/sd/source/ui/view/sdview3.cxx +++ b/sd/source/ui/view/sdview3.cxx @@ -463,6 +463,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper, const Size aVector( maDropPos.X() - aCurPos.X(), maDropPos.Y() - aCurPos.Y() ); + std::unordered_set<rtl::OUString> aNameSet; for(size_t a = 0; a < pMarkList->GetMarkCount(); ++a) { SdrMark* pM = pMarkList->GetMark(a); @@ -476,7 +477,11 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper, pObj->NbcMove(aVector); } - pPage->InsertObject(pObj); + SdrObject* pMarkParent = pM->GetMarkedSdrObj()->getParentSdrObjectFromSdrObject(); + if (bCopy || (pMarkParent && pMarkParent->IsGroupObject())) + pPage->InsertObjectThenMakeNameUnique(pObj, aNameSet); + else + pPage->InsertObject(pObj); if( IsUndoEnabled() ) { |