effects/windowview: Fix "active class" mode

Each screen has its own WindowHeap. So setting WindowHeap.activeClass
won't be visible on other screens.

In order to address that limitation, we could monitor
Workspace.activeClient property.

BUG: 455974
This commit is contained in:
Vlad Zahorodnii 2022-09-14 15:07:54 +03:00
parent bc964ffd37
commit be784ba5d2
2 changed files with 6 additions and 17 deletions

View file

@ -35,7 +35,6 @@ FocusScope {
property real padding: 0 property real padding: 0
// Either a string "activeClass" or a list internalIds of clients // Either a string "activeClass" or a list internalIds of clients
property var showOnly: [] property var showOnly: []
property string activeClass
required property bool organized required property bool organized
readonly property bool effectiveOrganized: expoLayout.ready && organized readonly property bool effectiveOrganized: expoLayout.ready && organized

View file

@ -27,8 +27,12 @@ Item {
readonly property bool initialHidden: client.minimized || !presentOnCurrentDesktop readonly property bool initialHidden: client.minimized || !presentOnCurrentDesktop
readonly property bool activeHidden: { readonly property bool activeHidden: {
if (windowHeap.showOnly === "activeClass") { if (windowHeap.showOnly === "activeClass") {
if (!KWinComponents.Workspace.activeClient) {
return true;
} else {
// client.resourceName is not an actual String as comes from a QByteArray so === would fail // client.resourceName is not an actual String as comes from a QByteArray so === would fail
return windowHeap.activeClass !== String(client.resourceName); return String(KWinComponents.Workspace.activeClient.resourceName) !== String(client.resourceName);
}
} else { } else {
return windowHeap.showOnly.length !== 0 return windowHeap.showOnly.length !== 0
&& windowHeap.showOnly.indexOf(client.internalId) === -1; && windowHeap.showOnly.indexOf(client.internalId) === -1;
@ -52,20 +56,6 @@ Item {
readonly property alias downGestureProgress: touchDragHandler.downGestureProgress readonly property alias downGestureProgress: touchDragHandler.downGestureProgress
signal downGestureTriggered() signal downGestureTriggered()
Component.onCompleted: {
if (client.active) {
windowHeap.activeClass = client.resourceName;
}
}
Connections {
target: thumb.client
function onActiveChanged() {
if (thumb.client.active) {
thumb.windowHeap.activeClass = thumb.client.resourceName;
}
}
}
state: { state: {
if (effect.gestureInProgress) { if (effect.gestureInProgress) {
return "partial"; return "partial";