From b694269409c526d691f90000a6c4eef956a88d7b Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Wed, 15 Apr 2026 22:08:27 -0500 Subject: [PATCH] Fixed ListBox/Menu not accounting for its border --- lib/cyberarm_engine/ui/elements/list_box.rb | 2 +- lib/cyberarm_engine/ui/elements/menu.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/cyberarm_engine/ui/elements/list_box.rb b/lib/cyberarm_engine/ui/elements/list_box.rb index 03b8cdf..6a02981 100644 --- a/lib/cyberarm_engine/ui/elements/list_box.rb +++ b/lib/cyberarm_engine/ui/elements/list_box.rb @@ -56,7 +56,7 @@ module CyberarmEngine def show_menu @menu.clear do - @menu.style.width = width + @menu.style.width = width - (@menu.styled(:border_thickness_left) + @menu.styled(:border_thickness_right)) @items.each do |item| # prevent already selected item from appearing in list diff --git a/lib/cyberarm_engine/ui/elements/menu.rb b/lib/cyberarm_engine/ui/elements/menu.rb index 09d0d83..072c868 100644 --- a/lib/cyberarm_engine/ui/elements/menu.rb +++ b/lib/cyberarm_engine/ui/elements/menu.rb @@ -11,10 +11,10 @@ module CyberarmEngine # FIXME: properly find scrollable parent, if any. parent_scroll_top = parent&.parent ? parent.parent.scroll_top : 0 - @x = @parent.x - @y = parent_scroll_top + @parent.y + @parent.height + @x = @parent.x + @parent.styled(:border_thickness_left) + @y = parent_scroll_top + @parent.y + @parent.height + @parent.styled(:border_thickness_top) - @y = (parent_scroll_top + @parent.y) - height if @y + height > window.height + @y = (parent_scroll_top + @parent.y + @parent.styled(:border_thickness_top)) - height if @y + height > window.height end def show