diff options
Diffstat (limited to 'window-choose.c')
-rw-r--r-- | window-choose.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/window-choose.c b/window-choose.c index b8a06235..13d1429b 100644 --- a/window-choose.c +++ b/window-choose.c @@ -1,4 +1,4 @@ -/* $Id: window-choose.c,v 1.10 2009-01-29 20:02:33 nicm Exp $ */ +/* $Id: window-choose.c,v 1.11 2009-02-13 21:39:45 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net> @@ -53,6 +53,8 @@ struct window_choose_mode_item { struct window_choose_mode_data { struct screen screen; + struct mode_key_data mdata; + ARRAY_DECL(, struct window_choose_mode_item) list; u_int top; u_int selected; @@ -115,6 +117,9 @@ window_choose_init(struct window_pane *wp) screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0); s->mode &= ~MODE_CURSOR; s->mode |= MODE_MOUSE; + + mode_key_init(&data->mdata, + options_get_number(&wp->window->options, "mode-keys"), 0); return (s); } @@ -124,6 +129,8 @@ window_choose_free(struct window_pane *wp) { struct window_choose_mode_data *data = wp->modedata; u_int i; + + mode_key_free(&data->mdata); for (i = 0; i < ARRAY_LENGTH(&data->list); i++) xfree(ARRAY_ITEM(&data->list, i).name); @@ -154,23 +161,21 @@ window_choose_key(struct window_pane *wp, unused struct client *c, int key) struct screen *s = &data->screen; struct screen_write_ctx ctx; struct window_choose_mode_item *item; - int table; u_int items; items = ARRAY_LENGTH(&data->list); - table = options_get_number(&wp->window->options, "mode-keys"); - switch (mode_key_lookup(table, key)) { - case MODEKEY_QUIT: + switch (mode_key_lookup(&data->mdata, key)) { + case MODEKEYCMD_QUIT: data->callback(data->data, -1); window_pane_reset_mode(wp); break; - case MODEKEY_ENTER: + case MODEKEYCMD_CHOOSE: item = &ARRAY_ITEM(&data->list, data->selected); data->callback(data->data, item->idx); window_pane_reset_mode(wp); break; - case MODEKEY_UP: + case MODEKEYCMD_UP: if (items == 0) break; if (data->selected == 0) { @@ -192,7 +197,7 @@ window_choose_key(struct window_pane *wp, unused struct client *c, int key) screen_write_stop(&ctx); } break; - case MODEKEY_DOWN: + case MODEKEYCMD_DOWN: if (items == 0) break; if (data->selected == items - 1) { @@ -213,7 +218,7 @@ window_choose_key(struct window_pane *wp, unused struct client *c, int key) screen_write_stop(&ctx); } break; - case MODEKEY_PPAGE: + case MODEKEYCMD_PREVIOUSPAGE: if (data->selected < screen_size_y(s)) { data->selected = 0; data->top = 0; @@ -226,11 +231,7 @@ window_choose_key(struct window_pane *wp, unused struct client *c, int key) } window_choose_redraw_screen(wp); break; - case MODEKEY_NONE: - if (key != ' ') - break; - /* FALLTHROUGH */ - case MODEKEY_NPAGE: + case MODEKEYCMD_NEXTPAGE: data->selected += screen_size_y(s); if (data->selected > items - 1) data->selected = items - 1; |