on xenial help sign in
Check that the selected session actually exists
8263b17Josh Arenson
qml/Greeter/Greeter.qml+13−11
@@ -62,16 +62,6 @@ Showable {
62
62
63 readonly property bool animating: loader.item ? loader.item.animating : false
63 readonly property bool animating: loader.item ? loader.item.animating : false
64
64
65− property string sessionToStart: {
66− if (loader.active && loader.item.sessionToStart !== undefined) {
67− return loader.item.sessionToStart
68− } else if (LightDMService.greeter.defaultSession) {
69− return LightDMService.greeter.defaultSession
70− } else {
71− return "ubuntu"
72− }
73− }
74−
75 signal tease()
65 signal tease()
76 signal sessionStarted()
66 signal sessionStarted()
77 signal emergencyCall()
67 signal emergencyCall()
@@ -135,6 +125,18 @@ Showable {
135 return d.startUnlock(true /* toTheRight */);
125 return d.startUnlock(true /* toTheRight */);
136 }
126 }
137
127
128+ function sessionToStart() {
129+ for (var i = 0; i < LightDMService.sessions.count; i++) {
130+ var session = LightDMService.sessions.data(i,
131+ LightDMService.sessionRoles.KeyRole);
132+ if (session === LightDMService.greeter.defaultSession ||
133+ session === loader.item.sessionToStart) {
134+ return session;
135+ }
136+ }
137+ return "ubuntu" // The default / fallback
138+ }
139+
138 QtObject {
140 QtObject {
139 id: d
141 id: d
140
142
@@ -200,7 +202,7 @@ Showable {
200
202
201 function login() {
203 function login() {
202 enabled = false;
204 enabled = false;
203− if (LightDMService.greeter.startSessionSync(root.sessionToStart)) {
205+ if (LightDMService.greeter.startSessionSync(root.sessionToStart())) {
204 sessionStarted();
206 sessionStarted();
205 hideView();
207 hideView();
206 } else if (loader.item) {
208 } else if (loader.item) {