Fix focused display zooming issue

This commit is contained in:
wheaney 2025-09-03 10:29:31 -07:00
parent 2b85ba5e3a
commit 7dbb235756
1 changed files with 22 additions and 12 deletions

View File

@ -90,20 +90,13 @@ Node {
const unfocusedDisplay = breezyDesktop.displayAtIndex(unfocusedIndex); const unfocusedDisplay = breezyDesktop.displayAtIndex(unfocusedIndex);
zoomOutAnimation.target = unfocusedDisplay; zoomOutAnimation.target = unfocusedDisplay;
zoomOutAnimation.target.targetDistance = effect.allDisplaysDistance; zoomOutAnimation.target.targetDistance = effect.allDisplaysDistance;
zoomOutAnimation.onFinished.connect(function() {
unfocusedDisplay.monitorDistance = allDisplaysDistanceBinding;
});
zoomOutAnimation.start(); zoomOutAnimation.start();
} else { } else {
if (unfocusedIndex === -1) { if (unfocusedIndex === -1) {
zoomInAnimation.target = focusedDisplay; zoomInAnimation.target = focusedDisplay;
focusedDisplay.targetDistance = effect.focusedDisplayDistance; focusedDisplay.targetDistance = effect.focusedDisplayDistance;
zoomInAnimation.onFinished.connect(function() {
focusedDisplay.monitorDistance = focusedDisplayDistanceBinding;
});
zoomInAnimation.start(); zoomInAnimation.start();
} else { } else {
const focusedDisplay = breezyDesktop.displayAtIndex(focusedIndex);
zoomInSeqAnimation.target = focusedDisplay; zoomInSeqAnimation.target = focusedDisplay;
focusedDisplay.targetDistance = effect.focusedDisplayDistance; focusedDisplay.targetDistance = effect.focusedDisplayDistance;
@ -111,11 +104,6 @@ Node {
zoomOutSeqAnimation.target = unfocusedDisplay; zoomOutSeqAnimation.target = unfocusedDisplay;
zoomOutSeqAnimation.target.targetDistance = effect.allDisplaysDistance; zoomOutSeqAnimation.target.targetDistance = effect.allDisplaysDistance;
zoomOnFocusSequence.onFinished.connect(function() {
focusedDisplay.monitorDistance = focusedDisplayDistanceBinding;
unfocusedDisplay.monitorDistance = allDisplaysDistanceBinding;
});
zoomOnFocusSequence.start(); zoomOnFocusSequence.start();
} }
} }
@ -131,6 +119,12 @@ Node {
to: effect.allDisplaysDistance to: effect.allDisplaysDistance
duration: 150 duration: 150
running: false running: false
onFinished: {
const unfocusedDisplay = zoomInAnimation.target;
if (unfocusedDisplay) {
unfocusedDisplay.monitorDistance = Qt.binding(function() { return effect.allDisplaysDistance; });
}
}
} }
NumberAnimation { NumberAnimation {
@ -139,11 +133,27 @@ Node {
to: effect.focusedDisplayDistance to: effect.focusedDisplayDistance
duration: 300 duration: 300
running: false running: false
onFinished: {
const focusedDisplay = zoomInAnimation.target;
if (focusedDisplay) {
focusedDisplay.monitorDistance = Qt.binding(function() { return effect.focusedDisplayDistance; });
}
}
} }
SequentialAnimation { SequentialAnimation {
id: zoomOnFocusSequence id: zoomOnFocusSequence
running: false 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 { NumberAnimation {
id: zoomOutSeqAnimation id: zoomOutSeqAnimation