on xenial help sign in
Merge pull request #427 from lduboeuf/xenial_-_fixunwantedprompts
8c34874Florian Leeber
qml/Greeter/GreeterPrompt.qml+3−3
@@ -25,7 +25,7 @@ FocusScope {
25 focus: true
25 focus: true
26
26
27 property bool isPrompt
27 property bool isPrompt
28− property bool isAlphanumeric
28+ property bool isPinPrompt
29 property string text
29 property string text
30 property bool isSecret
30 property bool isSecret
31 property bool interactive: true
31 property bool interactive: true
@@ -115,12 +115,12 @@ FocusScope {
115 },
115 },
116 State {
116 State {
117 name: "PinPrompt"
117 name: "PinPrompt"
118− when: root.isPrompt && !root.isAlphanumeric && root.isSecret
118+ when: root.isPinPrompt
119 PropertyChanges { target: loader; source: "PinPrompt.qml" }
119 PropertyChanges { target: loader; source: "PinPrompt.qml" }
120 },
120 },
121 State {
121 State {
122 name: "TextPrompt"
122 name: "TextPrompt"
123− when: root.isPrompt
123+ when: !root.isPinPrompt
124 PropertyChanges { target: loader; source: "TextPrompt.qml" }
124 PropertyChanges { target: loader; source: "TextPrompt.qml" }
125 }
125 }
126 ]
126 ]
qml/Greeter/PromptList.qml+16−19
@@ -67,10 +67,14 @@ FocusScope {
67
67
68 readonly property bool isLabel: model.type == LightDMService.prompts.Message ||
68 readonly property bool isLabel: model.type == LightDMService.prompts.Message ||
69 model.type == LightDMService.prompts.Error
69 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
71
73
72 sourceComponent: isLabel ? infoLabel : greeterPrompt
74 sourceComponent: isLabel ? infoLabel : greeterPrompt
73
75
76+ active: root.visible
77+
74 onLoaded: {
78 onLoaded: {
75 for (var i = 0; i < repeater.count; i++) {
79 for (var i = 0; i < repeater.count; i++) {
76 var item = repeater.itemAt(i);
80 var item = repeater.itemAt(i);
@@ -81,12 +85,6 @@ FocusScope {
81 }
85 }
82 loader.item.opacity = 1;
86 loader.item.opacity = 1;
83 }
87 }
84−
85− Binding {
86− target: loader.item
87− property: "model"
88− value: loader.modelData
89− }
90 }
88 }
91 }
89 }
92 }
90 }
@@ -95,19 +93,18 @@ FocusScope {
95 id: infoLabel
93 id: infoLabel
96
94
97 FadingLabel {
95 FadingLabel {
98− objectName: "infoLabel" + model.index
96+ objectName: "infoLabel" + modelIndex
99 width: root.width
97 width: root.width
100
98
101− property var model
102 readonly property bool isPrompt: false
99 readonly property bool isPrompt: false
103
100
104− color: model.type === LightDMService.prompts.Message ? theme.palette.normal.raisedSecondaryText
101+ color: modelType === LightDMService.prompts.Message ? theme.palette.normal.raisedSecondaryText
105 : theme.palette.normal.negative
102 : theme.palette.normal.negative
106 fontSize: "small"
103 fontSize: "small"
107 textFormat: Text.PlainText
104 textFormat: Text.PlainText
108− text: model.text
105+ text: modelText
109
106
110− visible: model.type === LightDMService.prompts.Message
107+ visible: modelType === LightDMService.prompts.Message
111
108
112 Behavior on opacity { UbuntuNumberAnimation {} }
109 Behavior on opacity { UbuntuNumberAnimation {} }
113 opacity: 0
110 opacity: 0
@@ -118,23 +115,23 @@ FocusScope {
118 id: greeterPrompt
115 id: greeterPrompt
119
116
120 GreeterPrompt {
117 GreeterPrompt {
121− objectName: "greeterPrompt" + model.index
118+ objectName: "greeterPrompt" + modelIndex
122 width: root.width
119 width: root.width
123
120
124− property var model
121+ property bool isAlphanumeric: modelText !== "" || root.alphanumeric
125
122
126 interactive: root.interactive
123 interactive: root.interactive
127− isAlphanumeric: model.text !== "" || root.alphanumeric
128− isPrompt: model.type !== LightDMService.prompts.Button
124+ isPrompt: modelType !== LightDMService.prompts.Button
129− isSecret: model.type === LightDMService.prompts.Secret
125+ isSecret: modelType === LightDMService.prompts.Secret
126+ isPinPrompt: isPrompt && !isAlphanumeric && isSecret
130 loginError: root.loginError
127 loginError: root.loginError
131 hasKeyboard: root.hasKeyboard
128 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"))
133
130
134 onClicked: root.clicked()
131 onClicked: root.clicked()
135 onAccepted: {
132 onAccepted: {
136 // If there is another GreeterPrompt, focus it.
133 // 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++) {
138 var item = repeater.itemAt(i).item;
135 var item = repeater.itemAt(i).item;
139 if (item.isPrompt) {
136 if (item.isPrompt) {
140 item.forceActiveFocus();
137 item.forceActiveFocus();