From a94faabcd0a3966473d20528d99ff5a2fcf5f2d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 31 Mar 2026 14:35:17 -0600 Subject: [PATCH] Correct focus issue with TextEdit boxes --- Common/UI/Root.cpp | 4 ++++ Common/UI/View.h | 3 +++ 2 files changed, 7 insertions(+) diff --git a/Common/UI/Root.cpp b/Common/UI/Root.cpp index 9a0da21e50..0e59c64510 100644 --- a/Common/UI/Root.cpp +++ b/Common/UI/Root.cpp @@ -156,6 +156,10 @@ static void MoveFocus(ViewGroup *root, FocusDirection direction) { return; } + if (!focusedView->CanMoveFocus(direction)) { + return; + } + NeighborResult neigh = root->FindNeighbor(focusedView, direction, NeighborResult()); if (neigh.view) { neigh.view->SetFocus(); diff --git a/Common/UI/View.h b/Common/UI/View.h index d1b4835706..19d7e47fde 100644 --- a/Common/UI/View.h +++ b/Common/UI/View.h @@ -414,6 +414,7 @@ public: virtual bool CanBeFocused() const { return true; } virtual bool SubviewFocused(View *view) { return false; } + virtual bool CanMoveFocus(FocusDirection dir) const { return true; } void SetPopupStyle(bool popupStyle) { popupStyle_ = popupStyle; } @@ -1111,6 +1112,8 @@ public: } void FocusChanged(int focusFlags) override; + + bool CanMoveFocus(FocusDirection dir) const { return dir != FocusDirection::FOCUS_LEFT && dir != FocusDirection::FOCUS_RIGHT; } void GetContentDimensions(const UIContext &dc, float &w, float &h) const override; void Draw(UIContext &dc) override; std::string DescribeText() const override;