diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 03501f2b..701cc280 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -17,6 +17,8 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { private Gtk.Revealer datetime_revealer; private Greeter.DateTimeWidget datetime_widget; + private string? saved_credential = null; + private int current_user_card_index = -1; private unowned Greeter.BaseCard? current_card = null; @@ -268,10 +270,10 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { case Greeter.FPrintUtils.MessageText.FPRINT_TIMEOUT: case Greeter.FPrintUtils.MessageText.FPRINT_ERROR: case Greeter.FPrintUtils.MessageText.OTHER: - current_card.use_fingerprint = false; break; default: current_card.use_fingerprint = true; + saved_credential = null; break; } } @@ -284,6 +286,16 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { ((ManualCard) current_card).wrong_username (); } } + + if (saved_credential != null) { + try { + lightdm_greeter.respond (saved_credential); + } catch (Error e) { + critical (e.message); + } + } else { + do_connect_username (((UserCard) current_card).lightdm_user.name); + } } // Called after the credentials are checked, might be authenticated or not. @@ -326,6 +338,8 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { } } + saved_credential = null; + if (user_card != null) { try { lightdm_greeter.authenticate (user_card.user.user_name); @@ -489,14 +503,7 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { } private void do_connect (string? credential) { - if (credential != null) { - try { - lightdm_greeter.respond (credential); - } catch (Error e) { - critical (e.message); - } - } - + saved_credential = credential; carousel.interactive = false; carousel.scroll_to (current_card, true); }