From fc9afb2d321d90cb57a549e02a8530918982955d Mon Sep 17 00:00:00 2001 From: merni-ns <66267867+merni-ns@users.noreply.github.com> Date: Fri, 14 Jul 2023 17:27:45 +0530 Subject: [PATCH] Fix #11115: Focus the abandon game/exit game windows (#11125) --- src/intro_gui.cpp | 6 ++++-- src/misc_gui.cpp | 8 +++++--- src/textbuf_gui.h | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp index 06be8a8530..2c5acca26d 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -517,7 +517,8 @@ void AskExitGame() STR_QUIT_CAPTION, STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD, nullptr, - AskExitGameCallback + AskExitGameCallback, + true ); } @@ -536,6 +537,7 @@ void AskExitToGameMenu() STR_ABANDON_GAME_CAPTION, (_game_mode != GM_EDITOR) ? STR_ABANDON_GAME_QUERY : STR_ABANDON_SCENARIO_QUERY, nullptr, - AskExitToGameMenuCallback + AskExitToGameMenuCallback, + true ); } diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 032ee8e136..6cfc1876bb 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1218,15 +1218,16 @@ static WindowDesc _query_desc( ); /** - * Show a modal confirmation window with standard 'yes' and 'no' buttons + * Show a confirmation window with standard 'yes' and 'no' buttons * The window is aligned to the centre of its parent. * @param caption string shown as window caption * @param message string that will be shown for the window * @param parent pointer to parent window, if this pointer is nullptr the parent becomes * the main window WC_MAIN_WINDOW * @param callback callback function pointer to set in the window descriptor + * @param focus whether the window should be focussed (by default false) */ -void ShowQuery(StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) +void ShowQuery(StringID caption, StringID message, Window *parent, QueryCallbackProc *callback, bool focus) { if (parent == nullptr) parent = GetMainWindow(); @@ -1240,5 +1241,6 @@ void ShowQuery(StringID caption, StringID message, Window *parent, QueryCallback break; } - new QueryWindow(&_query_desc, caption, message, parent, callback); + QueryWindow *q = new QueryWindow(&_query_desc, caption, message, parent, callback); + if (focus) SetFocusedWindow(q); } diff --git a/src/textbuf_gui.h b/src/textbuf_gui.h index 200d62582b..0284bbd57e 100644 --- a/src/textbuf_gui.h +++ b/src/textbuf_gui.h @@ -29,7 +29,7 @@ DECLARE_ENUM_AS_BIT_SET(QueryStringFlags) typedef void QueryCallbackProc(Window*, bool); void ShowQueryString(StringID str, StringID caption, uint max_len, Window *parent, CharSetFilter afilter, QueryStringFlags flags); -void ShowQuery(StringID caption, StringID message, Window *w, QueryCallbackProc *callback); +void ShowQuery(StringID caption, StringID message, Window *w, QueryCallbackProc *callback, bool focus = false); /** The number of 'characters' on the on-screen keyboard. */ static const uint OSK_KEYBOARD_ENTRIES = 50;