fix spacing around messagebox text when a scrollbar is involved

develop
Myk Taylor 2023-09-02 02:41:26 -07:00
parent e685e238de
commit 874fb5535b
No known key found for this signature in database
2 changed files with 9 additions and 7 deletions

@ -63,6 +63,7 @@ Template for new versions:
- `orders`: prevent import/export overlay from appearing on the create workorder screen - `orders`: prevent import/export overlay from appearing on the create workorder screen
- `caravan`: corrected prices for cages that have units inside of them - `caravan`: corrected prices for cages that have units inside of them
- `tailor`: remove crash caused by clothing items with an invalid ``maker_race`` - `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 - `seedwatch`: seedwatch will now ignore (unplantable) tree seeds entirely
- `autobutcher`: fix ``ticks`` commandline option incorrectly rejecting positive integers as valid values - `autobutcher`: fix ``ticks`` commandline option incorrectly rejecting positive integers as valid values

@ -11,7 +11,7 @@ MessageBox.focus_path = 'MessageBox'
MessageBox.ATTRS{ MessageBox.ATTRS{
frame_style = gui.WINDOW_FRAME, frame_style = gui.WINDOW_FRAME,
frame_inset = 1, frame_inset = {l=1, t=1, b=1, r=0},
-- new attrs -- new attrs
on_accept = DEFAULT_NIL, on_accept = DEFAULT_NIL,
on_cancel = DEFAULT_NIL, on_cancel = DEFAULT_NIL,
@ -33,13 +33,14 @@ end
function MessageBox:getWantedFrameSize() function MessageBox:getWantedFrameSize()
local label = self.subviews.label local label = self.subviews.label
local width = math.max(self.frame_width or 0, 20, #(self.frame_title or '') + 4) local width = math.max(self.frame_width or 0, 20, #(self.frame_title or '') + 4)
local text_area_width = label:getTextWidth() local text_area_width = label:getTextWidth() + 1
if label.frame_inset then local text_height = label:getTextHeight()
-- account for scroll icons local sw, sh = dfhack.screen.getWindowSize()
text_area_width = text_area_width + (label.frame_inset.l or 0) if text_height > sh - 4 then
text_area_width = text_area_width + (label.frame_inset.r or 0) -- account for scrollbar
text_area_width = text_area_width + 2
end end
return math.max(width, text_area_width), label:getTextHeight() return math.max(width, text_area_width), text_height
end end
function MessageBox:onRenderFrame(dc,rect) function MessageBox:onRenderFrame(dc,rect)