Browse Source

Cleanup

master
cancel 6 years ago
parent
commit
183aa6f063
  1. 10
      term_util.c
  2. 2
      term_util.h
  3. 23
      tui_main.c

10
term_util.c

@ -237,3 +237,13 @@ bool qmenu_drive(Qmenu* qm, int key, Qmenu_action* out_action) {
}
Qmenu* qmenu_of(Qblock* qb) { return ORCA_CONTAINER_OF(qb, Qmenu, qblock); }
bool qmenu_top_is_menu(int id) {
Qblock* qb = qnav_top_block();
if (!qb)
return false;
if (qb->tag != Qblock_type_qmenu)
return false;
Qmenu* qm = qmenu_of(qb);
return qm->id == id;
}

2
term_util.h

@ -95,6 +95,7 @@ void qnav_stack_pop();
void qblock_print_frame(Qblock* qb, bool active);
void qblock_set_title(Qblock* qb, char const* title);
Qmsg* qmsg_push(int height, int width);
WINDOW* qmsg_window(Qmsg* qm);
void qmsg_set_title(Qmsg* qm, char const* title);
@ -107,5 +108,6 @@ void qmenu_add_spacer(Qmenu* qm);
void qmenu_push_to_nav(Qmenu* qm);
bool qmenu_drive(Qmenu* qm, int key, Qmenu_action* out_action);
Qmenu* qmenu_of(Qblock* qb);
bool qmenu_top_is_menu(int id);
extern Qnav_stack qnav_stack;

23
tui_main.c

@ -1834,6 +1834,13 @@ int main(int argc, char** argv) {
case Qblock_type_qmenu: {
Qmenu* qm = qmenu_of(qb);
Qmenu_action act;
// special case for main menu: pressing the key to open it will close
// it again.
if (qm->id == Main_menu_id &&
(key == CTRL_PLUS('d') || key == KEY_F(1))) {
qnav_stack_pop();
break;
}
if (qmenu_drive(qm, key, &act)) {
switch (act.any.type) {
case Qmenu_action_type_canceled: {
@ -1974,21 +1981,15 @@ int main(int argc, char** argv) {
break;
case CTRL_PLUS('d'):
case KEY_F(1): {
if (qnav_top_block()) {
qnav_stack_pop();
} else {
push_main_menu();
}
} break;
case KEY_F(1):
push_main_menu();
break;
case '?':
push_controls_msg();
break;
case CTRL_PLUS('s'): {
case CTRL_PLUS('s'):
try_save_with_msg(&ged_state);
} break;
break;
default:
if (key >= CHAR_MIN && key <= CHAR_MAX && is_valid_glyph((Glyph)key)) {

Loading…
Cancel
Save