Trait rat_widget::event::HandleEvent

source ·
pub trait HandleEvent<Event, Qualifier, R>
where R: ConsumedEvent,
{ // Required method fn handle(&mut self, event: &Event, qualifier: Qualifier) -> R; }
Expand description

A very broad trait for an event handler for widgets.

As widget types are only short-lived, this trait should be implemented for the state type. Thereby it can modify any state, and it can return an arbitrary result, that fits the widget.

Required Methods§

source

fn handle(&mut self, event: &Event, qualifier: Qualifier) -> R

Handle an event.

  • self - Should be the widget state.

  • event - Event

  • qualifier - Allows specifying/restricting the behaviour of the event-handler.

    This library defines two possible types:

    • FocusKeys - The event-handler does all the interactions for a focused widget. This calls the event-handler for MouseOnly too.
    • MouseOnly - Interactions for a non-focused widget. Mostly only reacting to mouse-events. But might check for hotkeys or the like.

Further ideas:

  • ReadOnly
  • Additional special behaviour like DoubleClick, HotKeyAlt, HotKeyCtrl.
  • Opt-in behaviour like different key-bindings.
  • Configurable key-map.
  • Other context or configuration parameters.

Implementations on Foreign Types§

source§

impl HandleEvent<Event, HotKeyAlt, MenuOutcome> for MenuLineState

source§

fn handle(&mut self, event: &Event, _: HotKeyAlt) -> MenuOutcome

source§

impl HandleEvent<Event, HotKeyCtrl, MenuOutcome> for MenuLineState

source§

fn handle(&mut self, event: &Event, _: HotKeyCtrl) -> MenuOutcome

source§

impl HandleEvent<Event, ConvenientKeys, TextOutcome> for DateInputState

source§

fn handle(&mut self, event: &Event, _keymap: ConvenientKeys) -> TextOutcome

source§

impl HandleEvent<Event, FocusKeys, ButtonOutcome> for ButtonState

source§

fn handle(&mut self, event: &Event, _keymap: FocusKeys) -> ButtonOutcome

source§

impl HandleEvent<Event, FocusKeys, MenuOutcome> for MenuLineState

source§

fn handle(&mut self, event: &Event, _: FocusKeys) -> MenuOutcome

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for DateInputState

source§

fn handle(&mut self, event: &Event, _keymap: FocusKeys) -> TextOutcome

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for TextInputState

source§

fn handle(&mut self, event: &Event, _keymap: FocusKeys) -> TextOutcome

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for MaskedInputState

source§

fn handle(&mut self, event: &Event, _keymap: FocusKeys) -> TextOutcome

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for NumberInputState

source§

fn handle(&mut self, event: &Event, _keymap: FocusKeys) -> TextOutcome

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for TextAreaState

source§

fn handle(&mut self, event: &Event, _keymap: FocusKeys) -> TextOutcome

source§

impl HandleEvent<Event, MouseOnly, ButtonOutcome> for ButtonState

source§

fn handle(&mut self, event: &Event, _keymap: MouseOnly) -> ButtonOutcome

source§

impl HandleEvent<Event, MouseOnly, MenuOutcome> for MenuLineState

source§

fn handle(&mut self, event: &Event, _: MouseOnly) -> MenuOutcome

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for DateInputState

source§

fn handle(&mut self, event: &Event, _keymap: MouseOnly) -> TextOutcome

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for TextInputState

source§

fn handle(&mut self, event: &Event, _keymap: MouseOnly) -> TextOutcome

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for MaskedInputState

source§

fn handle(&mut self, event: &Event, _keymap: MouseOnly) -> TextOutcome

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for NumberInputState

source§

fn handle(&mut self, event: &Event, _keymap: MouseOnly) -> TextOutcome

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for TextAreaState

source§

fn handle(&mut self, event: &Event, _keymap: MouseOnly) -> TextOutcome

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for DateInputState

source§

fn handle(&mut self, event: &Event, _keymap: ReadOnly) -> TextOutcome

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for TextInputState

source§

fn handle(&mut self, event: &Event, _keymap: ReadOnly) -> TextOutcome

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for MaskedInputState

source§

fn handle(&mut self, event: &Event, _keymap: ReadOnly) -> TextOutcome

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for NumberInputState

source§

fn handle(&mut self, event: &Event, _keymap: ReadOnly) -> TextOutcome

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for TextAreaState

source§

fn handle(&mut self, event: &Event, _keymap: ReadOnly) -> TextOutcome

source§

impl<EState, EQualifier> HandleEvent<Event, EQualifier, EditOutcome> for FEditTableState<EState>
where EState: HandleEvent<Event, EQualifier, EditOutcome>,

source§

fn handle(&mut self, event: &Event, qualifier: EQualifier) -> EditOutcome

Implementors§

source§

impl HandleEvent<Event, HotKeyAlt, MenuOutcome> for RMenuLineState

source§

impl HandleEvent<Event, HotKeyCtrl, MenuOutcome> for RMenuLineState

source§

impl HandleEvent<Event, ConvenientKeys, TextOutcome> for RDateInputState

source§

impl HandleEvent<Event, FocusKeys, ButtonOutcome> for RButtonState

source§

impl HandleEvent<Event, FocusKeys, MenuOutcome> for RMenuLineState

source§

impl HandleEvent<Event, FocusKeys, Outcome> for FTableState<CellSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for FTableState<NoSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for FTableState<RowSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for FTableState<RowSetSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for RListState<NoSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for RListState<RowSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for RListState<RowSetSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for MsgDialogState

source§

impl HandleEvent<Event, FocusKeys, Outcome> for RTableState<CellSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for RTableState<NoSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for RTableState<RowSelection>

source§

impl HandleEvent<Event, FocusKeys, Outcome> for RTableState<RowSetSelection>

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for RDateInputState

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for RTextInputState

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for RMaskedInputState

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for RNumberInputState

source§

impl HandleEvent<Event, FocusKeys, TextOutcome> for RTextAreaState

source§

impl HandleEvent<Event, MouseOnly, ButtonOutcome> for RButtonState

source§

impl HandleEvent<Event, MouseOnly, MenuOutcome> for RMenuLineState

source§

impl HandleEvent<Event, MouseOnly, Outcome> for FTableState<CellSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for FTableState<NoSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for FTableState<RowSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for FTableState<RowSetSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for RListState<NoSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for RListState<RowSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for RListState<RowSetSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for RTableState<CellSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for RTableState<NoSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for RTableState<RowSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for RTableState<RowSetSelection>

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for RDateInputState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for RTextInputState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for RMaskedInputState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for RNumberInputState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for RTextAreaState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for RDateInputState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for RTextInputState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for RMaskedInputState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for RNumberInputState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for RTextAreaState

source§

impl<'a> HandleEvent<Event, FocusKeys, Outcome> for Focus<'a>

source§

impl<'a> HandleEvent<Event, MouseOnly, Outcome> for Focus<'a>

source§

impl<EState, EQualifier> HandleEvent<Event, EQualifier, EditOutcome> for REditTableState<EState>
where EState: HandleEvent<Event, EQualifier, EditOutcome>,

source§

impl<R> HandleEvent<Event, FocusKeys, ScrollOutcome<R>> for ViewState
where R: ConsumedEvent,

Handle all events. Text events are only processed if focus is true. Mouse events are processed if they are in range.

source§

impl<R> HandleEvent<Event, MouseOnly, ScrollOutcome<R>> for ViewState
where R: ConsumedEvent,

Handle only mouse-events.

source§

impl<R, S> HandleEvent<Event, FocusKeys, ScrollOutcome<R>> for ViewportState<S>

Handle events if the widget has the focus.

source§

impl<R, S> HandleEvent<Event, MouseOnly, ScrollOutcome<R>> for ViewportState<S>

Handle only mouse-events.

source§

impl<R, WState> HandleEvent<Event, FocusKeys, ScrollOutcome<R>> for ScrolledState<WState>

Handle events or the scrolled widget and forward to the inner widget.

source§

impl<R, WState> HandleEvent<Event, MouseOnly, ScrollOutcome<R>> for ScrolledState<WState>

Handle events for the Scrolled widget and the scrollbars.

source§

impl<Selection> HandleEvent<Event, DoubleClick, DoubleClickOutcome> for FTableState<Selection>

source§

impl<Selection> HandleEvent<Event, DoubleClick, DoubleClickOutcome> for RTableState<Selection>

source§

impl<Selection> HandleEvent<Event, EditKeys, EditOutcome> for FTableState<Selection>
where Selection: TableSelection, FTableState<Selection>: HandleEvent<Event, FocusKeys, Outcome>,

source§

impl<Selection> HandleEvent<Event, EditKeys, EditOutcome> for RTableState<Selection>

source§

impl<WState, Q, R> HandleEvent<Event, Inner<Q>, ScrollOutcome<R>> for ScrolledState<WState>
where WState: ScrollingState + HandleEvent<Event, Q, R>, R: ConsumedEvent,

Forward event-handling to the inner widget.