Browse Source

fixed bug in XAML binding: x:ClassModifier was not visible in CC in root element, but x:FieldModifier was.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5486 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 16 years ago
parent
commit
301cb7b6b3
  1. 21
      src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/CodeCompletionTests.cs
  2. 13
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataHelper.cs

21
src/AddIns/BackendBindings/XamlBinding/XamlBinding.Tests/CodeCompletionTests.cs

@ -646,6 +646,27 @@ namespace ICSharpCode.XamlBinding.Tests @@ -646,6 +646,27 @@ namespace ICSharpCode.XamlBinding.Tests
Assert.Contains("ColumnSpan", items);
});
}
[Test]
public void CtrlSpaceTest27()
{
string fileHeader = @"<Window xmlns='clr-namespace:System.Windows;assembly=PresentationFramework'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ";
string fileFooter = @">
</Window>";
TestCtrlSpace(fileHeader, fileFooter, true,
list => {
Assert.AreEqual(0, list.PreselectionLength);
Assert.IsNull(list.SuggestedItem);
Assert.IsTrue(list.Items.Any());
var items = list.Items.Select(item => item.Text).ToArray();
Assert.Contains("x:Class", items);
Assert.Contains("x:Subclass", items);
Assert.Contains("x:ClassModifier", items);
Assert.False(items.Contains("x:FieldModifier"));
});
}
#endregion
#region KeyPress

13
src/AddIns/BackendBindings/XamlBinding/XamlBinding/CompletionDataHelper.cs

@ -51,6 +51,10 @@ namespace ICSharpCode.XamlBinding @@ -51,6 +51,10 @@ namespace ICSharpCode.XamlBinding
"Class", "ClassModifier", "Subclass"
}.AsReadOnly();
public static readonly ReadOnlyCollection<string> ChildOnlyElements = new List<string> {
"FieldModifier"
}.AsReadOnly();
static readonly List<ICompletionItem> emptyList = new List<ICompletionItem>();
/// <summary>
@ -94,6 +98,7 @@ namespace ICSharpCode.XamlBinding @@ -94,6 +98,7 @@ namespace ICSharpCode.XamlBinding
bool inAttributeValue = false;
AttributeValue value = null;
bool isRoot = false;
bool wasAXmlElement = false;
int offsetFromValueStart = -1;
List<AXmlElement> ancestors = new List<AXmlElement>();
@ -120,6 +125,11 @@ namespace ICSharpCode.XamlBinding @@ -120,6 +125,11 @@ namespace ICSharpCode.XamlBinding
if (string.IsNullOrEmpty(xamlNamespacePrefix) && attr.Value == XamlNamespace)
xamlNamespacePrefix = attr.LocalName;
}
if (!wasAXmlElement && item.Parent is AXmlDocument)
isRoot = true;
wasAXmlElement = true;
}
item = item.Parent;
@ -263,7 +273,6 @@ namespace ICSharpCode.XamlBinding @@ -263,7 +273,6 @@ namespace ICSharpCode.XamlBinding
} else {
if (rt == null) {
list.Add(new XamlCompletionItem(xamlPrefix, XamlNamespace, "Uid"));
return list;
} else {
AddAttributes(rt, list, includeEvents);
list.AddRange(GetListOfAttached(context, string.Empty, string.Empty, includeEvents, true));
@ -296,7 +305,7 @@ namespace ICSharpCode.XamlBinding @@ -296,7 +305,7 @@ namespace ICSharpCode.XamlBinding
static bool AllowedInElement(bool inRoot, string item)
{
return inRoot || !RootOnlyElements.Contains(item);
return inRoot ? !ChildOnlyElements.Contains(item) : !RootOnlyElements.Contains(item);
}
public static IEnumerable<ICompletionItem> CreateListForXmlnsCompletion(IProjectContent projectContent)

Loading…
Cancel
Save