Summary: | Copy/Paste produce invalid diagrams | ||
---|---|---|---|
Product: | [Applications] umbrello | Reporter: | Reg. Charney <charney> |
Component: | general | Assignee: | Umbrello Development Group <umbrello-devel> |
Status: | RESOLVED DUPLICATE | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | 1.4.1 | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Reg. Charney
2005-06-09 23:16:35 UTC
Copy/paste in the diagram does not work at all, not even for single objects. Also, after a "Duplicate" on a class with attributes and/or operations the duplicated class is missing its atts/ops in the list view. SVN commit 424123 by okellogg: After a "Duplicate" on a class with attributes and/or operations the duplicated class was missing its atts/ops in the list view. Here's the fix for that. CCBUG:107134 M +5 -1 classifier.cpp M +7 -0 classifier.h M +13 -2 umlwidget.cpp --- trunk/KDE/kdesdk/umbrello/umbrello/classifier.cpp #424122:424123 @@ -65,6 +65,10 @@ return (m_BaseType == ot_Interface); } +void UMLClassifier::signalChildObjectAdded(UMLClassifierListItem *childObj) { + emit childObjectAdded(childObj); +} + UMLOperation * UMLClassifier::checkOperationSignature( QString name, UMLAttributeList *opParams, UMLOperation *exemptOp) @@ -626,7 +630,7 @@ UMLClassifierListItemList resultList; for (UMLClassifierListItemListIt lit(m_List); lit.current(); ++lit) { UMLClassifierListItem *listItem = lit.current(); - if (listItem->getBaseType() == ot) + if (ot == Uml::ot_UMLObject || listItem->getBaseType() == ot) resultList.append(listItem); } return resultList; --- trunk/KDE/kdesdk/umbrello/umbrello/classifier.h #424122:424123 @@ -341,6 +341,8 @@ /** * Returns the entries in m_List that are of the requested type. + * If the requested type is Uml::ot_UMLObject then all entries + * are returned. * * @return The list of true operations for the Concept. */ @@ -432,6 +434,11 @@ */ bool hasAbstractOps (); + /** + * Emit the UMLObject::childObjectAdded signal for the given child object. + */ + void signalChildObjectAdded(UMLClassifierListItem *childObj); + signals: /** Signals that a new UMLOperation has been added to the classifer. * The signal is emitted in addition to the generic childObjectAdded() --- trunk/KDE/kdesdk/umbrello/umbrello/umlwidget.cpp #424122:424123 @@ -24,7 +24,7 @@ #include "umldoc.h" #include "umllistview.h" #include "umlview.h" - +#include "umlclassifierlistitemlist.h" #include "codegenerator.h" #include "codegenerators/simplecodegenerator.h" #include "listpopupmenu.h" @@ -542,7 +542,18 @@ case ListPopupMenu::mt_Clone: // In principle we clone all the uml objects. - m_pView->addObject(m_pObject->clone()); + { + UMLObject *pClone = m_pObject->clone(); + m_pView->addObject(pClone); + if (dynamic_cast<UMLClassifier*>(pClone)) { + UMLClassifier *c = static_cast<UMLClassifier*>(pClone); + UMLClassifierListItemList items = c->getFilteredList(Uml::ot_UMLObject); + for (UMLClassifierListItemListIt it(items); it.current(); ++it) { + UMLClassifierListItem *item = it.current(); + c->signalChildObjectAdded(item); + } + } + } break; case ListPopupMenu::mt_Rename_MultiA: OTOH, it's not quite obvious what a Copy/Paste in a class diagram should do. Each class can only appear _once_ in a class diagram. IMHO it's probably best to map that operation to the Duplicate function. *** This bug has been marked as a duplicate of 107358 *** |