Port ledger: focus navigation's screen rectangles are ported

client2-013's ScreenRectangle rows described keyboard focus navigation as
missing; it landed with #4638. The overlap, bound and centre tests are in
gamepad::focus_step_strict/focus_step_vague and the border strip is
key_focus::edge, while the three direction enums are gamepad::Button's DPad
values. The onboarding note no longer says the screen is missing either.
This commit is contained in:
MSedgeMC committed 2026-11-02 10:27:07 +00:00
1 parent d928d1cd61
commit 6581029efe
1 file changed
+10 -10
+10 -10
View File
@@ -43,17 +43,17 @@ NarrationThunk skip:other screen-reader narration text; Horizon has no narratio
ScreenNarrationCollector skip:other screen-reader narration collection; Horizon has no narration output
ScreenNarrationCollector.NarrationEntry skip:other screen-reader narration entries; Horizon has no narration output
ScreenNarrationCollector.Output skip:other screen-reader narration output; Horizon has no narration output
ScreenAxis missing minor: keyboard focus moves along the axis (arrow keys, Tab) between widgets; Horizon's menus have no widget focus navigation, Tab only moves between title fields (title.rs tab)
ScreenDirection missing minor: keyboard focus navigation by direction (arrow keys); Horizon's menus have no widget focus navigation
ScreenPosition missing minor: grid position stepping for keyboard focus navigation; not in Horizon's menus
ScreenAxis skip:other an enum for the axis a focus step moves along; Horizon steps with gamepad::Button's direction (gamepad::direction) and Rect bounds
ScreenDirection skip:other the four arrow directions are gamepad::Button's DPad variants, read by gamepad::direction
ScreenPosition skip:other a (column, row) grid position used only by ScreenRectangle.step; Horizon compares rectangles directly
ScreenRectangle.of skip:java builds a rectangle from an axis-ordered index; Horizon uses x and y directly
ScreenRectangle.step missing minor: moves a rectangle one step for keyboard focus navigation; not in Horizon's menus
ScreenRectangle.step port crates/horizon-client/src/game/key_focus.rs::edge the strip one pixel past the focused edge that an arrow starts its search from
ScreenRectangle.getLength skip:java width or height accessor
ScreenRectangle.getBoundInDirection missing minor: edge coordinate for keyboard focus navigation; not in Horizon's menus
ScreenRectangle.getBorder missing minor: border strip used by keyboard focus navigation to find the next widget; not in Horizon's menus
ScreenRectangle.overlaps missing minor: overlap test used by keyboard focus navigation; not in Horizon's menus
ScreenRectangle.overlapsInAxis missing minor: per-axis overlap used by keyboard focus navigation; not in Horizon's menus
ScreenRectangle.getCenterInAxis missing minor: centre along one axis for keyboard focus navigation; not in Horizon's menus
ScreenRectangle.getBoundInDirection inline crates/horizon-client-input/src/gamepad.rs::focus_step_strict the focused edge, at x + w - 1 on the positive side, as ScreenRectangle's inclusive bounds
ScreenRectangle.getBorder port crates/horizon-client/src/game/key_focus.rs::edge the border rectangle of the screen behind the arrow, used when nothing is focused
ScreenRectangle.overlaps inline crates/horizon-client-input/src/gamepad.rs::focus_step_strict a target overlapping the strip on the other axis is the next one
ScreenRectangle.overlapsInAxis inline crates/horizon-client-input/src/gamepad.rs::focus_step_strict the per-axis half of the overlap test
ScreenRectangle.getCenterInAxis inline crates/horizon-client-input/src/gamepad.rs::focus_step_vague the second pass picks the nearest facing edge's centre when nothing overlaps
ScreenRectangle.intersection missing minor: a nested GUI clip is not intersected with the outer one; paint (screen_draw.rs) replaces the clip on each Scissor draw
ScreenRectangle.intersects skip:other no caller in the 26.3 client GUI code; pure geometry predicate
ScreenRectangle.encompasses skip:other used by GuiRenderState for element batching bounds; Horizon appends quads to the HUD batch without it
@@ -95,7 +95,7 @@ PictureInPictureRenderer.blitTexture skip:other picture-in-picture texture blit
PictureInPictureRenderer.prepareTexturesAndProjection skip:other GPU texture allocation for a picture-in-picture
PictureInPictureRenderer.close skip:other GPU texture release
AccessibilityOnboardingScreen.init port crates/horizon-client/src/title/onboarding.rs::Title::onboarding_buttons gap: minor: the Narrator button stays inactive and reads Not Available (no narrator output)
AccessibilityOnboardingScreen.setInitialFocus missing minor: keyboard focus starts on the narrator button; part of the missing onboarding screen
AccessibilityOnboardingScreen.setInitialFocus missing minor: the onboarding screen itself is ported (title/onboarding.rs); the focus starting on the Narrator button is not
AccessibilityOnboardingScreen.closeAndSetScreen port crates/horizon-client/src/title.rs::Title::click_action
AccessibilityOnboardingScreen.extractRenderState port crates/horizon-client/src/title/onboarding.rs::Title::draw_onboarding
AccessibilityOnboardingScreen.handleInitialNarrationDelay skip:other screen-reader narration; Horizon has no narration output
1 BitmapProvider.ImageDataHolder.gpuData skip:other GPU staging buffer for a sheet; Horizon copies the sheet pixels into its atlas at load (font.rs load_bitmap)
43 ScreenNarrationCollector skip:other screen-reader narration collection; Horizon has no narration output
44 ScreenNarrationCollector.NarrationEntry skip:other screen-reader narration entries; Horizon has no narration output
45 ScreenNarrationCollector.Output skip:other screen-reader narration output; Horizon has no narration output
46 ScreenAxis missing skip:other minor: keyboard focus moves along the axis (arrow keys, Tab) between widgets; Horizon's menus have no widget focus navigation, Tab only moves between title fields (title.rs tab) an enum for the axis a focus step moves along; Horizon steps with gamepad::Button's direction (gamepad::direction) and Rect bounds
47 ScreenDirection missing skip:other minor: keyboard focus navigation by direction (arrow keys); Horizon's menus have no widget focus navigation the four arrow directions are gamepad::Button's DPad variants, read by gamepad::direction
48 ScreenPosition missing skip:other minor: grid position stepping for keyboard focus navigation; not in Horizon's menus a (column, row) grid position used only by ScreenRectangle.step; Horizon compares rectangles directly
49 ScreenRectangle.of skip:java builds a rectangle from an axis-ordered index; Horizon uses x and y directly
50 ScreenRectangle.step missing port crates/horizon-client/src/game/key_focus.rs::edge minor: moves a rectangle one step for keyboard focus navigation; not in Horizon's menus the strip one pixel past the focused edge that an arrow starts its search from
51 ScreenRectangle.getLength skip:java width or height accessor
52 ScreenRectangle.getBoundInDirection missing inline crates/horizon-client-input/src/gamepad.rs::focus_step_strict minor: edge coordinate for keyboard focus navigation; not in Horizon's menus the focused edge, at x + w - 1 on the positive side, as ScreenRectangle's inclusive bounds
53 ScreenRectangle.getBorder missing port crates/horizon-client/src/game/key_focus.rs::edge minor: border strip used by keyboard focus navigation to find the next widget; not in Horizon's menus the border rectangle of the screen behind the arrow, used when nothing is focused
54 ScreenRectangle.overlaps missing inline crates/horizon-client-input/src/gamepad.rs::focus_step_strict minor: overlap test used by keyboard focus navigation; not in Horizon's menus a target overlapping the strip on the other axis is the next one
55 ScreenRectangle.overlapsInAxis missing inline crates/horizon-client-input/src/gamepad.rs::focus_step_strict minor: per-axis overlap used by keyboard focus navigation; not in Horizon's menus the per-axis half of the overlap test
56 ScreenRectangle.getCenterInAxis missing inline crates/horizon-client-input/src/gamepad.rs::focus_step_vague minor: centre along one axis for keyboard focus navigation; not in Horizon's menus the second pass picks the nearest facing edge's centre when nothing overlaps
57 ScreenRectangle.intersection missing minor: a nested GUI clip is not intersected with the outer one; paint (screen_draw.rs) replaces the clip on each Scissor draw
58 ScreenRectangle.intersects skip:other no caller in the 26.3 client GUI code; pure geometry predicate
59 ScreenRectangle.encompasses skip:other used by GuiRenderState for element batching bounds; Horizon appends quads to the HUD batch without it
95 PictureInPictureRenderer.prepareTexturesAndProjection skip:other GPU texture allocation for a picture-in-picture
96 PictureInPictureRenderer.close skip:other GPU texture release
97 AccessibilityOnboardingScreen.init port crates/horizon-client/src/title/onboarding.rs::Title::onboarding_buttons gap: minor: the Narrator button stays inactive and reads Not Available (no narrator output)
98 AccessibilityOnboardingScreen.setInitialFocus missing minor: keyboard focus starts on the narrator button; part of the missing onboarding screen minor: the onboarding screen itself is ported (title/onboarding.rs); the focus starting on the Narrator button is not
99 AccessibilityOnboardingScreen.closeAndSetScreen port crates/horizon-client/src/title.rs::Title::click_action
100 AccessibilityOnboardingScreen.extractRenderState port crates/horizon-client/src/title/onboarding.rs::Title::draw_onboarding
101 AccessibilityOnboardingScreen.handleInitialNarrationDelay skip:other screen-reader narration; Horizon has no narration output