davidedmundson created this revision.
davidedmundson added a reviewer: Plasma.
Herald added a project: Plasma.
Herald added a subscriber: plasma-devel.
davidedmundson requested review of this revision.

REVISION SUMMARY
  RunnerMatchesModel is backed by a list. When this list changes
  RunnerManagerModel added/removed the new number of rows then called
  dataChanged on everything that remained.
  
  It's a common pattern, but not a great one. Especially with QtQuick
  where moving a delegate is faster than updating all the properties of an
  existing one - unfortunately I can't find a nice solution to do this
  properly in linear time.
  
  The problem with the current code is we update the entire list in the
  insert/remove rows. This is a violation of the model rules as we're
  updating rows outside the rows listed inside begin/remove rows.
  
  It works, but Qt's model test fails.
  
  We also have a lot of duplicates of a crash in QtQuick after runner
  model changes, bug 369430. I think it could be related, but can't 
  prove anything.
  
  This patch updates the rows that exist in both the before and after
  models before adding/removing the remaining rows.
  
  BUG: 402439

TEST PLAN
  Added Qt model tester in https://phabricator.kde.org/P283
  It now passes.

REPOSITORY
  R119 Plasma Desktop

BRANCH
  master

REVISION DETAIL
  https://phabricator.kde.org/D17725

AFFECTED FILES
  applets/kicker/plugin/runnermatchesmodel.cpp

To: davidedmundson, #plasma
Cc: plasma-devel, GB_2, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, 
jensreuterberg, abetts, sebas, apol, mart

Reply via email to