From 7dbb2357565166f7e00116d3f0772cbb9b5760b0 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Wed, 3 Sep 2025 10:29:31 -0700 Subject: [PATCH] Fix focused display zooming issue --- kwin/src/qml/BreezyDesktop.qml | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/kwin/src/qml/BreezyDesktop.qml b/kwin/src/qml/BreezyDesktop.qml index 6fbb3be..621ee0c 100644 --- a/kwin/src/qml/BreezyDesktop.qml +++ b/kwin/src/qml/BreezyDesktop.qml @@ -90,31 +90,19 @@ Node { const unfocusedDisplay = breezyDesktop.displayAtIndex(unfocusedIndex); zoomOutAnimation.target = unfocusedDisplay; zoomOutAnimation.target.targetDistance = effect.allDisplaysDistance; - zoomOutAnimation.onFinished.connect(function() { - unfocusedDisplay.monitorDistance = allDisplaysDistanceBinding; - }); zoomOutAnimation.start(); } else { if (unfocusedIndex === -1) { zoomInAnimation.target = focusedDisplay; focusedDisplay.targetDistance = effect.focusedDisplayDistance; - zoomInAnimation.onFinished.connect(function() { - focusedDisplay.monitorDistance = focusedDisplayDistanceBinding; - }); zoomInAnimation.start(); } else { - const focusedDisplay = breezyDesktop.displayAtIndex(focusedIndex); zoomInSeqAnimation.target = focusedDisplay; focusedDisplay.targetDistance = effect.focusedDisplayDistance; const unfocusedDisplay = breezyDesktop.displayAtIndex(unfocusedIndex); zoomOutSeqAnimation.target = unfocusedDisplay; zoomOutSeqAnimation.target.targetDistance = effect.allDisplaysDistance; - - zoomOnFocusSequence.onFinished.connect(function() { - focusedDisplay.monitorDistance = focusedDisplayDistanceBinding; - unfocusedDisplay.monitorDistance = allDisplaysDistanceBinding; - }); zoomOnFocusSequence.start(); } @@ -131,6 +119,12 @@ Node { to: effect.allDisplaysDistance duration: 150 running: false + onFinished: { + const unfocusedDisplay = zoomInAnimation.target; + if (unfocusedDisplay) { + unfocusedDisplay.monitorDistance = Qt.binding(function() { return effect.allDisplaysDistance; }); + } + } } NumberAnimation { @@ -139,11 +133,27 @@ Node { to: effect.focusedDisplayDistance duration: 300 running: false + onFinished: { + const focusedDisplay = zoomInAnimation.target; + if (focusedDisplay) { + focusedDisplay.monitorDistance = Qt.binding(function() { return effect.focusedDisplayDistance; }); + } + } } SequentialAnimation { id: zoomOnFocusSequence running: false + onFinished: { + const focusedDisplay = zoomInSeqAnimation.target; + if (focusedDisplay) { + focusedDisplay.monitorDistance = Qt.binding(function() { return effect.focusedDisplayDistance; }); + } + const unfocusedDisplay = zoomOutSeqAnimation.target; + if (unfocusedDisplay) { + unfocusedDisplay.monitorDistance = Qt.binding(function() { return effect.allDisplaysDistance; }); + } + } NumberAnimation { id: zoomOutSeqAnimation