diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
index 68796c50f9..5e3a2a3183 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
@@ -42,7 +42,7 @@
- UserControl
+ Form
diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj
index ddc4b09cc5..de4cf410a5 100644
--- a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj
+++ b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.csproj
@@ -45,7 +45,7 @@
- Form
+ UserControl
@@ -76,6 +76,8 @@
ICSharpCode.Core
False
+
+
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 1e06136346..1dea4c4c8a 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -181,7 +181,7 @@
UserControl
- Form
+ UserControl
diff --git a/src/Main/Base/Project/Src/Dom/IClass.cs b/src/Main/Base/Project/Src/Dom/IClass.cs
index 2e22f0a47e..369204844a 100644
--- a/src/Main/Base/Project/Src/Dom/IClass.cs
+++ b/src/Main/Base/Project/Src/Dom/IClass.cs
@@ -62,6 +62,9 @@ namespace ICSharpCode.SharpDevelop.Dom
get;
}
+ /// Gets the class associated with the base type with the same index.
+ IClass GetBaseClass(int index);
+
List InnerClasses {
get;
}
@@ -107,6 +110,6 @@ namespace ICSharpCode.SharpDevelop.Dom
/*
ArrayList GetAccessibleMembers(IClass callingClass, bool showStatic);
- */
+ */
}
}
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs b/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
index d8ebee24fc..6e725c759b 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/DefaultClass.cs
@@ -244,12 +244,17 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
+ public IClass GetBaseClass(int index)
+ {
+ return ProjectContent.SearchType(BaseTypes[index], this, Region != null ? Region.BeginLine : 0, Region != null ? Region.BeginColumn : 0);
+ }
+
public IClass BaseClass {
get {
Debug.Assert(ProjectContent != null);
if (BaseTypes.Count > 0) {
- IClass baseClass = ProjectContent.SearchType(BaseTypes[0], this, Region != null ? Region.BeginLine : 0, Region != null ? Region.BeginColumn : 0);
+ IClass baseClass = GetBaseClass(0);
if (baseClass != null && baseClass.ClassType != ClassType.Interface) {
return baseClass;
}
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 c329b458d3..4ad5cd4abf 100644
--- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs
+++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs
@@ -16,6 +16,9 @@ namespace ICSharpCode.SharpDevelop.Gui
List cutNodes = new List();
bool isSorted = true;
+ ///
+ /// Gets/Sets whether the ExtTreeView does its own sorting.
+ ///
public bool IsSorted {
get {
return isSorted;
@@ -24,18 +27,53 @@ namespace ICSharpCode.SharpDevelop.Gui
isSorted = value;
}
}
+
+ [Obsolete("Use IsSorted instead!")]
+ public new bool Sorted {
+ get {
+ return base.Sorted;
+ }
+ set {
+ base.Sorted = value;
+ }
+ }
+
public List CutNodes {
get {
return cutNodes;
}
}
+ // using TreeView.TreeViewNodeSorter will result in TreeNodeCollection
+ // calling Sort() after every insertion. Therefore, we have to create
+ // our own NodeSorter property.
+
+ IComparer nodeSorter = new ExtTreeViewComparer();
+
+ public IComparer NodeSorter {
+ get {
+ return nodeSorter;
+ }
+ set {
+ nodeSorter = value;
+ }
+ }
+
+ [Obsolete("Use NodeSorter instead!")]
+ public new System.Collections.IComparer TreeViewNodeSorter {
+ get {
+ return base.TreeViewNodeSorter;
+ }
+ set {
+ base.TreeViewNodeSorter = value;
+ }
+ }
+
public ExtTreeView()
{
DrawMode = TreeViewDrawMode.OwnerDrawText;
HideSelection = false;
AllowDrop = true;
- this.TreeViewNodeSorter = new ExtTreeViewComparer();
ImageList newImageList = new ImageList();
newImageList.ImageSize = new Size(16, 16);
newImageList.ColorDepth = ColorDepth.Depth32Bit;
@@ -55,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
TreeNode[] nodeArray = new TreeNode[node.Nodes.Count];
node.Nodes.CopyTo(nodeArray, 0);
- Array.Sort(nodeArray, TreeViewNodeSorter);
+ Array.Sort(nodeArray, nodeSorter);
node.Nodes.Clear();
node.Nodes.AddRange(nodeArray);
diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeViewComparer.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeViewComparer.cs
index fe8df92746..453f46cc1c 100644
--- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeViewComparer.cs
+++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeViewComparer.cs
@@ -1,13 +1,13 @@
using System;
using System.Diagnostics;
-using System.Collections;
+using System.Collections.Generic;
using System.Windows.Forms;
namespace ICSharpCode.SharpDevelop.Gui
{
- public class ExtTreeViewComparer : IComparer
+ public class ExtTreeViewComparer : IComparer
{
- public int Compare(object x, object y)
+ public int Compare(TreeNode x, TreeNode y)
{
Debug.Assert(x != null);
Debug.Assert(y != null);
@@ -15,7 +15,7 @@ namespace ICSharpCode.SharpDevelop.Gui
ExtTreeNode node2 = y as ExtTreeNode;
if (node1 == null || node2 == null) {
- return ((TreeNode)x).Text.CompareTo(((TreeNode)y).Text);
+ return x.Text.CompareTo(y.Text);
}
if (node1.SortOrder != node2.SortOrder) {
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs
index 312af4bcad..af4487fa22 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs
@@ -227,12 +227,16 @@ namespace ICSharpCode.SharpDevelop.Gui
return searchTerm;
}
set {
- searchTerm = value.ToUpper();
+ searchTerm = value.ToUpper().Trim();
}
}
public void StartSearch()
{
+ if (searchTerm.Length == 0) {
+ CancelSearch();
+ return;
+ }
if (!inSearchMode) {
foreach (TreeNode node in classBrowserTreeView.Nodes) {
oldNodes.Add(node);
@@ -242,6 +246,7 @@ namespace ICSharpCode.SharpDevelop.Gui
nextNodes.Clear();
UpdateToolbars();
}
+ classBrowserTreeView.BeginUpdate();
classBrowserTreeView.Nodes.Clear();
if (ProjectService.OpenSolution != null) {
foreach (IProject project in ProjectService.OpenSolution.Projects) {
@@ -260,6 +265,7 @@ namespace ICSharpCode.SharpDevelop.Gui
notFoundMsg.Text = "No search results found.";
notFoundMsg.AddTo(classBrowserTreeView);
}
+ classBrowserTreeView.EndUpdate();
}
public void CancelSearch()
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/BaseTypesNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/BaseTypesNode.cs
index 2f4defa1f7..35afd526b7 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/BaseTypesNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/BaseTypesNode.cs
@@ -60,10 +60,11 @@ namespace ICSharpCode.SharpDevelop.Gui
base.Initialize();
Nodes.Clear();
- IProjectContent content = ParserService.GetProjectContent(project);
+ IProjectContent content = c.ProjectContent;
if (content != null) {
- foreach (string baseType in c.BaseTypes) {
- IClass baseClass = content.GetClass(baseType);
+ int count = c.BaseTypes.Count;
+ for (int i = 0; i < count; i++) {
+ IClass baseClass = c.GetBaseClass(i);
if (baseClass != null) {
new ClassNode(project, baseClass).AddTo(this);
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/DerivedTypesNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/DerivedTypesNode.cs
index 72a09b1e4d..8a747f1252 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/DerivedTypesNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/DerivedTypesNode.cs
@@ -60,16 +60,15 @@ namespace ICSharpCode.SharpDevelop.Gui
base.Initialize();
Nodes.Clear();
+ List contentList = new List(1);
+ contentList.Add(null);
if (ProjectService.OpenSolution != null) {
foreach (IProject project in ProjectService.OpenSolution.Projects) {
IProjectContent projectContent = ParserService.GetProjectContent(project);
if (projectContent != null) {
- foreach (IClass possibleDerivedClass in projectContent.Classes) {
- foreach (string baseType in possibleDerivedClass.BaseTypes) {
- if (baseType == this.c.FullyQualifiedName) {
- new ClassNode(project, possibleDerivedClass).AddTo(this);
- }
- }
+ contentList[0] = projectContent;
+ foreach (IClass derivedClass in RefactoringService.FindDerivedClasses(c, contentList)) {
+ new ClassNode(project, derivedClass).AddTo(this);
}
}
}
diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
index 43dd8e03d9..5c499d57ff 100644
--- a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
@@ -33,12 +33,16 @@ namespace ICSharpCode.Core
continue;
}
foreach (IClass c in pc.Classes) {
- if (c.BaseTypes.Count == 0) continue;
- string baseType = c.BaseTypes[0];
- if (pc.Language.NameComparer.Equals(baseType, baseClassName) ||
- pc.Language.NameComparer.Equals(baseType, baseClassFullName)) {
- if (c.BaseClass.FullyQualifiedName == baseClass.FullyQualifiedName) {
- list.Add(c);
+ int count = c.BaseTypes.Count;
+ for (int i = 0; i < count; i++) {
+ string baseType = c.BaseTypes[i];
+ if (pc.Language.NameComparer.Equals(baseType, baseClassName) ||
+ pc.Language.NameComparer.Equals(baseType, baseClassFullName)) {
+ IClass possibleBaseClass = c.GetBaseClass(i);
+ if (possibleBaseClass != null &&
+ possibleBaseClass.FullyQualifiedName == baseClass.FullyQualifiedName) {
+ list.Add(c);
+ }
}
}
}
diff --git a/src/Main/Core/Project/ICSharpCode.Core.csproj b/src/Main/Core/Project/ICSharpCode.Core.csproj
index 1b0cea29a6..973e609c71 100644
--- a/src/Main/Core/Project/ICSharpCode.Core.csproj
+++ b/src/Main/Core/Project/ICSharpCode.Core.csproj
@@ -2,7 +2,7 @@
Debug
AnyCPU
- 8.0.41115
+ 8.0.50215
2.0
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
ICSharpCode.Core
@@ -123,7 +123,9 @@
-
+
+ Form
+
\ No newline at end of file
diff --git a/src/Main/Core/Project/ICSharpCode.Core.csproj.user b/src/Main/Core/Project/ICSharpCode.Core.csproj.user
index 746ae1f782..07c0b3433f 100644
--- a/src/Main/Core/Project/ICSharpCode.Core.csproj.user
+++ b/src/Main/Core/Project/ICSharpCode.Core.csproj.user
@@ -2,7 +2,7 @@
- 8.0.41115
+ 8.0.50215
ShowAllFiles
0
diff --git a/src/Main/StartUp/Project/Dialogs/SplashScreen.cs b/src/Main/StartUp/Project/Dialogs/SplashScreen.cs
index c74d3783d5..97d3b8e51e 100644
--- a/src/Main/StartUp/Project/Dialogs/SplashScreen.cs
+++ b/src/Main/StartUp/Project/Dialogs/SplashScreen.cs
@@ -6,9 +6,11 @@ using System.Reflection;
using System.Resources;
namespace ICSharpCode.SharpDevelop
-{
+{
public class SplashScreenForm : Form
{
+ public const string VersionText = "Corsavy alpha";
+
static SplashScreenForm splashScreen = new SplashScreenForm();
static ArrayList requestedFileList = new ArrayList();
static ArrayList parameterList = new ArrayList();
@@ -18,22 +20,32 @@ namespace ICSharpCode.SharpDevelop
get {
return splashScreen;
}
- }
+ }
public SplashScreenForm()
{
-#if !DEBUG
+ #if !DEBUG
TopMost = true;
-#endif
+ #endif
FormBorderStyle = FormBorderStyle.None;
StartPosition = FormStartPosition.CenterScreen;
ShowInTaskbar = false;
bitmap = new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream("Resources.SplashScreen.jpg"));
Size = bitmap.Size;
+ #if DEBUG
+ string versionText = VersionText + " (debug)";
+ #else
+ string versionText = VersionText;
+ #endif
+ using (Font font = new Font("Vrinda", 4)) {
+ using (Graphics g = Graphics.FromImage(bitmap)) {
+ g.DrawString(versionText, font, Brushes.Black, 116, 142);
+ }
+ }
BackgroundImage = bitmap;
}
- protected override void Dispose(bool disposing)
+ protected override void Dispose(bool disposing)
{
if (disposing) {
if (bitmap != null) {
diff --git a/src/Main/StartUp/Project/Resources/SplashScreen.jpg b/src/Main/StartUp/Project/Resources/SplashScreen.jpg
index 0f2576fe92..7145a3e070 100644
Binary files a/src/Main/StartUp/Project/Resources/SplashScreen.jpg and b/src/Main/StartUp/Project/Resources/SplashScreen.jpg differ