Skip to main content

fret_ui_kit/
activate.rs

1use std::sync::Arc;
2
3use fret_ui::action::{ActionCx, ActivateReason, OnActivate, UiActionHost};
4
5/// Build an `OnActivate` handler from a closure.
6#[inline]
7pub fn on_activate(
8    f: impl Fn(&mut dyn UiActionHost, ActionCx, ActivateReason) + 'static,
9) -> OnActivate {
10    Arc::new(f)
11}
12
13/// Build an `OnActivate` handler that requests a redraw after the mutation.
14#[inline]
15pub fn on_activate_request_redraw(f: impl Fn(&mut dyn UiActionHost) + 'static) -> OnActivate {
16    Arc::new(move |host, action_cx, _reason| {
17        f(host);
18        host.request_redraw(action_cx.window);
19    })
20}
21
22/// Build an `OnActivate` handler that notifies after the mutation.
23#[inline]
24pub fn on_activate_notify(f: impl Fn(&mut dyn UiActionHost) + 'static) -> OnActivate {
25    Arc::new(move |host, action_cx, _reason| {
26        f(host);
27        host.notify(action_cx);
28    })
29}
30
31/// Build an `OnActivate` handler that requests a redraw and notifies after the mutation.
32#[inline]
33pub fn on_activate_request_redraw_notify(
34    f: impl Fn(&mut dyn UiActionHost) + 'static,
35) -> OnActivate {
36    Arc::new(move |host, action_cx, _reason| {
37        f(host);
38        host.request_redraw(action_cx.window);
39        host.notify(action_cx);
40    })
41}