# HG changeset patch # User PeterN # Date 2021-05-03 15:39:20 # Node ID 892030e765824c688b67fd5116722d2c7567afc1 # Parent bdce16c583e03f216e0e1f4176d366f75bb96956 Fix: Query windows may be partially drawn initially. (#9184) Query window was not marked dirty after being moved on init. It was then marked dirty once the white border flash completed. diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -1162,12 +1162,9 @@ struct QueryWindow : public Window { this->caption = caption; this->message = message; this->proc = callback; + this->parent = parent; this->InitNested(WN_CONFIRM_POPUP_QUERY); - - this->parent = parent; - this->left = parent->left + (parent->width / 2) - (this->width / 2); - this->top = parent->top + (parent->height / 2) - (this->height / 2); } ~QueryWindow() @@ -1175,6 +1172,14 @@ struct QueryWindow : public Window { if (this->proc != nullptr) this->proc(this->parent, false); } + void FindWindowPlacementAndResize(int def_width, int def_height) override + { + /* Position query window over the calling window, ensuring it's within screen bounds. */ + this->left = Clamp(parent->left + (parent->width / 2) - (this->width / 2), 0, _screen.width - this->width); + this->top = Clamp(parent->top + (parent->height / 2) - (this->height / 2), 0, _screen.height - this->height); + this->SetDirty(); + } + void SetStringParameters(int widget) const override { switch (widget) {