1use zng_ext_input::mouse::{
9 CTRL_SCROLL_VAR, MOUSE_CLICK_EVENT, MOUSE_HOVERED_EVENT, MOUSE_INPUT_EVENT, MOUSE_MOVE_EVENT, MOUSE_WHEEL_EVENT, MouseClickArgs,
10 MouseHoverArgs, MouseInputArgs, MouseMoveArgs, MouseWheelArgs,
11};
12use zng_wgt::prelude::*;
13
14event_property! {
15 pub fn mouse_move {
17 event: MOUSE_MOVE_EVENT,
18 args: MouseMoveArgs,
19 filter: |args| args.capture_allows(),
20 }
21
22 pub fn mouse_input {
25 event: MOUSE_INPUT_EVENT,
26 args: MouseInputArgs,
27 filter: |args| args.target.contains_enabled(WIDGET.id()) && args.capture_allows(),
28 }
29
30 pub fn disabled_mouse_input {
33 event: MOUSE_INPUT_EVENT,
34 args: MouseInputArgs,
35 filter: |args| args.target.contains_disabled(WIDGET.id()) && args.capture_allows(),
36 }
37
38 pub fn mouse_down {
40 event: MOUSE_INPUT_EVENT,
41 args: MouseInputArgs,
42 filter: |args| args.is_mouse_down() && args.target.contains_enabled(WIDGET.id()) && args.capture_allows(),
43 }
44
45 pub fn mouse_up {
47 event: MOUSE_INPUT_EVENT,
48 args: MouseInputArgs,
49 filter: |args| args.is_mouse_up() && args.target.contains_enabled(WIDGET.id()) && args.capture_allows(),
50 }
51
52 pub fn mouse_any_click {
54 event: MOUSE_CLICK_EVENT,
55 args: MouseClickArgs,
56 filter: |args| args.target.contains_enabled(WIDGET.id()),
57 }
58
59 pub fn disabled_mouse_any_click {
61 event: MOUSE_CLICK_EVENT,
62 args: MouseClickArgs,
63 filter: |args| args.target.contains_disabled(WIDGET.id()),
64 }
65
66 pub fn mouse_any_single_click {
68 event: MOUSE_CLICK_EVENT,
69 args: MouseClickArgs,
70 filter: |args| args.is_single() && args.target.contains_enabled(WIDGET.id()),
71 }
72
73 pub fn mouse_any_double_click {
75 event: MOUSE_CLICK_EVENT,
76 args: MouseClickArgs,
77 filter: |args| args.is_double() && args.target.contains_enabled(WIDGET.id()),
78 }
79
80 pub fn mouse_any_triple_click {
82 event: MOUSE_CLICK_EVENT,
83 args: MouseClickArgs,
84 filter: |args| args.is_triple() && args.target.contains_enabled(WIDGET.id()),
85 }
86
87 pub fn mouse_click {
89 event: MOUSE_CLICK_EVENT,
90 args: MouseClickArgs,
91 filter: |args| args.is_primary() && args.target.contains_enabled(WIDGET.id()),
92 }
93
94 pub fn disabled_mouse_click {
96 event: MOUSE_CLICK_EVENT,
97 args: MouseClickArgs,
98 filter: |args| args.is_primary() && args.target.contains_disabled(WIDGET.id()),
99 }
100
101 pub fn mouse_single_click {
103 event: MOUSE_CLICK_EVENT,
104 args: MouseClickArgs,
105 filter: |args| args.is_primary() && args.is_single() && args.target.contains_enabled(WIDGET.id()),
106 }
107
108 pub fn mouse_double_click {
110 event: MOUSE_CLICK_EVENT,
111 args: MouseClickArgs,
112 filter: |args| args.is_primary() && args.is_double() && args.target.contains_enabled(WIDGET.id()),
113 }
114
115 pub fn mouse_triple_click {
117 event: MOUSE_CLICK_EVENT,
118 args: MouseClickArgs,
119 filter: |args| args.is_primary() && args.is_triple() && args.target.contains_enabled(WIDGET.id()),
120 }
121
122 pub fn mouse_enter {
124 event: MOUSE_HOVERED_EVENT,
125 args: MouseHoverArgs,
126 filter: |args| args.is_mouse_enter_enabled(),
127 }
128
129 pub fn mouse_leave {
131 event: MOUSE_HOVERED_EVENT,
132 args: MouseHoverArgs,
133 filter: |args| args.is_mouse_leave_enabled(),
134 }
135
136 pub fn mouse_hovered {
143 event: MOUSE_HOVERED_EVENT,
144 args: MouseHoverArgs,
145 filter: |args| args.is_enabled(WIDGET.id()) && args.capture_allows(),
146 }
147
148 pub fn disabled_mouse_hovered {
150 event: MOUSE_HOVERED_EVENT,
151 args: MouseHoverArgs,
152 filter: |args| args.is_disabled(WIDGET.id()) && args.capture_allows(),
153 }
154
155 pub fn mouse_wheel {
157 event: MOUSE_WHEEL_EVENT,
158 args: MouseWheelArgs,
159 filter: |args| args.target.contains_enabled(WIDGET.id()),
160 }
161
162 pub fn disabled_mouse_wheel {
164 event: MOUSE_WHEEL_EVENT,
165 args: MouseWheelArgs,
166 filter: |args| args.target.contains_enabled(WIDGET.id()),
167 }
168
169 pub fn mouse_scroll {
172 event: MOUSE_WHEEL_EVENT,
173 args: MouseWheelArgs,
174 filter: |args| args.is_scroll() && args.target.contains_enabled(WIDGET.id()),
175 }
176
177 pub fn mouse_zoom {
180 event: MOUSE_WHEEL_EVENT,
181 args: MouseWheelArgs,
182 filter: |args| args.is_zoom() && args.target.contains_enabled(WIDGET.id()),
183 }
184}
185
186#[property(CONTEXT, default(CTRL_SCROLL_VAR))]
193pub fn ctrl_scroll(child: impl IntoUiNode, ctrl_scroll: impl IntoVar<bool>) -> UiNode {
194 with_context_var(child, CTRL_SCROLL_VAR, ctrl_scroll)
195}