1 type Editor 2 def revert self = 3 if not self.app.os_window.is_control_pressed then 4 return 5 6 let changed = 7 let set = Set<FileItem>.new 8 let changed = List<FileItem>.new 9 for item in self.changed do 10 if not set.contains item then 11 set.add item 12 changed.add item 13 14 changed 15 16 let selected_item = self.tree.selected_item.map { _ as FileItem } 17 self.tree.selected_item = None 18 for item in changed do 19 let maybe_parent = item.parent 20 let maybe_actual_parent = item.actual_parent 21 if maybe_parent <> maybe_actual_parent then 22 if maybe_parent ? Some parent then 23 parent.items.remove item 24 25 if maybe_actual_parent ? Some actual_parent then 26 actual_parent.items.add item 27 28 item.parent = maybe_actual_parent 29 30 item.name = item.actual_name 31 path = item.actual_path 32 directory_path = item.actual_directory_path 33 34 if self.file_item_tab_items.contains item then 35 let tab_item = self.file_item_tab_items[item] 36 tab_item.header = item.name 37 38 for item in changed do 39 if item.is_directory && item.actual_path.is_not_empty then 40 restore_order item 41 42 if selected_item.is_some 43 && selected_item.unwrap.actual_path.is_not_empty 44 then 45 self.tree.selected_item = selected_item.unwrap 46 47 for item in changed do 48 if item.actual_path.is_empty then 49 if self.file_item_tab_items.contains item then 50 self.tab_control.close_tab self.file_item_tab_items[item] 51 52 self.changed.clear 53