Add always-visible Plasma unlock prompt
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
--- a/contents/lockscreen/LockScreenUi.qml
|
||||
+++ b/contents/lockscreen/LockScreenUi.qml
|
||||
@@ -83,6 +83,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ Connections {
|
||||
+ target: root
|
||||
+ function onViewVisibleChanged() {
|
||||
+ if (root.viewVisible) {
|
||||
+ lockScreenRoot.uiVisible = true;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
SessionManagement {
|
||||
id: sessionManagement
|
||||
}
|
||||
@@ -108,7 +117,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
|
||||
@@ -119,10 +127,7 @@
|
||||
cursorShape: uiVisible ? Qt.ArrowCursor : Qt.BlankCursor
|
||||
drag.filterChildren: true
|
||||
onPressed: uiVisible = true;
|
||||
- onPositionChanged: {
|
||||
- uiVisible = seenPositionChange;
|
||||
- seenPositionChange = true;
|
||||
- }
|
||||
+ onPositionChanged: uiVisible = true;
|
||||
onUiVisibleChanged: {
|
||||
if (uiVisible) {
|
||||
Window.window.requestActivate();
|
||||
@@ -135,6 +140,13 @@
|
||||
}
|
||||
authenticator.startAuthenticating();
|
||||
}
|
||||
+ Timer {
|
||||
+ // Keep the authentication backend active while the prompt is visible.
|
||||
+ interval: 1000
|
||||
+ running: parent.uiVisible
|
||||
+ repeat: true
|
||||
+ onTriggered: authenticator.startAuthenticating()
|
||||
+ }
|
||||
onBlockUIChanged: {
|
||||
if (blockUI) {
|
||||
fadeoutTimer.running = false;
|
||||
@@ -143,19 +155,12 @@
|
||||
fadeoutTimer.restart();
|
||||
}
|
||||
}
|
||||
- onExited: {
|
||||
- uiVisible = false;
|
||||
- }
|
||||
Keys.onEscapePressed: {
|
||||
- // If the escape key is pressed, kscreenlocker will turn off the screen.
|
||||
- // We do not want to show the password prompt in this case.
|
||||
- if (uiVisible) {
|
||||
- uiVisible = false;
|
||||
- if (inputPanel.keyboardActive) {
|
||||
- inputPanel.showHide();
|
||||
- }
|
||||
- root.clearPassword();
|
||||
+ // KScreenLocker will turn off the screen; leave the prompt ready for wake-up.
|
||||
+ if (inputPanel.keyboardActive) {
|
||||
+ inputPanel.showHide();
|
||||
}
|
||||
+ root.clearPassword();
|
||||
}
|
||||
Keys.onPressed: event => {
|
||||
uiVisible = true;
|
||||
@@ -167,7 +172,6 @@
|
||||
onTriggered: {
|
||||
if (!lockScreenRoot.blockUI) {
|
||||
mainBlock.mainPasswordBox.showPassword = false;
|
||||
- lockScreenRoot.uiVisible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user