From 76ce3e4860ada1027dd11fac0ed84594ac76bf71 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 11 Dec 2010 20:38:37 +0000 Subject: [PATCH] (svn r21472) -Fix [FS#4298] (r21459-ish): make sure the query window is only opened once per parent window / callback. --- src/misc_gui.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 8873625718..ef485c7be9 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1483,7 +1483,6 @@ struct QueryWindow : public Window { this->InitNested(desc); - if (parent == NULL) parent = FindWindowById(WC_MAIN_WINDOW, 0); this->parent = parent; this->left = parent->left + (parent->width / 2) - (this->width / 2); this->top = parent->top + (parent->height / 2) - (this->height / 2); @@ -1599,5 +1598,18 @@ static const WindowDesc _query_desc( */ void ShowQuery(StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) { + if (parent == NULL) parent = FindWindowById(WC_MAIN_WINDOW, 0); + + const Window *w; + FOR_ALL_WINDOWS_FROM_BACK(w) { + if (w->window_class != WC_CONFIRM_POPUP_QUERY) continue; + + const QueryWindow *qw = (const QueryWindow *)w; + if (qw->parent != parent || qw->proc != callback) continue; + + delete qw; + break; + } + new QueryWindow(&_query_desc, caption, message, parent, callback); }