diff --git a/abstract_client.cpp b/abstract_client.cpp --- a/abstract_client.cpp +++ b/abstract_client.cpp @@ -322,19 +322,13 @@ if (b && !rules()->checkKeepBelow(false)) setKeepBelow(false); if (b == keepAbove()) { - // force hint change if different - if (info && bool(info->state() & NET::KeepAbove) != keepAbove()) - info->setState(keepAbove() ? NET::KeepAbove : NET::States(), NET::KeepAbove); return; } m_keepAbove = b; - if (info) { - info->setState(keepAbove() ? NET::KeepAbove : NET::States(), NET::KeepAbove); - } + doSetKeepAbove(); workspace()->updateClientLayer(this); updateWindowRules(Rules::Above); - doSetKeepAbove(); emit keepAboveChanged(m_keepAbove); } @@ -348,19 +342,13 @@ if (b && !rules()->checkKeepAbove(false)) setKeepAbove(false); if (b == keepBelow()) { - // force hint change if different - if (info && bool(info->state() & NET::KeepBelow) != keepBelow()) - info->setState(keepBelow() ? NET::KeepBelow : NET::States(), NET::KeepBelow); return; } m_keepBelow = b; - if (info) { - info->setState(keepBelow() ? NET::KeepBelow : NET::States(), NET::KeepBelow); - } + doSetKeepBelow(); workspace()->updateClientLayer(this); updateWindowRules(Rules::Below); - doSetKeepBelow(); emit keepBelowChanged(m_keepBelow); } diff --git a/layers.cpp b/layers.cpp --- a/layers.cpp +++ b/layers.cpp @@ -853,14 +853,6 @@ sendSyntheticConfigureNotify(); } -void X11Client::doSetKeepAbove() -{ -} - -void X11Client::doSetKeepBelow() -{ -} - bool X11Client::belongsToDesktop() const { foreach (const X11Client *c, group()->members()) { diff --git a/x11client.cpp b/x11client.cpp --- a/x11client.cpp +++ b/x11client.cpp @@ -1900,6 +1900,16 @@ } } +void X11Client::doSetKeepAbove() +{ + info->setState(keepAbove() ? NET::KeepAbove : NET::States(), NET::KeepAbove); +} + +void X11Client::doSetKeepBelow() +{ + info->setState(keepBelow() ? NET::KeepBelow : NET::States(), NET::KeepBelow); +} + void X11Client::doSetSkipTaskbar() { info->setState(skipTaskbar() ? NET::SkipTaskbar : NET::States(), NET::SkipTaskbar);