Browse Source

Merge from /branches/3.0:

r5983 Fixed bug that caused MSBuild item metadata values to always be escaped on project creation.
r5998 Fix label edit operation in ExtTreeView (original text was shown behind label edit text box).

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6032 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 16 years ago
parent
commit
817728ea38
  1. 15
      src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs
  2. 11
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs

15
src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs

@ -136,6 +136,8 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -136,6 +136,8 @@ namespace ICSharpCode.SharpDevelop.Gui
#region label editing
string labelEditOldLabel;
public void StartLabelEdit(ExtTreeNode node)
{
if (node == null) {
@ -148,6 +150,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -148,6 +150,10 @@ namespace ICSharpCode.SharpDevelop.Gui
LabelEdit = true;
node.BeforeLabelEdit();
node.BeginEdit();
// remove node's label so that it doesn't get rendered behind the label editing textbox
// (if the user deletes some characters so that the text box shrinks)
labelEditOldLabel = node.Text;
node.Text = "";
}
}
@ -173,10 +179,15 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -173,10 +179,15 @@ namespace ICSharpCode.SharpDevelop.Gui
e.CancelEdit = true;
ExtTreeNode node = e.Node as ExtTreeNode;
if (node != null && e.Label != null) {
node.AfterLabelEdit(e.Label);
if (node != null) {
node.Text = labelEditOldLabel;
labelEditOldLabel = null;
if (e.Label != null) {
node.AfterLabelEdit(e.Label);
}
}
SortParentNodes(e.Node);
SelectedNode = e.Node;
}
private void SortParentNodes(TreeNode treeNode)

11
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs

@ -322,10 +322,13 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates @@ -322,10 +322,13 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
StringParser.Parse(projectItem.Include)
);
foreach (string metadataName in projectItem.MetadataNames) {
newProjectItem.SetEvaluatedMetadata(
StringParser.Parse(metadataName),
StringParser.Parse(projectItem.GetMetadata(metadataName))
);
string metadataValue = projectItem.GetMetadata(metadataName);
// if the input contains any special MSBuild sequences, don't escape the value
// we want to escape only when the special characters are introduced by the StringParser.Parse replacement
if (metadataValue.Contains("$(") || metadataValue.Contains("%"))
newProjectItem.SetMetadata(StringParser.Parse(metadataName), StringParser.Parse(metadataValue));
else
newProjectItem.SetEvaluatedMetadata(StringParser.Parse(metadataName), StringParser.Parse(metadataValue));
}
((IProjectItemListProvider)project).AddProjectItem(newProjectItem);
}

Loading…
Cancel
Save