Browse Source

Fixed SD2-1633: Designer cannot open forms using FolderBrowserDialog with RootFolder property set

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@5732 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 15 years ago
parent
commit
14b4c930c2
  1. 2
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/ProjectResourceService.cs
  2. 4
      src/Libraries/NRefactory/Project/Src/EnvironmentInformationProvider.cs
  3. 18
      src/Libraries/NRefactory/Project/Src/Visitors/CodeDOMOutputVisitor.cs
  4. 9
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryInformationProvider.cs

2
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/ProjectResourceService.cs

@ -80,7 +80,7 @@ namespace ICSharpCode.FormsDesigner.Services @@ -80,7 +80,7 @@ namespace ICSharpCode.FormsDesigner.Services
}
// Get the (generated) class where the resource is defined.
IClass resourceClass = this.projectContent.GetClass(typeRef.Type.BaseType, 0);
IClass resourceClass = this.projectContent.GetClassByReflectionName(typeRef.Type.BaseType, true);
if (resourceClass == null) {
throw new InvalidOperationException("Could not find class for project resources: '" + typeRef.Type.BaseType + "'.");
}

4
src/Libraries/NRefactory/Project/Src/EnvironmentInformationProvider.cs

@ -11,14 +11,14 @@ namespace ICSharpCode.NRefactory @@ -11,14 +11,14 @@ namespace ICSharpCode.NRefactory
{
public interface IEnvironmentInformationProvider
{
bool HasField(string fullTypeName, int typeParameterCount, string fieldName);
bool HasField(string reflectionTypeName, int typeParameterCount, string fieldName);
}
sealed class DummyEnvironmentInformationProvider : IEnvironmentInformationProvider
{
internal static readonly IEnvironmentInformationProvider Instance = new DummyEnvironmentInformationProvider();
public bool HasField(string fullTypeName, int typeParameterCount, string fieldName)
public bool HasField(string reflectionTypeName, int typeParameterCount, string fieldName)
{
return false;
}

18
src/Libraries/NRefactory/Project/Src/Visitors/CodeDOMOutputVisitor.cs

@ -1533,19 +1533,9 @@ namespace ICSharpCode.NRefactory.Visitors @@ -1533,19 +1533,9 @@ namespace ICSharpCode.NRefactory.Visitors
return continueStmt;
}
bool IsField(string type, int typeParameterCount, string fieldName)
bool IsField(string reflectionTypeName, string fieldName)
{
bool isField = environmentInformationProvider.HasField(type, typeParameterCount, fieldName);
if (!isField) {
int idx = type.LastIndexOf('.');
if (idx >= 0) {
type = type.Substring(0, idx) + "+" + type.Substring(idx + 1);
isField = IsField(type, typeParameterCount, fieldName);
}
}
return isField;
return environmentInformationProvider.HasField(reflectionTypeName, 0, fieldName);
}
bool IsFieldReferenceExpression(MemberReferenceExpression fieldReferenceExpression)
@ -1572,7 +1562,7 @@ namespace ICSharpCode.NRefactory.Visitors @@ -1572,7 +1562,7 @@ namespace ICSharpCode.NRefactory.Visitors
if (fieldReferenceExpression.TargetObject is MemberReferenceExpression) {
if (IsPossibleTypeReference((MemberReferenceExpression)fieldReferenceExpression.TargetObject)) {
CodeTypeReferenceExpression typeRef = ConvertToTypeReference((MemberReferenceExpression)fieldReferenceExpression.TargetObject);
if (IsField(typeRef.Type.BaseType, typeRef.Type.TypeArguments.Count, fieldReferenceExpression.MemberName)) {
if (IsField(typeRef.Type.BaseType, fieldReferenceExpression.MemberName)) {
return new CodeFieldReferenceExpression(typeRef,
fieldReferenceExpression.MemberName);
} else {
@ -1635,7 +1625,7 @@ namespace ICSharpCode.NRefactory.Visitors @@ -1635,7 +1625,7 @@ namespace ICSharpCode.NRefactory.Visitors
}
//field detection for fields\props inherited from base classes
if (currentTypeDeclaration.BaseTypes.Count > 0) {
return IsField(currentTypeDeclaration.BaseTypes[0].Type, currentTypeDeclaration.BaseTypes[0].GenericTypes.Count, identifier);
return environmentInformationProvider.HasField(currentTypeDeclaration.BaseTypes[0].Type, currentTypeDeclaration.BaseTypes[0].GenericTypes.Count, identifier);
}
return false;
}

9
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryInformationProvider.cs

@ -22,9 +22,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -22,9 +22,14 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
_projectContent = projectContent;
}
public bool HasField(string fullTypeName, int typeParameterCount, string fieldName)
public bool HasField(string reflectionTypeName, int typeParameterCount, string fieldName)
{
IClass c = _projectContent.GetClass(fullTypeName, typeParameterCount);
IClass c;
if (typeParameterCount > 0) {
c = _projectContent.GetClass(reflectionTypeName, typeParameterCount);
} else {
c = _projectContent.GetClassByReflectionName(reflectionTypeName, true);
}
if (c == null)
return false;
foreach (IField field in c.DefaultReturnType.GetFields()) {

Loading…
Cancel
Save