1 type HistoryItem = 2 | Add position : TextPos 3 | AddStr from : TextPos 4 to : TextPos 5 6 | Remove position : TextPos 7 cursor_pos : TextPos 8 c : Char 9 10 | RemoveStr position : TextPos 11 cursor_pos : TextPos 12 s : String 13 14 begin@ multiline_text_box 15 16 type MultilineTextBox @mut = 17 inherit TextEditControl 18 19 let get_font : String -> Font @auto 20 local mut offset : i32 = 0 21 local offset_controls = List<Control>.new 22 23 var obs is_changed = false 24 var obs text = "" 25 var obs background = Vector3.color "FFFFFF" 26 var obs show_line_numbers = false 27 var is_readonly = false 28 val display_text = Text.new 29 val os_window : OsWindow @auto 30 val history = List<HistoryItem>.new 31 val font = get_font "jetbrains_mono/19" 32 var obs cursor_pos = TextPos.new 33 var obs selection : Option<(TextPos, TextPos)> = None 34 var update_colors : Option<Text * u32 * u32 -> Unit> = None 35 36 is_focusable = true 37