| Summary: | Icons-and-Text task manager loses open windows when second display disconnected | ||
|---|---|---|---|
| Product: | [Plasma] plasmashell | Reporter: | Eugene <eugene.seppel> |
| Component: | Task Manager and Icons-Only Task Manager widgets | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | REPORTED --- | ||
| Severity: | normal | CC: | qydwhotmail |
| Priority: | NOR | ||
| Version First Reported In: | 6.4.5 | ||
| Target Milestone: | 1.0 | ||
| Platform: | Ubuntu | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Eugene
2025-11-22 20:01:18 UTC
It looks I've got some understanding why this happening.
I've updated libtaskmanager/taskfilterproxymodel.cpp the routine "bool TaskFilterProxyModel::acceptsRow(int sourceRow) const"
There is a check:
```
// Filter by screen.
if (d->filterByScreen && d->screenGeometry.isValid()) {
const QRect &screenGeometry =
sourceIdx.data(AbstractTasksModel::ScreenGeometry).toRect();
if (screenGeometry.isValid() && screenGeometry != d->screenGeometry) {
// I've added this qDebug:
qDebug() << "task (" << appName << ", " << windowTitle
<< ") doesn't match screen: " << d->screenGeometry
<< "; screenGeometry:" << screenGeometry
<< ", isValid():" << screenGeometry.isValid();
return false;
}
}
```
I have two displays:
2560x1440 left of 5120x1440
So right after reloading/starting plasma everything works fine:
if I disconnect the 2560x1440 display task manager on the 5120x1440 shows all the windows.
However if I go suspend/resume my GNU/Linux box the next time I disconnect 2560x1440 this check fails for all the windows this way:
```
veebr 16 22:00:06 virgil plasmashell[888859]: task ( "Konsole" , "mc <..> — Konsole" ) doesn't match screen: QRect(2560,0 5120x1440) ; screenGeometry: QRect(0,0 5120x1440) , isValid(): true
```
So all the applications have a the correct screenGeometery QRect(0,0 5120x1440), however in the context of TaskFilterProxyModel (d->screenGeometry) the current screen geometry is QRect(2560,0 5120x1440) that is wrong.
I'm not sure whether this is a bug in libtaskmanager or in WM, need more time for investigation, but right now I just have no free time:(
Would be grateful if someone who knows could help me.
Thank you!
So when everything works fine (right after plasma reload/restart) TaskFilterProxyModel receives and sets the correct geometry via "void TaskFilterProxyModel::setScreenGeometry(const QRect &geometry)": QRect(2560,0 5120x1440) when left 2560x1440 is connected QRect(2560,0 5120x1440) when left 2560x1440 is disconnected But after computer suspend/resume something goes wrong. |