diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
index f06ff92e3d..acd742041b 100644
--- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
@@ -115,7 +115,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
#region Label edit
- protected bool canLabelEdit = true;
+ protected bool canLabelEdit = false;
public virtual bool CanLabelEdit {
get {
return canLabelEdit;
diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs
index ff1d2427cc..c810653a2e 100644
--- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs
+++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs
@@ -139,21 +139,24 @@ namespace ICSharpCode.SharpDevelop.Gui
if (node == null) {
return;
}
- node.EnsureVisible();
- SelectedNode = node;
- LabelEdit = true;
- node.BeforeLabelEdit();
- node.BeginEdit();
+
+ if (node.CanLabelEdit) {
+ node.EnsureVisible();
+ SelectedNode = node;
+ LabelEdit = true;
+ node.BeforeLabelEdit();
+ node.BeginEdit();
+ }
}
- protected override bool ProcessDialogKey(Keys keyData)
+ protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData) {
case Keys.F2:
StartLabelEdit(SelectedNode as ExtTreeNode);
break;
}
- return base.ProcessDialogKey(keyData);
+ return base.ProcessCmdKey(ref msg, keyData);
}
protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e)
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs
index 47291e495a..8cfd9b8576 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs
@@ -30,17 +30,6 @@ namespace ICSharpCode.SharpDevelop.Project
string toolbarAddinTreePath = null;
protected bool autoClearNodes = true;
- protected bool canLabelEdited = true;
-
- ///
- /// True, if this node can be label edited, false otherwise.
- ///
- public bool CanLabelEdited {
- get {
- return canLabelEdited;
- }
- }
-
public virtual string ToolbarAddinTreePath {
get {
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
index e89e5c2eb9..4a91024f72 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
@@ -244,11 +244,13 @@ namespace ICSharpCode.SharpDevelop.Project
{
sortOrder = 1;
SetIcon();
+ canLabelEdit = true;
}
public DirectoryNode(string directory) : this(directory, FileNodeStatus.None)
{
sortOrder = 1;
+ canLabelEdit = true;
}
CustomNode removeMe = null;
public DirectoryNode(string directory, FileNodeStatus fileNodeStatus)
@@ -262,6 +264,7 @@ namespace ICSharpCode.SharpDevelop.Project
removeMe.AddTo(this);
SetIcon();
+ canLabelEdit = true;
}
///
@@ -482,6 +485,9 @@ namespace ICSharpCode.SharpDevelop.Project
if (!FileService.CheckDirectoryName(newName)) {
return;
}
+ if (String.Compare(Text, newName, true) == 0) {
+ return;
+ }
string oldText = Text;
Text = newName;
if (Directory != null) {
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs
index af2a0013a1..a05641e275 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs
@@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Project
string fileName = String.Empty;
FileNodeStatus fileNodeStatus = FileNodeStatus.None;
ProjectItem projectItem = null;
-
+
public override bool Visible {
get {
return ShowAll || fileNodeStatus != FileNodeStatus.None;
@@ -112,11 +112,13 @@ namespace ICSharpCode.SharpDevelop.Project
autoClearNodes = false;
SetIcon();
+ canLabelEdit = true;
}
public FileNode(string fileName) : this (fileName, FileNodeStatus.None)
{
sortOrder = 5;
+ canLabelEdit = true;
}
public override void ActivateItem()
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs
index c691ccf2af..46f55cfa3a 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs
@@ -60,6 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project
public SolutionFolderNode(Solution solution, SolutionFolder folder)
{
sortOrder = 0;
+ canLabelEdit = true;
ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionFolderNode";
this.solution = solution;
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
index c1ea4f88f1..21d4cbf95f 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs
@@ -35,6 +35,7 @@ namespace ICSharpCode.SharpDevelop.Project
public SolutionItemNode(Solution solution, SolutionItem item)
{
sortOrder = 2;
+ canLabelEdit = true;
ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionItemNode";
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs
index 0988727942..783a2483bc 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs
@@ -39,6 +39,7 @@ namespace ICSharpCode.SharpDevelop.Project
this.solution = solution;
Text = "Solution " + solution.Name;
autoClearNodes = false;
+ canLabelEdit = true;
ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode";