diff --git a/libtaskmanager/xwindowtasksmodel.cpp b/libtaskmanager/xwindowtasksmodel.cpp --- a/libtaskmanager/xwindowtasksmodel.cpp +++ b/libtaskmanager/xwindowtasksmodel.cpp @@ -307,24 +307,19 @@ const KWindowInfo info(window, NET::WMState | NET::XAWMState, NET::WM2TransientFor); if (info.hasState(NET::DemandsAttention)) { - WId oldLeader = info.transientFor(); QMutableHashIterator i(transientsDemandingAttention); - while (i.hasNext()) { - i.next(); + if (i.findNext(window)) { + const WId leader = info.transientFor(); + const WId oldLeader = i.key(); - if (i.value() == window) { - oldLeader = i.key(); + if (leader != oldLeader) { i.remove(); + transientsDemandingAttention.insertMulti(leader, window); + dataChanged(oldLeader, QVector{IsDemandingAttention}); + dataChanged(leader, QVector{IsDemandingAttention}); } } - - if (oldLeader != 0) { - const WId leader = info.transientFor(); - transientsDemandingAttention.insertMulti(leader, window); - dataChanged(oldLeader, QVector{IsDemandingAttention}); - dataChanged(leader, QVector{IsDemandingAttention}); - } } } }