hein updated this revision to Diff 9797. hein added a comment.
After the original bug became actually reproducible (thanks to Roman for a tip - I needed multiple Chrome tabs to slow down its teardown) I was able to pinpoint the actual cause, see the updated summary and the code comment. Re the lack-of-symmetry complaint: The rowsAboutToBeRemoved connect is to the tree-shaped proxy because it allows for a speed optimization by ignoring group children, which is now even more worthwhile given the more coarse trigger. The second connect is to the filterProxyModel because the actual symmetry that's needed is to the model checked in filterAcceptsRow, which is the filterProxyModel as well. As previously explained proxy models fire rowsRemoved in response to their source model firing rowsAboutToBeRemoved, so when the grouping proxy (which is higher in the chain) fires rowsRemoved, the filter proxy still has the window, causing filterAcceptsRow not to allow the launcher to pass. REPOSITORY R120 Plasma Workspace CHANGES SINCE LAST UPDATE https://phabricator.kde.org/D3950?vs=9746&id=9797 BRANCH master REVISION DETAIL https://phabricator.kde.org/D3950 AFFECTED FILES libtaskmanager/tasksmodel.cpp EMAIL PREFERENCES https://phabricator.kde.org/settings/panel/emailpreferences/ To: hein, davidedmundson, mart Cc: plasma-devel, lesliezhai, ali-mohamed, jensreuterberg, abetts, andreaska, sebas