diff options
Diffstat (limited to 'window-more.c')
-rw-r--r-- | window-more.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/window-more.c b/window-more.c index e397f3e1..97009a81 100644 --- a/window-more.c +++ b/window-more.c @@ -1,4 +1,4 @@ -/* $Id: window-more.c,v 1.28 2009-01-28 19:52:21 nicm Exp $ */ +/* $Id: window-more.c,v 1.29 2009-02-13 21:39:45 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -46,6 +46,8 @@ const struct window_mode window_more_mode = { struct window_more_mode_data { struct screen screen; + struct mode_key_data mdata; + ARRAY_DECL(, char *) list; u_int top; }; @@ -97,6 +99,9 @@ window_more_init(struct window_pane *wp) screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0); s->mode &= ~MODE_CURSOR; + mode_key_init(&data->mdata, + options_get_number(&wp->window->options, "mode-keys"), 0); + return (s); } @@ -106,6 +111,8 @@ window_more_free(struct window_pane *wp) struct window_more_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)); ARRAY_FREE(&data->list); @@ -129,31 +136,25 @@ window_more_key(struct window_pane *wp, unused struct client *c, int key) { struct window_more_mode_data *data = wp->modedata; struct screen *s = &data->screen; - int table; - 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: window_pane_reset_mode(wp); break; - case MODEKEY_UP: + case MODEKEYCMD_UP: window_more_scroll_up(wp); break; - case MODEKEY_DOWN: + case MODEKEYCMD_DOWN: window_more_scroll_down(wp); break; - case MODEKEY_PPAGE: + case MODEKEYCMD_PREVIOUSPAGE: if (data->top < screen_size_y(s)) data->top = 0; else data->top -= screen_size_y(s); window_more_redraw_screen(wp); break; - case MODEKEY_NONE: - if (key != ' ') - break; - /* FALLTHROUGH */ - case MODEKEY_NPAGE: + case MODEKEYCMD_NEXTPAGE: if (data->top + screen_size_y(s) > ARRAY_LENGTH(&data->list)) data->top = ARRAY_LENGTH(&data->list); else |