X-Git-Url: https://git.danieliu.xyz/?p=taskasaur.git;a=blobdiff_plain;f=taskasaur.c;fp=taskasaur.c;h=8ebd419a19c6b527c8a8ad7e1cb99c4e35f82840;hp=b00d29a5641c547fc0278000624d5d1f45b6ab1d;hb=cc7da4297912fa4cacc4b13ebc59223df415a116;hpb=66d3a8f071cbf459f6799581146d4a34ca6e2c7b diff --git a/taskasaur.c b/taskasaur.c index b00d29a..8ebd419 100644 --- a/taskasaur.c +++ b/taskasaur.c @@ -14,6 +14,8 @@ void normal_renderstep(BoardMenu* boardmenu); void popup_renderstep(BoardMenu* boardmenu); void save_to_file(char* filepath, BoardMenu* boardmenu); +void exit_step(BoardMenu* boardmenu); + int main(int argc, char** argv) { @@ -34,7 +36,9 @@ main(int argc, char** argv) normal_renderstep(boardmenu); int ch; - while ((ch = getch()) != BINDING_QUIT) { + while (1) { + + ch = getch(); if (boardmenu->popup_open == 0) { normal_handleinput(boardmenu, ch); @@ -49,7 +53,6 @@ main(int argc, char** argv) /* save on exit - this causes weird stuff to happen, maybe it's not given enough time to write before program exits? */ /* save_to_file(boardfile_name, boardmenu); */ - exit_tscurses(); return 0; } @@ -196,6 +199,9 @@ normal_handleinput(BoardMenu* boardmenu, int ch) case BINDING_WRITE: save_to_file(boardfile_name, boardmenu); break; + case BINDING_QUIT: + exit_step(boardmenu); + break; case KEY_RESIZE: /* ; */ /* int y, x; */ @@ -224,6 +230,9 @@ popup_handleinput(BoardMenu* boardmenu, int ch) case BINDING_SCROLL_DOWN: menu_driver(popup_menu, MENU_DOWN); break; + case BINDING_QUIT: + boardmenu->popup_open = 0; + break; } } @@ -261,3 +270,10 @@ save_to_file(char* filepath, BoardMenu* boardmenu) begin_write(filepath, writeboard); free_board(writeboard); } + +void +exit_step(BoardMenu* boardmenu) +{ + exit_tscurses(); + exit(0); +}