static void cmd_zb(key_info_t key_info, keys_info_t *keys_info) { if(can_scroll_menu_up(menu)) { if(menu->pos < menu->win_rows) menu->top = 0; else menu->top = menu->pos - (menu->win_rows - 3); update_menu(); } }
static void cmd_ctrl_y(key_info_t key_info, keys_info_t *keys_info) { if(can_scroll_menu_up(menu)) { int off = MAX(cfg.scroll_off, 0); if(menu->pos >= menu->top + menu->win_rows - 3 - off) menu->pos = menu->top - 1 + menu->win_rows - 3 - off; menu->top--; update_menu(); } }
static void cmd_ctrl_b(key_info_t key_info, keys_info_t *keys_info) { if(can_scroll_menu_up(menu)) { const int s = get_effective_menu_scroll_offset(menu); const int off = (menu->win_rows - 2) - SCROLL_GAP; menu->pos = get_last_visible_line(menu) - off; change_menu_top(menu, -off); if(cfg.scroll_off > 0 && menu->top + (menu->win_rows - 3) - menu->pos < s) menu->pos -= s - (menu->top + (menu->win_rows - 3) - menu->pos); update_menu(); } }
static void cmd_ctrl_y(key_info_t key_info, keys_info_t *keys_info) { if(can_scroll_menu_up(menu)) { int off = MAX(cfg.scroll_off, 0); if(menu->pos >= menu->top + getmaxy(menu_win) - 3 - off) { menu->pos = menu->top - 1 + getmaxy(menu_win) - 3 - off; } --menu->top; menu_partial_redraw(); } }
static void cmd_zb(key_info_t key_info, keys_info_t *keys_info) { if(can_scroll_menu_up(menu)) { if(menu->pos < getmaxy(menu_win)) { menu->top = 0; } else { menu->top = menu->pos - (getmaxy(menu_win) - 3); } menu_partial_redraw(); } }
static void cmd_ctrl_b(key_info_t key_info, keys_info_t *keys_info) { if(can_scroll_menu_up(menu)) { const int s = get_effective_menu_scroll_offset(menu); const int off = (getmaxy(menu_win) - 2) - SCROLL_GAP; menu->pos = menu_last_line(menu) - off; change_menu_top(menu, -off); if(cfg.scroll_off > 0 && menu->top + (getmaxy(menu_win) - 3) - menu->pos < s) { menu->pos -= s - (menu->top + (getmaxy(menu_win) - 3) - menu->pos); } menu_partial_redraw(); } }