Review Request 122392: Fix the infinite event recursion in the klipper popup. See Bug 342947
Filip Wieladek
Wattos at gmail.com
Mon Feb 2 18:43:42 UTC 2015
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/122392/
-----------------------------------------------------------
Review request for Plasma.
Repository: plasma-workspace
Description
-------
Add proper code comments. Bug 342947 (https://bugs.kde.org/show_bug.cgi?id=342947)
Merge branch 'master' of git://anongit.kde.org/plasma-workspace
This patch fixes multiple klipper issues:
* Moves filtering logic into a background task. This makes Klipper responsive while the clipboard is being filtered.
Previously, Klipper would "hang" while it was filtering the results. This was worse when there were no matches as
Klipper had to go through the entire history. THe computation is immediate on small history sets, but significant
on larger sets with larger strings in the clipboard
* Provides a progress bar at the top to indicate the filtering process.
* Simplifies the code significantly, by:
* Moving filtering in a separate class file
* Cleaning up Popup proxy to build the menu directly using a QList
* Removing the "index" magic in KlipperPopup. Now we maintain a list of history actions which can be easily cleared.
* Removed explicit deletion of the "more" submenus, as these are owned by the parent menus and should be removed
automatically
* Avoids flickering of Klipper while removing and inserting actions by forcing the height and width during the update.
* Fixes a potential memory leak. The QActions for the KlipperPopup were only removed, but never deleted. The API used
to add actions addAction(QAction*) was not taking ownership of the action. This is fixed by deleting the actions
manually when clearing.
* Fixes a performance issue during menu rendering when truncating large strings. The method call elidedText() can be
slow on large pieces of text. This is worked around by creating a much smaller string of the prefix and suffix of the
string. We use the average character width to compute the approximate amount of characters which can be displayed
and use twice as much. (this is because in corner cases, such as |||| we might end up with a string which is not
long enough).
Diffs
-----
klipper/popupproxy.h f33f62c117a08ddbe6b761da4c2e28e51b985044
klipper/popupproxy.cpp 12dd3dd637d0ff9d134fb71237d6f0d3bcc5bd77
klipper/CMakeLists.txt a08f062480b15f32f049e2d0d0e311dbe2964c02
klipper/filterresult.h PRE-CREATION
klipper/filterresult.cpp PRE-CREATION
klipper/history.h 1bfd0424714ff79d93206a74cb7e4214a6c8c652
klipper/history.cpp 9640c23b0cf06dd0135ca573aea0819e2788b852
klipper/historyfilter.h PRE-CREATION
klipper/historyfilter.cpp PRE-CREATION
klipper/klipperpopup.h 6f7b30747562b5e7227504b8c53be2863686072b
klipper/klipperpopup.cpp 0b2f11d6d6d95e96ece0ac7b386fae2492ad0efd
Diff: https://git.reviewboard.kde.org/r/122392/diff/
Testing
-------
Thanks,
Filip Wieladek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20150202/26c95ab0/attachment.html>
More information about the Plasma-devel
mailing list