-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/122392/
-----------------------------------------------------------

(Updated Feb. 3, 2015, 6:27 a.m.)


Review request for Plasma.


Repository: plasma-workspace


Description (updated)
-------

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).
  
This also fixes the bug https://bugs.kde.org/show_bug.cgi?id=238084


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

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel

Reply via email to