From ac31bd09084f12027c51b6767bfb809ad1e007eb Mon Sep 17 00:00:00 2001 From: PringlesGang Date: Sat, 21 Sep 2024 22:50:50 +0200 Subject: [PATCH] Fixed backlog entries with long names not being selectable --- src/ui/backlogmenu.cpp | 11 ++++++++--- src/ui/widgets/backlogentry.cpp | 6 ++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/ui/backlogmenu.cpp b/src/ui/backlogmenu.cpp index 1bf241a0..ab54a784 100644 --- a/src/ui/backlogmenu.cpp +++ b/src/ui/backlogmenu.cpp @@ -82,6 +82,12 @@ void BacklogMenu::Hide() { } } +inline bool inVerticalHoverBounds(const Widget& entry) { + return (HoverBounds.Y <= entry.Bounds.Y && + entry.Bounds.Y + entry.Bounds.Height <= + HoverBounds.Y + HoverBounds.Height); +} + void BacklogMenu::Update(float dt) { UpdateInput(); @@ -125,13 +131,12 @@ void BacklogMenu::Update(float dt) { // Handle entry moving out of hover bounds if (CurrentlyFocusedElement && - !HoverBounds.Contains(CurrentlyFocusedElement->Bounds)) { + !inVerticalHoverBounds(*CurrentlyFocusedElement)) { FocusDirection dir = (CurrentlyFocusedElement->Bounds.Y < HoverBounds.Y) ? FDIR_DOWN : FDIR_UP; Widget* newFocusedElement = CurrentlyFocusedElement->GetFocus(dir); - while (newFocusedElement && - !HoverBounds.Contains(newFocusedElement->Bounds)) + while (newFocusedElement && !inVerticalHoverBounds(*newFocusedElement)) newFocusedElement = newFocusedElement->GetFocus(dir); CurrentlyFocusedElement->Hovered = false; diff --git a/src/ui/widgets/backlogentry.cpp b/src/ui/widgets/backlogentry.cpp index c86679b2..61ada161 100644 --- a/src/ui/widgets/backlogentry.cpp +++ b/src/ui/widgets/backlogentry.cpp @@ -69,8 +69,10 @@ void BacklogEntry::UpdateInput() { RectF entryHoverBounds = RectF(HoverBounds.X, Bounds.Y, HoverBounds.Width, Bounds.Height); - Hovered = entryHoverBounds.ContainsPoint(Input::CurMousePos) && - HoverBounds.Contains(Bounds); + Hovered = + entryHoverBounds.ContainsPoint(Input::CurMousePos) && + HoverBounds.Y <= Bounds.Y && + (Bounds.Y + Bounds.Height) <= (HoverBounds.Y + HoverBounds.Height); } if (HasFocus && ((Hovered &&