From b8f0513a72016f2c08b13d7c713039c20046f22b Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Wed, 19 Apr 2023 01:50:36 +0100 Subject: [PATCH] Change: Draw and size video driver info like base set info. This allows very long video driver information strings to wrap instead of making the game options window very wide. --- src/settings_gui.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index a138b45f5a..31a79b8331 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -298,7 +298,6 @@ struct GameOptionsWindow : Window { case WID_GO_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name); break; case WID_GO_BASE_MUSIC_DROPDOWN: SetDParamStr(0, BaseMusic::GetUsedSet()->name); break; case WID_GO_BASE_MUSIC_STATUS: SetDParam(0, BaseMusic::GetUsedSet()->GetNumInvalid()); break; - case WID_GO_VIDEO_DRIVER_INFO: SetDParamStr(0, VideoDriver::GetInstance()->GetInfoString()); break; case WID_GO_REFRESH_RATE_DROPDOWN: SetDParam(0, _settings_client.gui.refresh_rate); break; case WID_GO_RESOLUTION_DROPDOWN: { auto current_resolution = GetCurrentResolutionIndex(); @@ -337,6 +336,11 @@ struct GameOptionsWindow : Window { DrawSliderWidget(r, MIN_INTERFACE_SCALE, MAX_INTERFACE_SCALE, this->gui_scale, _scale_labels); break; + case WID_GO_VIDEO_DRIVER_INFO: + SetDParamStr(0, VideoDriver::GetInstance()->GetInfoString()); + DrawStringMultiLine(r, STR_GAME_OPTIONS_VIDEO_DRIVER_INFO); + break; + case WID_GO_BASE_SFX_VOLUME: DrawSliderWidget(r, 0, INT8_MAX, _settings_client.music.effect_vol, {}); break; @@ -375,6 +379,11 @@ struct GameOptionsWindow : Window { } changed |= wid->UpdateVerticalSize(y); + wid = this->GetWidget(WID_GO_VIDEO_DRIVER_INFO); + SetDParamStr(0, VideoDriver::GetInstance()->GetInfoString()); + y = GetStringHeight(STR_GAME_OPTIONS_VIDEO_DRIVER_INFO, wid->current_x); + changed |= wid->UpdateVerticalSize(y); + if (changed) this->ReInit(0, 0, true); } @@ -732,7 +741,7 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), #endif NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_VIDEO_DRIVER_INFO), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_VIDEO_DRIVER_INFO, STR_NULL), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_VIDEO_DRIVER_INFO), SetMinimalTextLines(1, 0), SetFill(1, 0), EndContainer(), EndContainer(), EndContainer(),