From 477e71c8b21bface0130b7846dc86b10a7b65f1b Mon Sep 17 00:00:00 2001 From: Florian Albrechtskirchinger Date: Wed, 26 Jul 2023 12:34:01 +0200 Subject: [PATCH 1/2] Add GetFullSize() to IngameWindow Returns the full size of the window, even when minimized. --- libs/s25main/ingameWindows/IngameWindow.cpp | 5 +++++ libs/s25main/ingameWindows/IngameWindow.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/libs/s25main/ingameWindows/IngameWindow.cpp b/libs/s25main/ingameWindows/IngameWindow.cpp index e5a5dc3d7f..1e8801cf1f 100644 --- a/libs/s25main/ingameWindows/IngameWindow.cpp +++ b/libs/s25main/ingameWindows/IngameWindow.cpp @@ -112,6 +112,11 @@ Extent IngameWindow::GetIwSize() const return Extent(GetSize().x - contentOffset.x - contentOffsetEnd.x, iwHeight); } +Extent IngameWindow::GetFullSize() const +{ + return Extent(GetSize().x, contentOffset.y + contentOffsetEnd.y + iwHeight); +} + DrawPoint IngameWindow::GetRightBottomBoundary() { return DrawPoint(GetSize() - contentOffsetEnd); diff --git a/libs/s25main/ingameWindows/IngameWindow.h b/libs/s25main/ingameWindows/IngameWindow.h index 9e2c0dccfc..4270211435 100644 --- a/libs/s25main/ingameWindows/IngameWindow.h +++ b/libs/s25main/ingameWindows/IngameWindow.h @@ -68,6 +68,8 @@ class IngameWindow : public Window void SetIwSize(const Extent& newSize); /// Get the size of the (expanded) content area Extent GetIwSize() const; + /// Get the full size of the window, even when minimized + Extent GetFullSize() const; /// Get the current lower right corner of the content area DrawPoint GetRightBottomBoundary(); From f32033532d39b6ec66738669065ab46b8f537e73 Mon Sep 17 00:00:00 2001 From: Florian Albrechtskirchinger Date: Wed, 26 Jul 2023 12:44:00 +0200 Subject: [PATCH 2/2] Fix button placement in minimized in-game windows Some windows position their buttons based on GetSize().y, which results in incorrect placement if the window is persisted and minimized. Replace uses of GetSize() with GetFullSize(). Affected windows: * iwBuildings * iwDistribution * iwWares --- libs/s25main/ingameWindows/iwBuildings.cpp | 6 +++--- libs/s25main/ingameWindows/iwDistribution.cpp | 10 +++++----- libs/s25main/ingameWindows/iwWares.cpp | 12 ++++++------ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/libs/s25main/ingameWindows/iwBuildings.cpp b/libs/s25main/ingameWindows/iwBuildings.cpp index ebf242afc1..91858a868d 100644 --- a/libs/s25main/ingameWindows/iwBuildings.cpp +++ b/libs/s25main/ingameWindows/iwBuildings.cpp @@ -67,10 +67,10 @@ iwBuildings::iwBuildings(GameWorldView& gwv, GameCommandFactory& gcFactory) } } - // Hilfe-Button + // "Help" button Extent btSize = Extent(30, 32); - AddImageButton(32, GetSize() - DrawPoint(14, 20) - btSize, btSize, TextureColor::Grey, LOADER.GetImageN("io", 225), - _("Help")); + AddImageButton(32, GetFullSize() - DrawPoint(14, 20) - btSize, btSize, TextureColor::Grey, + LOADER.GetImageN("io", 225), _("Help")); } /// Anzahlen der Gebäude zeichnen diff --git a/libs/s25main/ingameWindows/iwDistribution.cpp b/libs/s25main/ingameWindows/iwDistribution.cpp index a5a5441862..4daccbaf51 100644 --- a/libs/s25main/ingameWindows/iwDistribution.cpp +++ b/libs/s25main/ingameWindows/iwDistribution.cpp @@ -62,12 +62,12 @@ iwDistribution::iwDistribution(const GameWorldViewer& gwv, GameCommandFactory& g tab->SetSelection(0); const Extent btSize(32, 32); - // Hilfe - AddImageButton(2, DrawPoint(15, GetSize().y - 15 - btSize.y), btSize, TextureColor::Grey, + // "Help" button + AddImageButton(2, DrawPoint(15, GetFullSize().y - 15 - btSize.y), btSize, TextureColor::Grey, LOADER.GetImageN("io", 225), _("Help")); - // Standardbelegung - AddImageButton(10, GetSize() - DrawPoint::all(15) - btSize, btSize, TextureColor::Grey, LOADER.GetImageN("io", 191), - _("Default")); + // "Default" button + AddImageButton(10, GetFullSize() - DrawPoint::all(15) - btSize, btSize, TextureColor::Grey, + LOADER.GetImageN("io", 191), _("Default")); iwDistribution::UpdateSettings(); } diff --git a/libs/s25main/ingameWindows/iwWares.cpp b/libs/s25main/ingameWindows/iwWares.cpp index b81611c017..9019fae511 100644 --- a/libs/s25main/ingameWindows/iwWares.cpp +++ b/libs/s25main/ingameWindows/iwWares.cpp @@ -130,12 +130,12 @@ iwWares::iwWares(unsigned id, const DrawPoint& pos, const Extent& size, const st } } - // "Blättern" - AddImageButton(0, DrawPoint(52, GetSize().y - 47), Extent(66, 32), TextureColor::Grey, LOADER.GetImageN("io", 84), - _("Next page")); - // Hilfe - AddImageButton(12, DrawPoint(16, GetSize().y - 47), Extent(32, 32), TextureColor::Grey, LOADER.GetImageN("io", 225), - _("Help")); + // "Next page" button + AddImageButton(0, DrawPoint(52, GetFullSize().y - 47), Extent(66, 32), TextureColor::Grey, + LOADER.GetImageN("io", 84), _("Next page")); + // "Help" button + AddImageButton(12, DrawPoint(16, GetFullSize().y - 47), Extent(32, 32), TextureColor::Grey, + LOADER.GetImageN("io", 225), _("Help")); waresPage.SetVisible(true); curPage_ = warePageID;