Skip to content

Commit 1e8d3b0

Browse files
committed
Prevent wrong item from being edited
1 parent ae8bdd2 commit 1e8d3b0

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

src/SQLScriptsExplorer.Addin/Controls/FileExplorerTreeView.xaml.cs

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)