Module: ui.focus
Source: ./ui/focus.reef
Overview
ui/focus.reef - Focus management for UI Part of reef-stdlib UI module
This module handles keyboard focus tracking and navigation. Supports Tab/Shift+Tab traversal and programmatic focus control.
Registration is fixed-capacity (default max_entries = 256). Prefer try_focus_register which returns Result: Ok(true) = new entry, Ok(false) = updated existing tab_index, Err = table full. Legacy focus_register is a thin wrapper that discards the Result (callers that care about overflow should use try_focus_register).
Types
FocusDirection (enum)
Variants:
ForwardBackward
FocusEntry
Fields:
| Name | Type |
|---|---|
id |
widget.WidgetId |
tab_index |
int |
FocusManager
Fields:
| Name | Type |
|---|---|
current_focus |
widget.WidgetId |
entries |
[FocusEntry] |
entry_count |
int |
max_entries |
int |
Functions
fn focus_forward(): FocusDirection
fn focus_backward(): FocusDirection
fn new_focus_manager(): FocusManager
fn focus_current(fm: FocusManager): widget.WidgetId
fn focus_has_focus(fm: FocusManager, id: widget.WidgetId): bool
fn try_focus_register(fm: FocusManager, id: widget.WidgetId, tab_index: int): result.Result[bool, error.Error]
Result-shaped register. Ok(true) = new entry, Ok(false) = updated existing tab_index, Err = fixed table full (max_entries).
fn find_current_index(fm: FocusManager): int
fn focus_next(fm: FocusManager): widget.WidgetId
fn focus_prev(fm: FocusManager): widget.WidgetId
fn focus_handle_key(fm: FocusManager, e: event.KeyEvent): bool
Procedures
proc focus_set(fm: FocusManager, id: widget.WidgetId)
proc focus_clear(fm: FocusManager)
proc focus_register(fm: FocusManager, id: widget.WidgetId, tab_index: int)
Legacy register — discards Result (prefer try_focus_register for overflow).
proc focus_unregister(fm: FocusManager, id: widget.WidgetId)
proc sort_focus_entries(fm: FocusManager)
Simple insertion sort for focus entries
proc focus_move_next(fm: FocusManager)
proc focus_move_prev(fm: FocusManager)
Generated by reefc doc