Module Nottui.Focus

type handle

A handle represents a primitive area that can request, receive and lose the focus. A visible UI is made of many handles, of which at most one can be active.

val make : unit -> handle

Create a new handle

val request : handle -> unit

Request the focus

val release : handle -> unit

Release the focus (if the handle has it)

type status

status represents the state in which a handle can be. Externally we care about having or not the focus, which can be queried with the has_focus function. Internally, status also keeps track of conflicts (if multiple handles requested the focus).

val empty : status

A status that has no focus and no conflicts

val status : handle -> status Lwd.t

Get the status of a focus handle. The status is a reactive value: it will evolve over time, as focus is received or lost.

val has_focus : status -> bool

Check if this status corresponds to an active focus

TODO This implements a more general concept of "reactive auction":