Review Request 122252: KRecursiveFilterProxyModel: fix emitting superfluous dataChanged signals

David Faure faure at
Sun Jan 25 18:51:46 GMT 2015

This is an automatically generated e-mail. To reply, visit:

Review request for kdelibs and Christian Mollekopf.

Repository: kdelibs


by using an internal cache of the filtering state.

The tricky part is that filterAcceptsRow() must not use the cache
(too bad, it would be faster), because of the setFilterFixedString()
feature which can change the filtering status of indexes without
KRFPM even being informed (QSFPM has no virtual method, no event...)
So it only ever writes to the cache, but when dataChanged()
or row insertion/removal comes in, we can look into the cache
to find the old state and compare.


  kdeui/itemviews/krecursivefilterproxymodel.h c16b62186fb9203ff297bd9fd28d9c13a1c8bdc4 
  kdeui/itemviews/krecursivefilterproxymodel.cpp efa286ad87ded962b20c8a581b659d1b154ebf3a 
  kdeui/tests/krecursivefilterproxymodeltest.cpp 3bcb72980730cb22f887ae8fa5fbd91b5609aeb6 



Unit tests.

Using kmail (and especially testing the substring filtering in the "move dialog", which an earlier version of this patch broke).
Looking at the number of calls to Akonadi::FavoriteCollectionsModel::Private::reload() for a single dataChanged() signal from the ETM, which went from 10 to 4 (still too many, but the remaining problem is elsewhere).


David Faure

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the kde-core-devel mailing list