Fix next/previous page. DOH.

This commit is contained in:
Nicholas Marriott 2009-01-23 17:14:30 +00:00
parent 4d9af27b0b
commit 374b0d85b8
1 changed files with 17 additions and 10 deletions

View File

@ -1,4 +1,4 @@
/* $Id: window-choose.c,v 1.3 2009-01-18 17:20:52 nicm Exp $ */
/* $Id: window-choose.c,v 1.4 2009-01-23 17:14:30 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@ -193,8 +193,7 @@ window_choose_key(struct window_pane *wp, unused struct client *c, int key)
break;
if (data->selected == items - 1) {
data->selected = 0;
if (data->top != 0)
data->top = 0;
data->top = 0;
window_choose_redraw_screen(wp);
break;
}
@ -211,10 +210,16 @@ window_choose_key(struct window_pane *wp, unused struct client *c, int key)
}
break;
case MODEKEY_PPAGE:
if (data->top < screen_size_y(s))
if (data->selected < screen_size_y(s)) {
data->selected = 0;
data->top = 0;
else
data->top -= screen_size_y(s);
} else {
data->selected -= screen_size_y(s);
if (data->top < screen_size_y(s))
data->top = 0;
else
data->top -= screen_size_y(s);
}
window_choose_redraw_screen(wp);
break;
case MODEKEY_NONE:
@ -222,10 +227,12 @@ window_choose_key(struct window_pane *wp, unused struct client *c, int key)
break;
/* FALLTHROUGH */
case MODEKEY_NPAGE:
if (data->top + screen_size_y(s) > ARRAY_LENGTH(&data->list))
data->top = ARRAY_LENGTH(&data->list);
else
data->top += screen_size_y(s);
data->selected += screen_size_y(s);
if (data->selected > items - 1)
data->selected = items - 1;
data->top += screen_size_y(s);
if (data->top + screen_size_y(s) - 1 > data->selected)
data->top = items - screen_size_y(s);
window_choose_redraw_screen(wp);
break;
default: