1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 21:42:51 -05:00

pass screen to modals

This commit is contained in:
bbedward
2025-12-03 17:27:07 -05:00
parent 788da62777
commit 293c7b42c6
2 changed files with 55 additions and 3 deletions

View File

@@ -15,9 +15,9 @@ Item {
property real modalWidth: 400
property real modalHeight: 300
property var targetScreen
readonly property var effectiveScreen: targetScreen || contentWindow.screen
readonly property real screenWidth: effectiveScreen?.width
readonly property real screenHeight: effectiveScreen?.height
readonly property var effectiveScreen: contentWindow.screen ?? targetScreen
readonly property real screenWidth: effectiveScreen?.width ?? 1920
readonly property real screenHeight: effectiveScreen?.height ?? 1080
readonly property real dpr: effectiveScreen ? CompositorService.getScreenScale(effectiveScreen) : 1
property bool showBackground: true
property real backgroundOpacity: 0.5
@@ -58,6 +58,12 @@ Item {
function open() {
ModalManager.openModal(root);
closeTimer.stop();
const focusedScreen = CompositorService.getFocusedScreen();
if (focusedScreen) {
contentWindow.screen = focusedScreen;
if (useBackgroundWindow)
backgroundWindow.screen = focusedScreen;
}
shouldBeVisible = true;
contentWindow.visible = false;
if (useBackgroundWindow)
@@ -102,6 +108,30 @@ Item {
}
}
Connections {
target: Quickshell
function onScreensChanged() {
if (!contentWindow.screen)
return;
const currentScreenName = contentWindow.screen.name;
let screenStillExists = false;
for (let i = 0; i < Quickshell.screens.length; i++) {
if (Quickshell.screens[i].name === currentScreenName) {
screenStillExists = true;
break;
}
}
if (screenStillExists)
return;
const newScreen = CompositorService.getFocusedScreen();
if (newScreen) {
contentWindow.screen = newScreen;
if (useBackgroundWindow)
backgroundWindow.screen = newScreen;
}
}
}
Timer {
id: closeTimer
interval: animationDuration + 120