makepad_widgets/
hook_widget.rs1use {
2 crate::{
3 makepad_draw::*,
4 widget::*
5 }
6};
7live_design!{
8 import makepad_draw::shader::std::*;
9
10 HookWidgetBase = {{HookWidget}} {}
11}
12
13#[derive(Live)]
14pub struct HookWidget {
15 #[walk] walk: Walk,
16 #[layout] layout: Layout,
17 #[rust] draw_state: DrawStateWrap<DrawState>,
18}
19
20impl LiveHook for HookWidget{
21 fn before_live_design(cx:&mut Cx){
22 register_widget!(cx,HookWidget)
23 }
24}
25
26#[derive(Clone)]
27enum DrawState {
28 Hook,
29}
30
31impl Widget for HookWidget{
32 fn handle_widget_event_with(
33 &mut self,
34 _cx: &mut Cx,
35 _event: &Event,
36 _dispatch_action: &mut dyn FnMut(&mut Cx, WidgetActionItem)
37 ) {
38 }
39
40 fn walk(&mut self, _cx:&mut Cx)->Walk{
41 self.walk
42 }
43
44 fn redraw(&mut self, _cx:&mut Cx){}
45
46 fn draw_walk_widget(&mut self, cx: &mut Cx2d, _walk: Walk) -> WidgetDraw {
47 if self.draw_state.begin(cx, DrawState::Hook) {
48 return WidgetDraw::hook_above();
49 }
50 WidgetDraw::done()
51 }
52}