@@ -340,6 +340,10 @@ Item {
340 onHideGreeter: greeter.login()
340 onHideGreeter: greeter.login()
342 onShowPrompt: {
342 onShowPrompt: {
343+ shell.enabled = true;
344+ if (!LightDM.Greeter.active) {
345+ return; // could happen if hideGreeter() comes in before we prompt
343 if (greeter.narrowMode) {
347 if (greeter.narrowMode) {
344 if (isDefaultPrompt) {
348 if (isDefaultPrompt) {
345 if (lockscreen.alphaNumeric) {
349 if (lockscreen.alphaNumeric) {
@@ -360,6 +364,9 @@ Item {
362 onPromptlessChanged: {
366 onPromptlessChanged: {
367+ if (!LightDM.Greeter.active) {
368+ return; // could happen if hideGreeter() comes in before we prompt
363 if (LightDM.Greeter.promptless && LightDM.Greeter.authenticated) {
370 if (LightDM.Greeter.promptless && LightDM.Greeter.authenticated) {
364 lockscreen.hide()
371 lockscreen.hide()
@@ -369,6 +376,7 @@ Item {
371 onAuthenticationComplete: {
378 onAuthenticationComplete: {
379+ shell.enabled = true;
372 if (LightDM.Greeter.authenticated) {
380 if (LightDM.Greeter.authenticated) {
373 AccountsService.failedLogins = 0
381 AccountsService.failedLogins = 0
@@ -489,6 +497,11 @@ Item {
490 onShownChanged: {
498 onShownChanged: {
491 if (shown) {
499 if (shown) {
500+ // Disable everything so that user can't swipe greeter or
501+ // launcher until we get first prompt/authenticate, which
502+ // will re-enable the shell.
503+ shell.enabled = false;
492 if (greeter.narrowMode) {
505 if (greeter.narrowMode) {
493 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
506 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));