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:

  • Forward
  • Backward

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