--- a/contents/lockscreen/LockScreenUi.qml +++ b/contents/lockscreen/LockScreenUi.qml @@ -83,20 +83,32 @@ } } + Connections { + target: root + function onViewVisibleChanged() { + if (root.viewVisible) { + lockScreenRoot.uiVisible = true; + } + } + } + SessionManagement { id: sessionManagement } KeyboardIndicator.KeyState { id: capsLockState key: Qt.Key_CapsLock } Connections { target: sessionManagement function onAboutToSuspend() { root.clearPassword(); } + function onResumingFromSuspend() { + resumeAuthenticationTimer.restart(); + } } RejectPasswordAnimation { @@ -108,7 +120,6 @@ id: lockScreenRoot property bool uiVisible: false - property bool seenPositionChange: false property bool blockUI: containsMouse && (mainStack.depth > 1 || mainBlock.mainPasswordBox.text.length > 0 || inputPanel.keyboardActive) x: parent.x @@ -118,13 +129,10 @@ width: parent.width height: parent.height hoverEnabled: true - cursorShape: uiVisible ? Qt.ArrowCursor : Qt.BlankCursor + cursorShape: Qt.ArrowCursor drag.filterChildren: true onPressed: uiVisible = true; - onPositionChanged: { - uiVisible = seenPositionChange; - seenPositionChange = true; - } + onPositionChanged: uiVisible = true; onUiVisibleChanged: { if (uiVisible) { Window.window.requestActivate(); @@ -135,6 +143,18 @@ } authenticator.startAuthenticating(); } + Timer { + id: resumeAuthenticationTimer + interval: 1500 + onTriggered: authenticator.startAuthenticating() + } + Timer { + id: postGraceAuthenticationTimer + // Retry once after Plasma's default five-second lock grace period. + interval: 6000 + running: root.viewVisible + onTriggered: authenticator.startAuthenticating() + } onBlockUIChanged: { if (blockUI) { fadeoutTimer.running = false; @@ -194,6 +214,6 @@ WallpaperFader { anchors.fill: parent - state: lockScreenRoot.uiVisible ? "on" : "off" + state: "on" source: wallpaper mainStack: mainStack footer: footer @@ -211,7 +231,7 @@ samples: 15 spread: 0.2 color : Qt.rgba(0, 0, 0, 0.7) - opacity: lockScreenRoot.uiVisible ? 0 : 1 + opacity: 0 Behavior on opacity { OpacityAnimator { duration: Kirigami.Units.veryLongDuration * 2 @@ -265 +285 @@ - lockScreenUiVisible: lockScreenRoot.uiVisible + lockScreenUiVisible: true