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