makepad_widgets/
hook_widget.rs

1use {
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}