From 78896895cf23deead6ebffe6bcd615729a833d3a Mon Sep 17 00:00:00 2001 From: alberth Date: Thu, 18 Dec 2014 18:20:59 +0000 Subject: [PATCH] (svn r27085) -Fix: Always return a valid window to the world generation gui code. --- src/genworld_gui.cpp | 3 ++- src/window_gui.h | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index 6ea4b5f62f..603fef90d1 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -837,7 +837,8 @@ static void _ShowGenerateLandscape(GenenerateLandscapeWindowMode mode) if (!GetHeightmapDimensions(_file_to_saveload.name, &x, &y)) return; } - GenerateLandscapeWindow *w = AllocateWindowDescFront((mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc, mode); + WindowDesc *desc = (mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc; + GenerateLandscapeWindow *w = AllocateWindowDescFront(desc, mode, true); if (mode == GLWM_HEIGHTMAP) { w->x = x; diff --git a/src/window_gui.h b/src/window_gui.h index 5391565606..70b80c6824 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -851,12 +851,14 @@ Window *FindWindowFromPt(int x, int y); * @tparam Wcls %Window class to use if the window does not exist. * @param desc The pointer to the WindowDesc to be created * @param window_number the window number of the new window - * @return %Window pointer of the newly created window, or \c NULL. + * @param return_existing If set, also return the window if it already existed. + * @return %Window pointer of the newly created window, or the existing one if \a return_existing is set, or \c NULL. */ template -Wcls *AllocateWindowDescFront(WindowDesc *desc, int window_number) +Wcls *AllocateWindowDescFront(WindowDesc *desc, int window_number, bool return_existing = false) { - if (BringWindowToFrontById(desc->cls, window_number)) return NULL; + Wcls *w = static_cast(BringWindowToFrontById(desc->cls, window_number)); + if (w != NULL) return return_existing ? w : NULL; return new Wcls(desc, window_number); }