From 874fb5535be6f8f204b4747d3f93538bb7a94cc0 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sat, 2 Sep 2023 02:41:26 -0700 Subject: [PATCH] fix spacing around messagebox text when a scrollbar is involved --- docs/changelog.txt | 1 + library/lua/gui/dialogs.lua | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/changelog.txt b/docs/changelog.txt index 51d09b18d..83fbf8c20 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -63,6 +63,7 @@ Template for new versions: - `orders`: prevent import/export overlay from appearing on the create workorder screen - `caravan`: corrected prices for cages that have units inside of them - `tailor`: remove crash caused by clothing items with an invalid ``maker_race`` +- ``dialogs.MessageBox``: fix spacing around scrollable text - `seedwatch`: seedwatch will now ignore (unplantable) tree seeds entirely - `autobutcher`: fix ``ticks`` commandline option incorrectly rejecting positive integers as valid values diff --git a/library/lua/gui/dialogs.lua b/library/lua/gui/dialogs.lua index 1b7858416..499fa6305 100644 --- a/library/lua/gui/dialogs.lua +++ b/library/lua/gui/dialogs.lua @@ -11,7 +11,7 @@ MessageBox.focus_path = 'MessageBox' MessageBox.ATTRS{ frame_style = gui.WINDOW_FRAME, - frame_inset = 1, + frame_inset = {l=1, t=1, b=1, r=0}, -- new attrs on_accept = DEFAULT_NIL, on_cancel = DEFAULT_NIL, @@ -33,13 +33,14 @@ end function MessageBox:getWantedFrameSize() local label = self.subviews.label local width = math.max(self.frame_width or 0, 20, #(self.frame_title or '') + 4) - local text_area_width = label:getTextWidth() - if label.frame_inset then - -- account for scroll icons - text_area_width = text_area_width + (label.frame_inset.l or 0) - text_area_width = text_area_width + (label.frame_inset.r or 0) + local text_area_width = label:getTextWidth() + 1 + local text_height = label:getTextHeight() + local sw, sh = dfhack.screen.getWindowSize() + if text_height > sh - 4 then + -- account for scrollbar + text_area_width = text_area_width + 2 end - return math.max(width, text_area_width), label:getTextHeight() + return math.max(width, text_area_width), text_height end function MessageBox:onRenderFrame(dc,rect)