1    type TextBox
2        subscribe { _, event -> case event of
3            FlagEvent/IsFocused x ->
4                cursor.is_visible = x
5                if not x then
6                    selection = None
7                    let s = display_text.as_string
8                    if text <> s then
9                        text = s
10   
11           is MouseEvent/Button ->
12               if event.action.is_press then
13                   move_cursor event.x false
14   
15           is MouseEvent/Move ->
16               let relative_x = event.x as i32 - event.begin_x as i32
17                                + event.begin_relative_x as i32
18                                |> max 0
19               move_cursor relative_x.as<u32>
20                           is_mouse_move = true
21   
22           else -> () }
23   
24       is_clickable = true
25       is_receive_mouse_move = true
26   
27   endmodule text_box
28   
29   import text_box/TextBox
30