Bug 327577

Summary: Duplicate and corrupt tree view items after copy/paste of folder
Product: [Applications] umbrello Reporter: Joris Steyn <kde>
Component: generalAssignee: Joris Steyn <kde>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: 2.11.3   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Joris Steyn 2013-11-13 20:14:40 UTC
When pasting a folder in the tree view, a UMLPackage is pasted instead of a folder. The contents are added to the tree view twice where only one of the two can be dragged into a diagram. Saving this results in a bad XMI file; the original folder contents can not be loaded.


Reproducible: Always

Steps to Reproduce:
1. Add a folder (tree view popup menu "New -> Folder")
2. Add an object to the new folder (for example class)
3. Copy the folder
4. Paste the folder
Actual Results:  
Several errors can be observed:
* pasted folder has no stereotype, so becomes a regular package (no folder icon)
* contents are added twice; in the new folder and in the view's root
* items in the new folder have wrong ID

Expected Results:  
Umbrello should create an exact duplicate of the folder and all its contents. New IDs should be assigned to all new objects.
Comment 1 Joris Steyn 2013-11-13 20:36:21 UTC
Git commit f65315dade54e4ba2f85c1c415112ff18ddcd9d2 by Joris Steyn.
Committed on 13/10/2013 at 17:42.
Pushed by jorissteyn into branch 'master'.

Fix broken icon on pasted folder

The stereotype of an object should be taken into account when determining the
baseType. Otherwise, a pasted folder will be a UMLPackage instead of UMLFolder.

M  +6    -3    umbrello/clipboard/umldragdata.cpp
M  +0    -8    umbrello/umllistviewitem.cpp

http://commits.kde.org/umbrello/f65315dade54e4ba2f85c1c415112ff18ddcd9d2
Comment 2 Joris Steyn 2013-11-13 20:36:22 UTC
Git commit e264e22cbf563505b69989f58018b816a93ad3e3 by Joris Steyn.
Committed on 13/11/2013 at 20:14.
Pushed by jorissteyn into branch 'master'.

Fix copy/paste of folders

Copying folders in the tree view now works as described. Nested folders and
pasting to other instances of Umbrello work fine as well.

Ideally, when copying a folder, the XMI clip only contains the UML:Package node
and all child items are contained and loaded from Namespace.ownedElements. But,
loadFromXMI() does not support that. This fix makes a paste operation ignore
ownedElements completely and uses the "flat" list of all children to create the
objects.

M  +3    -4    umbrello/clipboard/umlclipboard.cpp
M  +49   -1    umbrello/clipboard/umldragdata.cpp

http://commits.kde.org/umbrello/e264e22cbf563505b69989f58018b816a93ad3e3