workspace: fix syncing the stacking order with Xorg

Deleted windows have frameId zero, which makes Xorg stack other windows
below the bottom-most window instead of the correct one. To avoid that,
filter out deleted windows in Workspace::propagateWindows.

BUG: 478556
wilder/Plasma/6.2
Vyacheslav Mayorov 2 years ago
parent 33fe211471
commit 4e01d2c8b7
  1. 4
      src/layers.cpp

@ -165,7 +165,7 @@ void Workspace::propagateWindows(bool propagate_new_windows)
for (int i = stacking_order.size() - 1; i >= 0; --i) {
X11Window *window = qobject_cast<X11Window *>(stacking_order.at(i));
if (!window || window->isUnmanaged() || window->hiddenPreview()) {
if (!window || window->isDeleted() || window->isUnmanaged() || window->hiddenPreview()) {
continue;
}
@ -182,7 +182,7 @@ void Workspace::propagateWindows(bool propagate_new_windows)
// these windows that should be unmapped to interfere with other windows
for (int i = stacking_order.size() - 1; i >= 0; --i) {
X11Window *window = qobject_cast<X11Window *>(stacking_order.at(i));
if (!window || window->isUnmanaged() || !window->hiddenPreview()) {
if (!window || window->isDeleted() || window->isUnmanaged() || !window->hiddenPreview()) {
continue;
}
newWindowStack << window->frameId();

Loading…
Cancel
Save