on xenial help sign in
prevent unwanted prompts loading

prevent unnecessary Prompts loading remove active only load Prompts when visible

commit6e36a855bfd86ecfd0786a4f155934dd573fcad3 authorLionel Duboeuf <lduboeuf@ouvaton.org> dateMon 21 Feb 2022, 17:13 (5 years ago) parentc062c99
2 files changed+19−22
qml/Greeter/GreeterPrompt.qml+3−3 qml/Greeter/PromptList.qml+16−19
qml/Greeter/GreeterPrompt.qml+3−3
@@ -25,7 +25,7 @@ FocusScope {
2525 focus: true
2626
2727 property bool isPrompt
28− property bool isAlphanumeric
28+ property bool isPinPrompt
2929 property string text
3030 property bool isSecret
3131 property bool interactive: true
@@ -115,12 +115,12 @@ FocusScope {
115115 },
116116 State {
117117 name: "PinPrompt"
118− when: root.isPrompt && !root.isAlphanumeric && root.isSecret
118+ when: root.isPinPrompt
119119 PropertyChanges { target: loader; source: "PinPrompt.qml" }
120120 },
121121 State {
122122 name: "TextPrompt"
123− when: root.isPrompt
123+ when: !root.isPinPrompt
124124 PropertyChanges { target: loader; source: "TextPrompt.qml" }
125125 }
126126 ]
qml/Greeter/PromptList.qml+16−19
@@ -67,10 +67,14 @@ FocusScope {
6767
6868 readonly property bool isLabel: model.type == LightDMService.prompts.Message ||
6969 model.type == LightDMService.prompts.Error
70− readonly property var modelData: model
70+ readonly property var modelText: model.text
71+ readonly property var modelType: model.type
72+ readonly property var modelIndex: model.index
7173
7274 sourceComponent: isLabel ? infoLabel : greeterPrompt
7375
76+ active: root.visible
77+
7478 onLoaded: {
7579 for (var i = 0; i < repeater.count; i++) {
7680 var item = repeater.itemAt(i);
@@ -81,12 +85,6 @@ FocusScope {
8185 }
8286 loader.item.opacity = 1;
8387 }
84−
85− Binding {
86− target: loader.item
87− property: "model"
88− value: loader.modelData
89− }
9088 }
9189 }
9290 }
@@ -95,19 +93,18 @@ FocusScope {
9593 id: infoLabel
9694
9795 FadingLabel {
98− objectName: "infoLabel" + model.index
96+ objectName: "infoLabel" + modelIndex
9997 width: root.width
10098
101− property var model
10299 readonly property bool isPrompt: false
103100
104− color: model.type === LightDMService.prompts.Message ? theme.palette.normal.raisedSecondaryText
101+ color: modelType === LightDMService.prompts.Message ? theme.palette.normal.raisedSecondaryText
105102 : theme.palette.normal.negative
106103 fontSize: "small"
107104 textFormat: Text.PlainText
108− text: model.text
105+ text: modelText
109106
110− visible: model.type === LightDMService.prompts.Message
107+ visible: modelType === LightDMService.prompts.Message
111108
112109 Behavior on opacity { UbuntuNumberAnimation {} }
113110 opacity: 0
@@ -118,23 +115,23 @@ FocusScope {
118115 id: greeterPrompt
119116
120117 GreeterPrompt {
121− objectName: "greeterPrompt" + model.index
118+ objectName: "greeterPrompt" + modelIndex
122119 width: root.width
123120
124− property var model
121+ property bool isAlphanumeric: modelText !== "" || root.alphanumeric
125122
126123 interactive: root.interactive
127− isAlphanumeric: model.text !== "" || root.alphanumeric
128− isPrompt: model.type !== LightDMService.prompts.Button
129− isSecret: model.type === LightDMService.prompts.Secret
124+ isPrompt: modelType !== LightDMService.prompts.Button
125+ isSecret: modelType === LightDMService.prompts.Secret
126+ isPinPrompt: isPrompt && !isAlphanumeric && isSecret
130127 loginError: root.loginError
131128 hasKeyboard: root.hasKeyboard
132− text: model.text ? model.text : (isAlphanumeric ? i18n.tr("Passphrase") : i18n.tr("Passcode"))
129+ text: modelText ? modelText : (isAlphanumeric ? i18n.tr("Passphrase") : i18n.tr("Passcode"))
133130
134131 onClicked: root.clicked()
135132 onAccepted: {
136133 // If there is another GreeterPrompt, focus it.
137− for (var i = model.index + 1; i < repeater.count; i++) {
134+ for (var i = modelIndex + 1; i < repeater.count; i++) {
138135 var item = repeater.itemAt(i).item;
139136 if (item.isPrompt) {
140137 item.forceActiveFocus();