Pgup/pgdown

This commit is contained in:
simon.kagstrom 2009-01-05 14:49:11 +00:00
parent 32fb147ba4
commit 7f85e93374

View File

@ -143,14 +143,21 @@ static void menu_draw(SDL_Surface *screen, menu_t *p_menu)
} }
} }
static int get_next_seq_y(menu_t *p_menu, int v, int dy)
{
if (v + dy < 0)
return p_menu->n_entries - 1;
if (v + dy > p_menu->n_entries - 1)
return 0;
return v + dy;
}
static void select_next(menu_t *p_menu, int dx, int dy) static void select_next(menu_t *p_menu, int dx, int dy)
{ {
int next; int next;
p_menu->cur_sel = (p_menu->cur_sel + dy) < 0 ? p_menu->n_entries - 1 : p_menu->cur_sel = get_next_seq_y(p_menu, p_menu->cur_sel, dy);
(p_menu->cur_sel + dy) % p_menu->n_entries; next = get_next_seq_y(p_menu, p_menu->cur_sel, dy);
next = (p_menu->cur_sel + dy + 1) < 0 ? p_menu->n_entries - 1 :
(p_menu->cur_sel + dy + 1) % p_menu->n_entries;
if (p_menu->pp_msgs[p_menu->cur_sel][0] == ' ' || if (p_menu->pp_msgs[p_menu->cur_sel][0] == ' ' ||
IS_SUBMENU(p_menu->pp_msgs[p_menu->cur_sel]) ) IS_SUBMENU(p_menu->pp_msgs[p_menu->cur_sel]) )
@ -354,6 +361,10 @@ int menu_select(SDL_Surface *screen, menu_t *p_menu,
select_next(p_menu, 0, -1); select_next(p_menu, 0, -1);
else if (keys & KEY_DOWN) else if (keys & KEY_DOWN)
select_next(p_menu, 0, 1); select_next(p_menu, 0, 1);
else if (keys & KEY_PAGEUP)
select_next(p_menu, 0, -6);
else if (keys & KEY_PAGEDOWN)
select_next(p_menu, 0, 6);
else if (keys & KEY_LEFT) else if (keys & KEY_LEFT)
select_next(p_menu, -1, 0); select_next(p_menu, -1, 0);
else if (keys & KEY_RIGHT) else if (keys & KEY_RIGHT)