zng_wgt_access/
events.rs

1use zng_app::access::*;
2use zng_view_api::access::AccessCmdName;
3use zng_wgt::prelude::*;
4
5event_property! {
6    /// Access requested a click.
7    ///
8    /// Note that the normal click event is already triggered by this event.
9    pub fn access_click {
10        event: ACCESS_CLICK_EVENT,
11        args: AccessClickArgs,
12        with: access_click,
13    }
14
15    /// Access requested to expand or collapse the widget content.
16    pub fn access_expander {
17        event: ACCESS_EXPANDER_EVENT,
18        args: AccessExpanderArgs,
19        with: access_expander,
20    }
21
22    /// Access requested to increment or decrement the widget value by steps.
23    pub fn access_increment {
24        event: ACCESS_INCREMENT_EVENT,
25        args: AccessIncrementArgs,
26        with: access_increment,
27    }
28
29    /// Access requested to show or hide the widget's tooltip.
30    ///
31    /// Note that the tooltip property already handles this event.
32    pub fn access_tooltip {
33        event: ACCESS_TOOLTIP_EVENT,
34        args: AccessToolTipArgs,
35        with: access_tooltip,
36    }
37
38    /// Access requested a scroll command.
39    ///
40    /// Note that the scroll widget already handles this event.
41    pub fn access_scroll {
42        event: ACCESS_SCROLL_EVENT,
43        args: AccessScrollArgs,
44        with: access_scroll,
45    }
46
47    /// Access requested a text input/replace.
48    ///
49    /// Note that the text widget already handles this event.
50    pub fn access_text {
51        event: ACCESS_TEXT_EVENT,
52        args: AccessTextArgs,
53        with: access_text,
54    }
55
56    /// Access requested a number input.
57    pub fn access_number {
58        event: ACCESS_NUMBER_EVENT,
59        args: AccessNumberArgs,
60        with: access_number,
61    }
62
63    /// Access requested a text selection.
64    ///
65    /// Note that the text widget already handles this event.
66    pub fn access_selection {
67        event: ACCESS_SELECTION_EVENT,
68        args: AccessSelectionArgs,
69        with: access_selection,
70    }
71}
72
73fn access_click(child: impl UiNode, _: bool) -> impl UiNode {
74    access_capable(child, AccessCmdName::Click)
75}
76
77fn access_expander(child: impl UiNode, _: bool) -> impl UiNode {
78    access_capable(child, AccessCmdName::SetExpanded)
79}
80
81fn access_increment(child: impl UiNode, _: bool) -> impl UiNode {
82    access_capable(child, AccessCmdName::Increment)
83}
84
85fn access_tooltip(child: impl UiNode, _: bool) -> impl UiNode {
86    access_capable(child, AccessCmdName::SetToolTipVis)
87}
88
89fn access_scroll(child: impl UiNode, _: bool) -> impl UiNode {
90    access_capable(child, AccessCmdName::Scroll)
91}
92
93fn access_text(child: impl UiNode, _: bool) -> impl UiNode {
94    match_node(child, move |_, op| {
95        if let UiNodeOp::Info { info } = op {
96            if let Some(mut access) = info.access() {
97                access.push_command(AccessCmdName::SetString);
98                access.push_command(AccessCmdName::ReplaceSelectedText);
99            }
100        }
101    })
102}
103
104fn access_number(child: impl UiNode, _: bool) -> impl UiNode {
105    access_capable(child, AccessCmdName::SetNumber)
106}
107
108fn access_selection(child: impl UiNode, _: bool) -> impl UiNode {
109    access_capable(child, AccessCmdName::SelectText)
110}
111
112fn access_capable(child: impl UiNode, cmd: AccessCmdName) -> impl UiNode {
113    match_node(child, move |_, op| {
114        if let UiNodeOp::Info { info } = op {
115            if let Some(mut access) = info.access() {
116                access.push_command(cmd)
117            }
118        }
119    })
120}