[Differential] [Request, 46 lines] D4057: Reuse QAction and QMenu items on updates
David Edmundson
noreply at phabricator.kde.org
Mon Jan 9 22:56:39 UTC 2017
davidedmundson created this revision.
davidedmundson added a reviewer: Plasma.
Restricted Application added a project: Plasma.
Restricted Application added a subscriber: plasma-devel.
REVISION SUMMARY
When updating a menu we would always delete all the actions and recreate
them.
This caused a problem that we would also be deleting submenus and
recreating them, meaning when we update the applet's submenu before
showing it, our submenu will always be destroyed.
This patch uses the DBusMenuItem IDs to re-use existing QAction / QMenu
objects and only create new instances when needed. It should also be (in
theory) faster as there's a lot less object creation every update.
Also replace QSignalMapper with a lambda and replace replace QMap<int,
QPointer<QAction*> with QMap<int, QAction*> and a lambda to do cleanup
on deletion.
TEST PLAN
Tweked the applet to update before showing
Original QMenu object used before showing still has all the items
REPOSITORY
R120 Plasma Workspace
REVISION DETAIL
https://phabricator.kde.org/D4057
AFFECTED FILES
libdbusmenuqt/dbusmenuimporter.cpp
EMAIL PREFERENCES
https://phabricator.kde.org/settings/panel/emailpreferences/
To: davidedmundson, #plasma
Cc: plasma-devel, lesliezhai, ali-mohamed, jensreuterberg, abetts, andreaska, sebas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20170109/a3aefc64/attachment.html>
More information about the Plasma-devel
mailing list