diff options
-rw-r--r-- | ui.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/ui.c b/ui.c index 6a834cd..0c2a64e 100644 --- a/ui.c +++ b/ui.c @@ -369,8 +369,7 @@ static void unmark(void) { statusUpdate(); } -void uiShowID(size_t id) { - struct Window *window = windowFor(id); +static void windowShow(struct Window *window) { touchwin(window->pad); windows.other = windows.active; windows.active = window; @@ -378,6 +377,19 @@ void uiShowID(size_t id) { unmark(); } +void uiShowID(size_t id) { + windowShow(windowFor(id)); +} + +void uiShowNum(size_t num) { + struct Window *window = windows.head; + for (size_t i = 0; i < num; ++i) { + window = window->next; + if (!window) return; + } + windowShow(window); +} + void uiWrite(size_t id, enum Heat heat, const time_t *time, const char *str) { (void)time; struct Window *window = windowFor(id); @@ -417,6 +429,9 @@ static void keyCode(int code) { static void keyMeta(wchar_t ch) { switch (ch) { break; case L'm': uiWrite(windows.active->id, Cold, NULL, ""); + break; default: { + if (ch >= L'0' && ch <= L'9') uiShowNum(ch - L'0'); + } } } |