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