<table><tr><td style="">hein created this revision.<br />hein added a reviewer: davidedmundson.<br />Restricted Application added a project: Plasma.<br />Restricted Application added a subscriber: plasma-devel.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D3950" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>TasksModel filters out matching launchers when a startup or window<br />
appears. When they go, dataChanged in the launcher model is triggered<br />
to pop them back in. This used to be in response to<br />
rowsAboutToBeRemoved, with a Qt::QueuedConnection to try and make sure<br />
that dataChanged is emitted after the row removal is processed (other-<br />
wise the filter would still take). While I have not been able to<br />
reproduce the bug well enough to test things, my guess is that this<br />
must be a race condition - perhaps something is spinning the event<br />
loop.</p>

<p>This patch collects the indices in the handler for sourceModel::<br />
rowsAboutToBeRemoved and triggers dataChanged for them in the handler<br />
for ourselves::rowsRemoved. Keeping model indices around is usually a<br />
huge red flag. This makes the (currently solid) assumption that nothing<br />
will change the launchers model inbetween the halves of this transaction.</p>

<p>BUG:365617</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R120 Plasma Workspace</div></div></div><br /><div><strong>BRANCH</strong><div><div>master</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D3950" rel="noreferrer">https://phabricator.kde.org/D3950</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>libtaskmanager/tasksmodel.cpp</div></div></div><br /><div><strong>EMAIL PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br /><div><strong>To: </strong>hein, davidedmundson<br /><strong>Cc: </strong>plasma-devel, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas<br /></div>