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 for item in changed do 35 if item.is_directory && item.actual_path.is_not_empty then 36 restore_order item 37 38 if selected_item.is_some 39 && selected_item.unwrap.actual_path.is_not_empty 40 then 41 self.tree.selected_item = selected_item.unwrap 42 43 for item in changed do 44 if item.actual_path.is_empty then 45 if self.file_item_tab_items.contains item then 46 self.tab_control.close_tab self.file_item_tab_items[item] 47 48 self.changed.clear 49