1use std::sync::Arc;
2
3use fret_ui::action::{ActionCx, ActivateReason, OnActivate, UiActionHost};
4
5#[inline]
7pub fn on_activate(
8 f: impl Fn(&mut dyn UiActionHost, ActionCx, ActivateReason) + 'static,
9) -> OnActivate {
10 Arc::new(f)
11}
12
13#[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#[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#[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}