From 29ba4138a42092f57b7c252006e71f0dd264385b Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Fri, 21 Oct 2022 12:47:20 +0200 Subject: [PATCH] dialog:: improvements to list dialogs --- config.cpp | 4 ++-- geom-exp.cpp | 22 +++++++++------------- mapeditor.cpp | 3 ++- menus.cpp | 3 +-- scores.cpp | 2 +- yendor.cpp | 3 +-- 6 files changed, 16 insertions(+), 21 deletions(-) diff --git a/config.cpp b/config.cpp index 95e24363..dab1ab99 100644 --- a/config.cpp +++ b/config.cpp @@ -2988,8 +2988,8 @@ EX void find_setting() { dialog::display(); keyhandler = [] (int sym, int uni) { - dialog::handleNavigation(sym, uni); - if(dialog::editInfix(uni)) ; + dialog::handleNavigation(sym, uni); + if(dialog::editInfix(uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/geom-exp.cpp b/geom-exp.cpp index 14535689..ff58355b 100644 --- a/geom-exp.cpp +++ b/geom-exp.cpp @@ -187,17 +187,17 @@ EX void ge_land_selection() { }); stable_sort(landlist.begin(), landlist.end(), [] (eLand l1, eLand l2) { return land_validity(l1).quality_level > land_validity(l2).quality_level; }); - for(int i=0; i= isize(landlist)) { dialog::addBreak(100); break; } - eLand l = landlist[euperpage * eupage + i]; - char ch = '1'+i; + dialog::start_list(900, 900, '1'); + + for(auto& l: landlist) { + string s = XLAT1(linf[l].name); if(landvisited[l]) { - dialog::addBoolItem(s, l == specialland, ch); + dialog::addBoolItem(s, l == specialland, dialog::list_fake_key++); } else { - dialog::addSelItem(s, XLAT("(locked)"), ch); + dialog::addSelItem(s, XLAT("(locked)"), dialog::list_fake_key++); } dialog::lastItem().color = linf[l].color; @@ -217,13 +217,13 @@ EX void ge_land_selection() { })); }); } - dialog::addItem(XLAT("next page"), '-'); - dialog::addInfo(XLAT("press letters to search")); + dialog::end_list(); dialog::addBreak(25); validity_info(); dialog::addBreak(25); + dialog::addInfo(XLAT("press letters to search")); dual::add_choice(); dialog::addBack(); dialog::display(); @@ -231,11 +231,7 @@ EX void ge_land_selection() { keyhandler = [] (int sym, int uni) { dialog::handleNavigation(sym, uni); - if(uni == '-' || uni == PSEUDOKEY_WHEELUP || uni == PSEUDOKEY_WHEELDOWN) { - eupage++; - if(eupage * euperpage >= isize(landlist)) eupage = 0; - } - else if(dialog::editInfix(uni)) eupage = 0; + if(dialog::editInfix(uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/mapeditor.cpp b/mapeditor.cpp index f27ea924..d4716210 100644 --- a/mapeditor.cpp +++ b/mapeditor.cpp @@ -1734,12 +1734,13 @@ EX namespace mapeditor { dialog::end_list(); dialog::addBreak(50); + dialog::addInfo(XLAT("press letters to search")); dialog::addBack(); dialog::display(); keyhandler = [] (int sym, int uni) { dialog::handleNavigation(sym, uni); - if(dialog::editInfix(uni)) ; + if(dialog::editInfix(uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/menus.cpp b/menus.cpp index 9a1961fb..4b2b17dc 100644 --- a/menus.cpp +++ b/menus.cpp @@ -201,8 +201,7 @@ EX void showOverview() { "Cheaters can click to move between lands, and use the " "mousewheel to gain or lose treasures and orbs quickly (Ctrl = precise, Shift = reverse)." ); - else if(dialog::handlePageButtons(uni)) ; - else if(dialog::editInfix(uni)) ; + else if(dialog::editInfix(uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/scores.cpp b/scores.cpp index d4063b90..74d551ff 100644 --- a/scores.cpp +++ b/scores.cpp @@ -157,7 +157,7 @@ void showPickScores() { mouseovers = dialog::infix; keyhandler = [] (int sym, int uni) { dialog::handleNavigation(sym, uni); - if(dialog::editInfix(uni)) ; + if(dialog::editInfix(uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/yendor.cpp b/yendor.cpp index 31e74cb3..b8902248 100644 --- a/yendor.cpp +++ b/yendor.cpp @@ -941,8 +941,7 @@ EX namespace tactic { "Good luck, and have fun!" ); - else if(dialog::infix == "" && dialog::handlePageButtons(uni)) ; - else if(dialog::editInfix(uni)) ; + else if(dialog::editInfix(uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; }