From f4a30329852273d3411354f172b67dc283754245 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Wed, 21 Jun 2023 06:57:10 +0200 Subject: [PATCH] Codechange: move tooltip and query window over to the new StringParameterBackup type --- src/misc_gui.cpp | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 71994c4e14..0880b1c839 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -662,17 +662,14 @@ static WindowDesc _tool_tips_desc( struct TooltipsWindow : public Window { StringID string_id; ///< String to display as tooltip. - byte paramcount; ///< Number of string parameters in #string_id. - uint64 params[8]; ///< The string parameters. + std::vector params; ///< The string parameters. TooltipCloseCondition close_cond; ///< Condition for closing the window. TooltipsWindow(Window *parent, StringID str, uint paramcount, TooltipCloseCondition close_tooltip) : Window(&_tool_tips_desc) { this->parent = parent; this->string_id = str; - assert(paramcount <= lengthof(this->params)); - this->paramcount = paramcount; - if (paramcount > 0) CopyOutDParam(this->params, this->paramcount); + CopyOutDParam(this->params, paramcount); this->close_cond = close_tooltip; this->InitNested(); @@ -703,7 +700,7 @@ struct TooltipsWindow : public Window void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override { /* There is only one widget. */ - for (uint i = 0; i != this->paramcount; i++) SetDParam(i, this->params[i]); + CopyInDParam(this->params); size->width = std::min(GetStringBoundingBox(this->string_id).width, ScaleGUITrad(194)); size->height = GetStringHeight(this->string_id, size->width); @@ -719,9 +716,7 @@ struct TooltipsWindow : public Window GfxFillRect(r, PC_BLACK); GfxFillRect(r.Shrink(WidgetDimensions::scaled.bevel), PC_LIGHT_YELLOW); - for (uint arg = 0; arg < this->paramcount; arg++) { - SetDParam(arg, this->params[arg]); - } + CopyInDParam(this->params); DrawStringMultiLine(r.Shrink(WidgetDimensions::scaled.framerect).Shrink(WidgetDimensions::scaled.fullbevel), this->string_id, TC_BLACK, SA_CENTER); } @@ -1098,14 +1093,14 @@ void ShowQueryString(StringID str, StringID caption, uint maxsize, Window *paren */ struct QueryWindow : public Window { QueryCallbackProc *proc; ///< callback function executed on closing of popup. Window* points to parent, bool is true if 'yes' clicked, false otherwise - uint64 params[10]; ///< local copy of #_global_string_params + std::vector params; ///< local copy of #_global_string_params StringID message; ///< message shown for query window QueryWindow(WindowDesc *desc, StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) : Window(desc) { /* Create a backup of the variadic arguments to strings because it will be * overridden pretty often. We will copy these back for drawing */ - CopyOutDParam(this->params, lengthof(this->params)); + CopyOutDParam(this->params, 10); this->message = message; this->proc = callback; this->parent = parent; @@ -1134,7 +1129,7 @@ struct QueryWindow : public Window { switch (widget) { case WID_Q_CAPTION: case WID_Q_TEXT: - CopyInDParam(this->params, lengthof(this->params)); + CopyInDParam(this->params); break; } }