|
@ -507,26 +507,34 @@ bool qmenu_drive(Qmenu* qm, int key, Qmenu_action* out_action) { |
|
|
case KEY_UP: { |
|
|
case KEY_UP: { |
|
|
ITEM* starting = current_item(qm->ncurses_menu); |
|
|
ITEM* starting = current_item(qm->ncurses_menu); |
|
|
menu_driver(qm->ncurses_menu, REQ_UP_ITEM); |
|
|
menu_driver(qm->ncurses_menu, REQ_UP_ITEM); |
|
|
|
|
|
ITEM* cur = current_item(qm->ncurses_menu); |
|
|
for (;;) { |
|
|
for (;;) { |
|
|
ITEM* cur = current_item(qm->ncurses_menu); |
|
|
|
|
|
if (!cur || cur == starting) |
|
|
if (!cur || cur == starting) |
|
|
break; |
|
|
break; |
|
|
if (!qmenu_itemextra(extras, cur)->is_spacer) |
|
|
if (!qmenu_itemextra(extras, cur)->is_spacer) |
|
|
break; |
|
|
break; |
|
|
|
|
|
ITEM* prev = cur; |
|
|
menu_driver(qm->ncurses_menu, REQ_UP_ITEM); |
|
|
menu_driver(qm->ncurses_menu, REQ_UP_ITEM); |
|
|
|
|
|
cur = current_item(qm->ncurses_menu); |
|
|
|
|
|
if (cur == prev) |
|
|
|
|
|
break; |
|
|
} |
|
|
} |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
case KEY_DOWN: { |
|
|
case KEY_DOWN: { |
|
|
ITEM* starting = current_item(qm->ncurses_menu); |
|
|
ITEM* starting = current_item(qm->ncurses_menu); |
|
|
menu_driver(qm->ncurses_menu, REQ_DOWN_ITEM); |
|
|
menu_driver(qm->ncurses_menu, REQ_DOWN_ITEM); |
|
|
|
|
|
ITEM* cur = current_item(qm->ncurses_menu); |
|
|
for (;;) { |
|
|
for (;;) { |
|
|
ITEM* cur = current_item(qm->ncurses_menu); |
|
|
|
|
|
if (!cur || cur == starting) |
|
|
if (!cur || cur == starting) |
|
|
break; |
|
|
break; |
|
|
if (!qmenu_itemextra(extras, cur)->is_spacer) |
|
|
if (!qmenu_itemextra(extras, cur)->is_spacer) |
|
|
break; |
|
|
break; |
|
|
|
|
|
ITEM* prev = cur; |
|
|
menu_driver(qm->ncurses_menu, REQ_DOWN_ITEM); |
|
|
menu_driver(qm->ncurses_menu, REQ_DOWN_ITEM); |
|
|
|
|
|
cur = current_item(qm->ncurses_menu); |
|
|
|
|
|
if (cur == prev) |
|
|
|
|
|
break; |
|
|
} |
|
|
} |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|