https://bugs.kde.org/show_bug.cgi?id=402439

David Edmundson <k...@davidedmundson.co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REPORTED                    |RESOLVED
         Resolution|---                         |FIXED
      Latest Commit|                            |https://commits.kde.org/pla
                   |                            |sma-desktop/9371a7c96d4722b
                   |                            |93b49b18df7b21780f2a9ad38

--- Comment #1 from David Edmundson <k...@davidedmundson.co.uk> ---
Git commit 9371a7c96d4722b93b49b18df7b21780f2a9ad38 by David Edmundson.
Committed on 03/01/2019 at 11:48.
Pushed by davidedmundson into branch 'master'.

Fix model updates in RunnerMatchesModel

Summary:
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.

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

Reviewers: #plasma, hein

Reviewed By: #plasma, hein

Subscribers: hein, apol, plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D17725

M  +5    -8    applets/kicker/plugin/runnermatchesmodel.cpp

https://commits.kde.org/plasma-desktop/9371a7c96d4722b93b49b18df7b21780f2a9ad38

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to