@@ -37,6 +37,9 @@ public partial class FileExplorerTreeView : UserControl
37
37
private TreeNode currentTreeNode ;
38
38
private TreeViewItem currentTreeViewItem ;
39
39
40
+ private TreeNode potentialCurrentTreeNode ;
41
+ private TreeViewItem potentialCurrentTreeViewItem ;
42
+
40
43
public string Filter { get ; set ; }
41
44
42
45
public FileExplorerTreeView ( )
@@ -48,12 +51,18 @@ private void TreeViewMain_MouseDoubleClick(object sender, MouseButtonEventArgs e
48
51
{
49
52
if ( e . ChangedButton == MouseButton . Left )
50
53
{
51
- ISettingsRepository settingsRepository = new SettingsRepository ( ) ;
54
+ var doubleClickedTreeViewItem = VisualUpwardSearchTreeViewItem ( e . OriginalSource as DependencyObject ) ;
55
+ var doubleClickedTreeNode = doubleClickedTreeViewItem . DataContext as TreeNode ;
52
56
53
- if ( settingsRepository . ScriptFileDoubleClickBehaviour == ScriptFileDoubleClickBehaviour . OpenNewInstance )
54
- mnuOpenNewInstance_Click ( sender , null ) ;
55
- else
56
- mnuEditFile_Click ( sender , null ) ;
57
+ if ( doubleClickedTreeNode . Type == TreeNodeType . File && currentTreeNode . Id . Equals ( doubleClickedTreeNode . Id ) )
58
+ {
59
+ ISettingsRepository settingsRepository = new SettingsRepository ( ) ;
60
+
61
+ if ( settingsRepository . ScriptFileDoubleClickBehaviour == ScriptFileDoubleClickBehaviour . OpenNewInstance )
62
+ mnuOpenNewInstance_Click ( sender , null ) ;
63
+ else
64
+ mnuEditFile_Click ( sender , null ) ;
65
+ }
57
66
}
58
67
59
68
e . Handled = true ;
@@ -72,6 +81,15 @@ private void TreeViewMain_SelectedItemChanged(object sender, RoutedPropertyChang
72
81
73
82
if ( selectedTreeNode != null )
74
83
{
84
+ if ( potentialCurrentTreeNode != null && selectedTreeNode . Id . Equals ( potentialCurrentTreeNode . Id ) )
85
+ {
86
+ currentTreeNode = potentialCurrentTreeNode ;
87
+ currentTreeViewItem = potentialCurrentTreeViewItem ;
88
+
89
+ potentialCurrentTreeNode = null ;
90
+ potentialCurrentTreeViewItem = null ;
91
+ }
92
+
75
93
switch ( selectedTreeNode . Type )
76
94
{
77
95
case TreeNodeType . File :
@@ -111,10 +129,10 @@ private void TreeViewMain_ContextMenuOpening(object sender, ContextMenuEventArgs
111
129
112
130
private void TreeViewMain_PreviewMouseLeftButtonDown ( object sender , MouseButtonEventArgs e )
113
131
{
114
- currentTreeViewItem = VisualUpwardSearchTreeViewItem ( e . OriginalSource as DependencyObject ) ;
132
+ potentialCurrentTreeViewItem = VisualUpwardSearchTreeViewItem ( e . OriginalSource as DependencyObject ) ;
115
133
116
- currentTreeNode = currentTreeViewItem != null ?
117
- currentTreeViewItem . DataContext as TreeNode : null ;
134
+ potentialCurrentTreeNode = potentialCurrentTreeViewItem != null ?
135
+ potentialCurrentTreeViewItem . DataContext as TreeNode : null ;
118
136
119
137
// In case changing focus to a different node while renaming file
120
138
if ( currentTreeNode != null && isEditMode && currentTreeNode . Id != renamingNodeId )
0 commit comments