802,9 → 802,6 |
static enum MENU_ACTION ui_menu(void) { |
unsigned short i, curchoice, attr, x, slen; |
unsigned short xorigin, yorigin; |
uidirty.from = 0; |
uidirty.to = 0xff; |
uidirty.statusbar = 1; |
|
/* find out the longest string */ |
slen = 0; |
815,8 → 812,16 |
|
/* calculate where to draw the menu on screen */ |
xorigin = (screenw - (slen + 5)) / 2; |
yorigin = (screenh - (MENU_QUIT - MENU_OPEN + 5)) / 2; |
yorigin = (screenh - (MENU_QUIT - MENU_OPEN + 6)) / 2; |
|
/* */ |
uidirty.from = yorigin; |
uidirty.to = 0xff; |
uidirty.statusbar = 1; |
|
/* hide the cursor */ |
mdr_cout_cursor_hide(); |
|
curchoice = MENU_OPEN; |
for (;;) { |
/* render menu */ |
831,12 → 836,10 |
x = mdr_cout_str(yorigin + i, xorigin + 2, svarlang_str(8, i), attr, slen); |
if (i == curchoice) { |
mdr_cout_char_rep(yorigin + i, xorigin + x + 2, ' ', SCHEME_MENU_SEL, slen - x + 1); |
mdr_cout_locate(yorigin + i, xorigin + x + 2); |
} |
} |
/* wait for key */ |
switch (keyb_getkey()) { |
case '\r': return(curchoice); /* ENTER */ |
case 0x150: /* down */ |
if (curchoice == MENU_QUIT) { |
curchoice = MENU_OPEN; |
851,7 → 854,12 |
curchoice--; |
} |
break; |
default: return(MENU_NONE); |
default: |
curchoice = MENU_NONE; |
/* FALLTHRU */ |
case '\r': /* ENTER */ |
mdr_cout_cursor_show(); |
return(curchoice); |
} |
} |
} |
1056,6 → 1064,8 |
saveflag = savefile(db, NULL); |
} |
|
mdr_cout_cursor_hide(); |
|
if (saveflag == 0) { |
db->modflag = 0; |
ui_msg(svarlang_str(0, 2), NULL, SCHEME_MSG); |
1064,6 → 1074,7 |
ui_msg(svarlang_str(0, 3), NULL, SCHEME_ERR); |
mdr_bios_tickswait(36); /* 2s */ |
} |
mdr_cout_cursor_show(); |
break; |
|
case MENU_CLOSE: |