@@ -61,8 +61,11 @@ Showable {
6161
6262 function forceShow() {
6363 forcedUnlock = false;
64− showNow();
65− d.selectUser(d.currentIndex, true);
64+ if (!required) {
65+ showNow(); // loader.onLoaded will select a user
66+ } else {
67+ d.selectUser(d.currentIndex, true);
68+ }
6669 }
6770
6871 function notifyAppFocusRequested(appId) {
@@ -398,7 +401,10 @@ Showable {
398401 onShowPrompt: {
399402 d.waiting = false;
400403
401− if (!lightDM.greeter.active) {
404+ // Check root.required as well -- even though it's directly used to
405+ // determine greeter.active -- because this callback can be made
406+ // after required=true, but before greeter.active gets updated.
407+ if (!LightDMService.greeter.active && !root.required) {
402408 return; // could happen if hideGreeter() comes in before we prompt
403409 }
404410