]> git.ozlabs.org Git - petitboot/blobdiff - ui/ncurses/nc-cui.c
ui/ncurses: Call widget process_key handlers first
[petitboot] / ui / ncurses / nc-cui.c
index a2de48e75f3e71c8bf94571896ce4d6d327196b9..0c355ccbe4cee172cb9cfd516171851c9fb83b5b 100644 (file)
@@ -83,6 +83,7 @@ static void cui_start(void)
        define_key("OF", KEY_END);
        define_key("\x1b\x5b\x41", KEY_UP);
        define_key("\x1b\x5b\x42", KEY_DOWN);
+       define_key("\x1b\x5b\x33\x7e", KEY_DC);
 
        while (getch() != ERR)          /* flush stdin */
                (void)0;
@@ -423,11 +424,16 @@ static int cui_process_key(void *arg)
                if (c == ERR)
                        break;
 
-               if (!cui->has_input && cui->client) {
-                       pb_log("UI input received (key = %d), aborting "
-                                       "default boot\n", c);
-                       discover_client_cancel_default(cui->client);
+               if (!cui->has_input) {
                        cui->has_input = true;
+                       if (cui->client) {
+                               pb_log("UI input received (key = %d), aborting "
+                                       "default boot\n", c);
+                               discover_client_cancel_default(cui->client);
+                       } else {
+                               pb_log("UI input received (key = %d), aborting "
+                                       "once server connects\n", c);
+                       }
                }
 
                if (process_global_keys(cui, c))
@@ -927,6 +933,11 @@ static int cui_server_wait(void *arg)
        } else {
                nc_scr_status_printf(cui->current, "Info: Connected to server!");
                talloc_steal(cui, cui->client);
+
+               if (cui->has_input) {
+                       pb_log("Aborting default boot on server connect\n");
+                       discover_client_cancel_default(cui->client);
+               }
        }
 
        return 0;