port_map: client2-011's list focus rows are ports

Both rows said Horizon's lists have no keyboard focus. OptionsUi::key walks
the page's focusables with Tab and the arrow keys and, when the widget that
takes the focus is a list row, scrolls it into view four pixels past the edge
it crossed: the neighbour stepping is what getBorderForArrowNavigation
answers and the scrolling is setFocused's. The rows now name that code.
This commit is contained in:
MSedgeMC committed 2026-11-02 17:29:41 +00:00
1 parent 3527331d12
commit 70b60c488d
1 file changed
+2 -2
+2 -2
View File
@@ -53,8 +53,8 @@ ScrollableLayout.setMaxHeight skip:ui sizing only; same screens
ScrollableLayout.arrangeElements skip:ui scrollbar reserve and layout live in each screen's own code (10 px each side in dialog and LAN screens)
ScrollableLayout.Container.refreshChildren skip:ui children are laid out each frame
ScrollableLayout.Container.extractWidgetRenderState skip:ui each screen draws its own clipped list (server links, dialog, LAN)
ScrollableLayout.Container.getBorderForArrowNavigation missing minor: arrow-key focus moves across the list are not ported; Horizon lists have no keyboard focus
ScrollableLayout.Container.setFocused missing minor: focusing a row does not scroll it into view; Horizon lists have no keyboard focus
ScrollableLayout.Container.getBorderForArrowNavigation inline crates/horizon-client-render/src/options_ui.rs::OptionsUi::key the arrow keys step the focus to the neighbour in that direction, across the list's edge too (gamepad::focus_step_rect, or focus_step_strict/vague for up and down), which is the child the border lookup would return
ScrollableLayout.Container.setFocused inline crates/horizon-client-render/src/options_ui.rs::OptionsUi::key Tab and the arrows scroll a list row that took the focus into the visible area, 4 pixels past the edge it crossed, then clamp the list
ScrollableLayout.Container.setX skip:ui positions set by each screen's layout
ScrollableLayout.Container.setY skip:ui positions set by each screen's layout
ScrollableLayout.Container.setScrollAmount inline crates/horizon-client/src/game/server_links.rs::Game::server_links_scroll gap: minor: clamps the server links list only; other scroll areas clamp in their own code
1 MultilineTextField.setCharacterLimit port crates/horizon-client/src/game/books.rs::book_page_box gap: minor: only the book page sets a character limit (PAGE_CHARS); other MultiLineEditBox users are not ported
53 ScrollableLayout.arrangeElements skip:ui scrollbar reserve and layout live in each screen's own code (10 px each side in dialog and LAN screens)
54 ScrollableLayout.Container.refreshChildren skip:ui children are laid out each frame
55 ScrollableLayout.Container.extractWidgetRenderState skip:ui each screen draws its own clipped list (server links, dialog, LAN)
56 ScrollableLayout.Container.getBorderForArrowNavigation missing inline crates/horizon-client-render/src/options_ui.rs::OptionsUi::key minor: arrow-key focus moves across the list are not ported; Horizon lists have no keyboard focus the arrow keys step the focus to the neighbour in that direction, across the list's edge too (gamepad::focus_step_rect, or focus_step_strict/vague for up and down), which is the child the border lookup would return
57 ScrollableLayout.Container.setFocused missing inline crates/horizon-client-render/src/options_ui.rs::OptionsUi::key minor: focusing a row does not scroll it into view; Horizon lists have no keyboard focus Tab and the arrows scroll a list row that took the focus into the visible area, 4 pixels past the edge it crossed, then clamp the list
58 ScrollableLayout.Container.setX skip:ui positions set by each screen's layout
59 ScrollableLayout.Container.setY skip:ui positions set by each screen's layout
60 ScrollableLayout.Container.setScrollAmount inline crates/horizon-client/src/game/server_links.rs::Game::server_links_scroll gap: minor: clamps the server links list only; other scroll areas clamp in their own code