libs: implement KTaskManager::demandsAttention() and handle transient window in KTaskManager::isActive()

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-09-29 15:13:35 +03:00
parent 54bd23f900
commit d158170c10

View file

@ -305,14 +305,24 @@ QList<KTaskManager::Task> KTaskManager::tasks() const
bool KTaskManager::isActive(const KTaskManager::Task &task) const
{
// TODO: transients
return (task.window == KWindowSystem::activeWindow());
const WId activewindow = KWindowSystem::activeWindow();
return (task.window == activewindow || KWindowSystem::transientFor(task.window) == activewindow);
}
bool KTaskManager::demandsAttention(const KTaskManager::Task &task) const
{
// TODO: including transients
return false;
KWindowInfo kwindowinfo = KWindowSystem::windowInfo(
task.window,
NET::WMState | NET::XAWMState
);
if (kwindowinfo.hasState(NET::DemandsAttention)) {
return true;
}
kwindowinfo = KWindowSystem::windowInfo(
KWindowSystem::transientFor(task.window),
NET::WMState | NET::XAWMState
);
return kwindowinfo.hasState(NET::DemandsAttention);
}
void KTaskManager::activateRaiseOrIconify(const KTaskManager::Task &task)