From 5cb7a16edc6ceda7430f1b8c9dedffd6e910090b Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 23 Dec 2023 13:17:33 +0000 Subject: [PATCH] Fix #11618: Don't try to display unavailable zoom levels in sprite aligner. (#11619) --- src/newgrf_debug_gui.cpp | 3 +++ src/settings_table.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index 51df78f6c9..4edac598f0 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -827,6 +827,7 @@ struct SpriteAlignerWindow : Window { { /* On first opening, set initial zoom to current zoom level. */ if (SpriteAlignerWindow::zoom == ZOOM_LVL_END) SpriteAlignerWindow::zoom = _gui_zoom; + SpriteAlignerWindow::zoom = Clamp(SpriteAlignerWindow::zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max); this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_SA_SCROLLBAR); @@ -1073,7 +1074,9 @@ struct SpriteAlignerWindow : Window { this->vscroll->SetCount(_newgrf_debug_sprite_picker.sprites.size()); } + SpriteAlignerWindow::zoom = Clamp(SpriteAlignerWindow::zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max); for (ZoomLevel z = ZOOM_LVL_NORMAL; z < ZOOM_LVL_END; z++) { + this->SetWidgetsDisabledState(z < _settings_client.gui.zoom_min || z > _settings_client.gui.zoom_max, WID_SA_ZOOM + z); this->SetWidgetsLoweredState(SpriteAlignerWindow::zoom == z, WID_SA_ZOOM + z); } } diff --git a/src/settings_table.cpp b/src/settings_table.cpp index e6b95f6890..d4c41b59f7 100644 --- a/src/settings_table.cpp +++ b/src/settings_table.cpp @@ -265,6 +265,7 @@ static void ZoomMinMaxChanged(int32_t) { ConstrainAllViewportsZoom(); GfxClearSpriteCache(); + InvalidateWindowClassesData(WC_SPRITE_ALIGNER); if (AdjustGUIZoom(false)) { ReInitAllWindows(true); }