diff options
author | Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> | 2010-04-13 21:41:30 -0400 |
---|---|---|
committer | Sadrul Habib Chowdhury <sadrul@users.sourceforge.net> | 2010-04-13 21:41:30 -0400 |
commit | a2284110b51e4b7695e96bb12e63c2263765f45d (patch) | |
tree | 5eb3761d0fb5dde45d397470bd34f0e27dcafd37 | |
parent | 4fb0d4f6fb14f79ea8cca4b6d567769f30d9f099 (diff) | |
download | screen-a2284110b51e4b7695e96bb12e63c2263765f45d.tar.gz |
Select window by pressing # in window number.
Thanks to Martin Przyjazny for reporting.
-rw-r--r-- | src/list_window.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/list_window.c b/src/list_window.c index b65600d..4fd65d0 100644 --- a/src/list_window.c +++ b/src/list_window.c @@ -427,6 +427,38 @@ gl_Window_input(struct ListData *ldata, char **inp, int *len) } break; default: + if (ch >= '0' && ch <= '9') + { + struct ListRow *row = ldata->root; + for (; row; row = row->next) + { + struct win *w = row->data; + if (w->w_number == ch - '0') + { + struct ListRow *old = ldata->selected; + if (old == row) + break; + ldata->selected = row; + if (ldata->selected->y == -1) + { + /* We need to list all the rows, since we are scrolling down. But first, + * find the top of the visible list. */ + ldata->top = row; + glist_display_all(ldata); + } + else + { + /* just redisplay the two lines. */ + ldata->list_fn->gl_printrow(ldata, old); + ldata->list_fn->gl_printrow(ldata, ldata->selected); + flayer->l_y = ldata->selected->y; + LaySetCursor(); + } + break; + } + } + break; + } --*inp; ++*len; return 0; |