Fix model updates in RunnerMatchesModel

Authored by davidedmundson on Jan 3 2019, 11:47 AM.


Fix model updates in RunnerMatchesModel

RunnerMatchesModel is backed by a list. When this list changes
RunnerManagerModel add/removes 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
It now passes.

Reviewers: Plasma, hein

Reviewed By: Plasma, hein

Subscribers: hein, apol, plasma-devel

Tags: Plasma

Differential Revision:


davidedmundsonJan 3 2019, 11:48 AM
Differential Revision
D17725: [RFC] Fix model updates in RunnerMatchesModel
R119:ee17fbaca8a7: Fix minor Doxygen issues