@@ -135,7 +135,7 @@ FocusScope {
136 objectName: "dash"
136 objectName: "dash"
138− available: !greeter.shown && !lockscreen.shown
138+ available: !LightDM.Greeter.active
139 hides: [stages, launcher, panel.indicators]
139 hides: [stages, launcher, panel.indicators]
140 shown: disappearingAnimationProgress !== 1.0 && greeterWrapper.showProgress !== 1.0
140 shown: disappearingAnimationProgress !== 1.0 && greeterWrapper.showProgress !== 1.0
141 enabled: disappearingAnimationProgress === 0.0 && greeterWrapper.showProgress === 0.0 && edgeDemo.dashEnabled
141 enabled: disappearingAnimationProgress === 0.0 && greeterWrapper.showProgress === 0.0 && edgeDemo.dashEnabled
@@ -198,7 +198,7 @@ FocusScope {
200 if (shown) {
200 if (shown) {
201− if (overlayMode || locked) {
201+ if (overlayMode || locked || greeter.fakeActiveForApp !== "") {
202 return 0;
202 return 0;
204 return launcher.progress
204 return launcher.progress
@@ -243,10 +243,17 @@ FocusScope {
243 target: ApplicationManager
243 target: ApplicationManager
245 onFocusRequested: {
245 onFocusRequested: {
246+ if (greeter.fakeActiveForApp !== "" && greeter.fakeActiveForApp !== appId) {
246 stages.show(true);
250 stages.show(true);
249 onFocusedApplicationIdChanged: {
253 onFocusedApplicationIdChanged: {
254+ if (greeter.fakeActiveForApp !== "" && greeter.fakeActiveForApp !== ApplicationManager.focusedApplicationId) {
250 if (ApplicationManager.focusedApplicationId.length > 0) {
257 if (ApplicationManager.focusedApplicationId.length > 0) {
251 stages.show(false);
258 stages.show(false);
@@ -288,6 +295,11 @@ FocusScope {
288 property: "dragAreaWidth"
295 property: "dragAreaWidth"
289 value: shell.edgeSize
296 value: shell.edgeSize
299+ target: applicationsDisplayLoader.item
300+ property: "spreadEnabled"
301+ value: greeter.fakeActiveForApp === "" // to support emergency dialer hack
@@ -312,6 +324,13 @@ FocusScope {
313 onEntered: LightDM.Greeter.respond(passphrase);
325 onEntered: LightDM.Greeter.respond(passphrase);
314 onCancel: greeter.show()
326 onCancel: greeter.show()
328+ greeter.fakeActiveForApp = "dialer-app"
329+ shell.activateApplication("dialer-app")
333+ onShownChanged: if (shown) greeter.fakeActiveForApp = ""
316 Component.onCompleted: {
335 Component.onCompleted: {
317 if (LightDM.Users.count == 1) {
336 if (LightDM.Users.count == 1) {
@@ -342,6 +361,7 @@ FocusScope {
343 if (LightDM.Greeter.authenticated) {
362 if (LightDM.Greeter.authenticated) {
344 lockscreen.hide();
363 lockscreen.hide();
346 lockscreen.clear(true);
366 lockscreen.clear(true);
@@ -351,7 +371,7 @@ FocusScope {
351 Binding {
371 Binding {
352 target: LightDM.Greeter
372 target: LightDM.Greeter
353 property: "active"
373 property: "active"
354− value: greeter.shown || lockscreen.shown
374+ value: greeter.shown || lockscreen.shown || greeter.fakeActiveForApp != ""
357 Rectangle {
377 Rectangle {
@@ -374,11 +394,16 @@ FocusScope {
376 readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
396 readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
397+ onShowProgressChanged: if (LightDM.Greeter.promptless && showProgress === 0) greeter.login()
378 Greeter {
399 Greeter {
379 id: greeter
400 id: greeter
380 objectName: "greeter"
401 objectName: "greeter"
403+ signal sessionStarted() // helpful for tests
405+ property string fakeActiveForApp: ""
382 available: true
407 available: true
383 hides: [launcher, panel.indicators]
408 hides: [launcher, panel.indicators]
384 shown: true
409 shown: true
@@ -390,6 +415,16 @@ FocusScope {
391 dragHandleWidth: shell.edgeSize
416 dragHandleWidth: shell.edgeSize
420+ LightDM.Greeter.startSessionSync();
393 onShownChanged: {
428 onShownChanged: {
394 if (shown) {
429 if (shown) {
395 lockscreen.reset();
430 lockscreen.reset();
@@ -398,6 +433,7 @@ FocusScope {
398 if (LightDM.Users.count == 1) {
433 if (LightDM.Users.count == 1) {
399 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
434 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
436+ greeter.fakeActiveForApp = "";
401 greeter.forceActiveFocus();
437 greeter.forceActiveFocus();
@@ -447,12 +483,36 @@ FocusScope {
449 function showHome() {
485 function showHome() {
486+ if (edgeDemo.running)
489+ if (LightDM.Greeter.active) {
490+ if (!LightDM.Greeter.promptless)
450− var animate = !greeter.shown && !stages.shown
495+ var animate = !LightDM.Greeter.active && !stages.shown
452 dash.setCurrentScope("clickscope", animate, false)
496 dash.setCurrentScope("clickscope", animate, false)
453 stages.hide()
497 stages.hide()
500+ function showDash() {
501+ if (LightDM.Greeter.active && !LightDM.Greeter.promptless)
504+ if (stages.shown && !stages.overlayMode) {
505+ if (!stages.locked) {
510+ if (greeter.shown) {
511+ greeter.hideRight();
456 function hideIndicatorMenu(delay) {
516 function hideIndicatorMenu(delay) {
457 panel.hideIndicatorMenu(delay);
517 panel.hideIndicatorMenu(delay);
@@ -473,8 +533,8 @@ FocusScope {
474 property string focusedAppId: ApplicationManager.focusedApplicationId
534 property string focusedAppId: ApplicationManager.focusedApplicationId
475 property var focusedApplication: ApplicationManager.findApplication(focusedAppId)
535 property var focusedApplication: ApplicationManager.findApplication(focusedAppId)
476− fullscreenMode: focusedApplication && stages.fullscreen && !greeter.shown && !lockscreen.shown
536+ fullscreenMode: focusedApplication && stages.fullscreen && !LightDM.Greeter.active
477− searchVisible: !greeter.shown && !lockscreen.shown && dash.shown && dash.searchable
537+ searchVisible: !LightDM.Greeter.active && dash.shown && dash.searchable
479 InputFilterArea {
539 InputFilterArea {
480 anchors {
540 anchors {
@@ -508,24 +568,8 @@ FocusScope {
508 dragAreaWidth: shell.edgeSize
568 dragAreaWidth: shell.edgeSize
509 available: edgeDemo.launcherEnabled
569 available: edgeDemo.launcherEnabled
511− onShowDashHome: {
571+ onShowDashHome: showHome()
512− if (edgeDemo.running)
517− onDash: {
572+ onDash: showDash()
518− if (stages.shown && !stages.overlayMode) {
519− if (!stages.locked) {
524− if (greeter.shown) {
525− greeter.hideRight();
529 onDashSwipeChanged: if (dashSwipe && stages.shown) dash.setCurrentScope("clickscope", false, true)
573 onDashSwipeChanged: if (dashSwipe && stages.shown) dash.setCurrentScope("clickscope", false, true)
530 onLauncherApplicationSelected: {
574 onLauncherApplicationSelected: {
531 if (!edgeDemo.running)
575 if (!edgeDemo.running)