More LockScreen NLoader stuff

This commit is contained in:
Ly-sec 2025-08-18 16:30:30 +02:00
parent d688d04b77
commit 20b7872fad
3 changed files with 5 additions and 18 deletions

View file

@ -42,7 +42,7 @@ Item {
target: "lockScreen" target: "lockScreen"
function toggle() { function toggle() {
lockScreen.locked = !lockScreen.locked lockScreen.isLoaded = !lockScreen.isLoaded
} }
} }

View file

@ -14,23 +14,12 @@ import qs.Widgets
NLoader { NLoader {
id: lockScreen id: lockScreen
// External API
property bool locked: false
// Internal loader control; keep content alive briefly after unlocking
property bool _isLoadedInternal: false
// Only load when explicitly requested (locked) or while waiting to safely unload
isLoaded: _isLoadedInternal
onLockedChanged: {
if (locked) {
_isLoadedInternal = true
}
}
// Allow a small grace period after unlocking so the compositor releases the lock surfaces // Allow a small grace period after unlocking so the compositor releases the lock surfaces
Timer { Timer {
id: unloadAfterUnlockTimer id: unloadAfterUnlockTimer
interval: 250 interval: 250
repeat: false repeat: false
onTriggered: lockScreen._isLoadedInternal = false onTriggered: lockScreen.isLoaded = false
} }
function scheduleUnloadAfterUnlock() { function scheduleUnloadAfterUnlock() {
unloadAfterUnlockTimer.start() unloadAfterUnlockTimer.start()
@ -38,9 +27,8 @@ NLoader {
content: Component { content: Component {
WlSessionLock { WlSessionLock {
id: lock id: lock
// Keep inner lock state in sync with wrapper // Tie session lock to loader visibility
locked: lockScreen.locked locked: lockScreen.isLoaded
onLockedChanged: lockScreen.locked = locked
// Lockscreen is a different beast, needs a capital 'S' in 'Screen' to get the current screen // Lockscreen is a different beast, needs a capital 'S' in 'Screen' to get the current screen
readonly property real scaling: ScalingService.scale(Screen) readonly property real scaling: ScalingService.scale(Screen)
@ -82,7 +70,6 @@ NLoader {
Logger.log("LockScreen", "Authentication successful, unlocking") Logger.log("LockScreen", "Authentication successful, unlocking")
// First release the Wayland session lock, then unload after a short delay // First release the Wayland session lock, then unload after a short delay
lock.locked = false lock.locked = false
lockScreen.locked = false
lockScreen.scheduleUnloadAfterUnlock() lockScreen.scheduleUnloadAfterUnlock()
lock.password = "" lock.password = ""
lock.errorMessage = "" lock.errorMessage = ""

View file

@ -99,7 +99,7 @@ NPanel {
onClicked: { onClicked: {
Logger.log("PowerMenu", "Lock screen requested") Logger.log("PowerMenu", "Lock screen requested")
// Lock the screen // Lock the screen
lockScreen.locked = true lockScreen.isLoaded = true
powerMenu.visible = false powerMenu.visible = false
} }
} }