From fb5675ef1bbe34a13f5e77f5d2d092366ac9336c Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Sun, 15 Jan 2023 20:41:48 -0800 Subject: [PATCH] keep windows on the screen when the DF window is resized --- library/lua/gui/widgets.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/library/lua/gui/widgets.lua b/library/lua/gui/widgets.lua index 73de5ad4d..f56eff096 100644 --- a/library/lua/gui/widgets.lua +++ b/library/lua/gui/widgets.lua @@ -456,6 +456,20 @@ end function Panel:computeFrame(parent_rect) local sw, sh = parent_rect.width, parent_rect.height + if self.frame then + if self.frame.t and self.frame.h and self.frame.t + self.frame.h > sh then + self.frame.t = math.max(0, sh - self.frame.h) + end + if self.frame.b and self.frame.h and self.frame.b + self.frame.h > sh then + self.frame.b = math.max(0, sh - self.frame.h) + end + if self.frame.l and self.frame.w and self.frame.l + self.frame.w > sw then + self.frame.l = math.max(0, sw - self.frame.w) + end + if self.frame.r and self.frame.w and self.frame.r + self.frame.w > sw then + self.frame.r = math.max(0, sw - self.frame.w) + end + end return gui.compute_frame_body(sw, sh, self.frame, self.frame_inset, self.frame_style and 1 or 0) end