[umbrello] [Bug 449465] Pascal code import is very slow
Oliver Kellogg
bugzilla_noreply at kde.org
Mon Jun 13 06:56:34 BST 2022
https://bugs.kde.org/show_bug.cgi?id=449465
Oliver Kellogg <okellogg at users.sourceforge.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Version Fixed In| |2.34.70 (KDE releases
| |22.07.70)
Status|CONFIRMED |RESOLVED
Resolution|--- |FIXED
Latest Commit| |https://invent.kde.org/sdk/
| |umbrello/commit/0d855d0deb4
| |19f0a38bc486ce0441da4298890
| |4b
--- Comment #4 from Oliver Kellogg <okellogg at users.sourceforge.net> ---
Git commit 0d855d0deb419f0a38bc486ce0441da42988904b by Oliver Kellogg.
Committed on 13/06/2022 at 05:56.
Pushed by okellogg into branch 'master'.
Fix "Pascal code import is very slow"
umbrello/umllistviewitem.{h,cpp}
- Remove empty reimplementation of destructor (we want the parent
destructor to execute).
- Member m_comap is renamed to s_comap, changed to `static`, and is
changed pointer. It now acts as a global map for all UMLObjects
pertaining to the list view. The switch to pointer is done for
reducing risk of static initialization order problems.
- New static function deleteItem removes the given UMLListViewItem from
s_comap and calls its destructor.
- At function findChildObject add `const` on argument `child`.
- New protected function findUMLObject_r is auxiliary to findUMLObject.
It is invoked when the given object is not found in s_comap.
- Change implementation of ChildObjectMap from QMap to QHash.
Reason: QHash is more appropriate for pointer arguments.
umbrello/umllistviewitem.cpp
- In function init() allocate s_comap if null.
- Adjust functions addChildItem, deleteChildItem, deepCopy to the
changes related to m_comap -> s_comap.
umbrello/umllistview.cpp
- In function slotObjectCreated add calls to parentItem->addChildItem()
for updating s_comap.
- In function slotObjectRemoved replace destruction of `item` by call to
deleteItem() in order to update s_comap.
- In function init(),
- reduce content of `if (m_rv == 0)`;
- call clean() unconditionally;
- execute for-loop over N_MODELTYPES unconditionally and in its body
add call to m_rv->addChildItem(sysFolder, m_lv[i]) for updating
s_comap;
- call m_lv[Uml::ModelType::Logical]->addChildItem(datatypeFolder) for
updating s_comap with m_datatypeFolder.
- In function clean(),
- clean up documentation;
- set m_datatypeFolder to 0;
- in for-loop over N_MODELTYPES remove call to deleteChildrenOf() and
add setting of m_lv[i] to 0;
- call deleteChildrenOf(m_rv).
- In function moveObject,
- remove handling of m_doc->loading() (see function acceptDrag);
- replace `delete move` by UMLListViewItem::deleteItem(move) for
updating s_comap;
- add handling of case UMLListViewItem::lvt_EnumLiteral.
- In function addNewItem case instanceOfClass add call to
instanceItem->addChildItem() for updating s_comap.
- In function loadChildrenFromXMI loading of structural objects add
call to parent->addChildItem() to update s_comap.
- In function deleteChildrenOf case (typeIsCanvasWidget(lvt) ||
typeIsClassifierList(lvt)) case !object, replace `delete temp` by call
to UMLListViewItem::deleteItem(temp).
FIXED-IN: 2.34.70 (KDE releases 22.07.70)
M +86 -65 umbrello/umllistview.cpp
M +58 -18 umbrello/umllistviewitem.cpp
M +8 -6 umbrello/umllistviewitem.h
https://invent.kde.org/sdk/umbrello/commit/0d855d0deb419f0a38bc486ce0441da42988904b
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the umbrello-devel
mailing list