@@ -37,6 +37,9 @@ public partial class FileExplorerTreeView : UserControl
3737 private TreeNode currentTreeNode ;
3838 private TreeViewItem currentTreeViewItem ;
3939
40+ private TreeNode potentialCurrentTreeNode ;
41+ private TreeViewItem potentialCurrentTreeViewItem ;
42+
4043 public string Filter { get ; set ; }
4144
4245 public FileExplorerTreeView ( )
@@ -48,12 +51,18 @@ private void TreeViewMain_MouseDoubleClick(object sender, MouseButtonEventArgs e
4851 {
4952 if ( e . ChangedButton == MouseButton . Left )
5053 {
51- ISettingsRepository settingsRepository = new SettingsRepository ( ) ;
54+ var doubleClickedTreeViewItem = VisualUpwardSearchTreeViewItem ( e . OriginalSource as DependencyObject ) ;
55+ var doubleClickedTreeNode = doubleClickedTreeViewItem . DataContext as TreeNode ;
5256
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+ }
5766 }
5867
5968 e . Handled = true ;
@@ -72,6 +81,15 @@ private void TreeViewMain_SelectedItemChanged(object sender, RoutedPropertyChang
7281
7382 if ( selectedTreeNode != null )
7483 {
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+
7593 switch ( selectedTreeNode . Type )
7694 {
7795 case TreeNodeType . File :
@@ -111,10 +129,10 @@ private void TreeViewMain_ContextMenuOpening(object sender, ContextMenuEventArgs
111129
112130 private void TreeViewMain_PreviewMouseLeftButtonDown ( object sender , MouseButtonEventArgs e )
113131 {
114- currentTreeViewItem = VisualUpwardSearchTreeViewItem ( e . OriginalSource as DependencyObject ) ;
132+ potentialCurrentTreeViewItem = VisualUpwardSearchTreeViewItem ( e . OriginalSource as DependencyObject ) ;
115133
116- currentTreeNode = currentTreeViewItem != null ?
117- currentTreeViewItem . DataContext as TreeNode : null ;
134+ potentialCurrentTreeNode = potentialCurrentTreeViewItem != null ?
135+ potentialCurrentTreeViewItem . DataContext as TreeNode : null ;
118136
119137 // In case changing focus to a different node while renaming file
120138 if ( currentTreeNode != null && isEditMode && currentTreeNode . Id != renamingNodeId )
0 commit comments