Struct Widgets
pub struct Widgets { /* private fields */ }Expand description
The widgets of one screen in focus order, and which one has the keyboard focus.
Implementations§
§impl Widgets
impl Widgets
Adds button after the others; Tab reaches it in that order.
pub fn add_text_field(&mut self, field: TextField) -> WidgetId
pub fn add_text_field(&mut self, field: TextField) -> WidgetId
Adds field after the others; Tab reaches it in that order.
Button id, if it is one.
Button id, to change its label or make it inactive.
pub fn text_field(&self, id: WidgetId) -> Option<&TextField>
pub fn text_field(&self, id: WidgetId) -> Option<&TextField>
Text field id, if it is one.
pub fn text_field_mut(&mut self, id: WidgetId) -> Option<&mut TextField>
pub fn text_field_mut(&mut self, id: WidgetId) -> Option<&mut TextField>
Text field id, to read or set its text.
pub fn set_focus(&mut self, host: &dyn ClientHost, id: Option<WidgetId>)
pub fn set_focus(&mut self, host: &dyn ClientHost, id: Option<WidgetId>)
Gives id the keyboard focus (an inactive widget can’t take it), or clears it.
pub fn draw(
&mut self,
draw: &mut dyn DrawContext,
host: &dyn ClientHost,
mouse: [f32; 2],
) -> Result<(), TextFormError>
pub fn draw( &mut self, draw: &mut dyn DrawContext, host: &dyn ClientHost, mouse: [f32; 2], ) -> Result<(), TextFormError>
Draws every widget, the one under mouse (the screen’s mouse) or with the focus
highlighted, in the order added. Returns a refusal if a label cannot cross the text boundary.
pub fn mouse_pressed(
&mut self,
host: &dyn ClientHost,
at: [f32; 2],
button: i32,
modifiers: u32,
) -> Outcome
pub fn mouse_pressed( &mut self, host: &dyn ClientHost, at: [f32; 2], button: i32, modifiers: u32, ) -> Outcome
A mouse button went down at at (the screen’s mouse): Screen.mouseClicked. Only the
left button clicks widgets (isValidClickButton). The widget under it takes the focus
and a button is pressed (with its click sound), or a field’s cursor goes there, Shift
extending the selection and a double click selecting the word. A left press over no
widget clears the focus and is Ignored.
pub fn mouse_released(&mut self, button: i32) -> Outcome
pub fn mouse_released(&mut self, button: i32) -> Outcome
A mouse button went up: a drag that began on a widget ends.
pub fn mouse_dragged(
&mut self,
host: &dyn ClientHost,
at: [f32; 2],
button: i32,
) -> Outcome
pub fn mouse_dragged( &mut self, host: &dyn ClientHost, at: [f32; 2], button: i32, ) -> Outcome
The pointer moved to at with button held (EditBox.onDrag): the selection of the
focused field the press began on follows it.
pub fn key_pressed(
&mut self,
host: &dyn ClientHost,
key: &str,
modifiers: u32,
) -> Outcome
pub fn key_pressed( &mut self, host: &dyn ClientHost, key: &str, modifiers: u32, ) -> Outcome
A key went down (or repeated), named as screen_key_pressed_pre names it
(key.keyboard.tab). Tab and Shift+Tab move the focus in the order added
(FocusNavigationEvent.TabNavigation, wrapping round); Enter or Space presses the
focused button; the focused field edits with Backspace, Delete, the arrows, Home and End
(Ctrl for a word, Shift to select), Ctrl+A/C/V/X through the clipboard, and answers
Enter with Outcome::Submitted. Escape and other keys are Ignored.
pub fn char_typed(&mut self, host: &dyn ClientHost, c: char) -> Outcome
pub fn char_typed(&mut self, host: &dyn ClientHost, c: char) -> Outcome
A character was typed (screen_char_typed_pre): the focused field takes it
(EditBox.charTyped) when it is one a chat line may hold.