From 3cfb8ffad9aa612ec64a9a25b23ecc1eb77ac69e Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 30 Jan 2005 15:21:27 +0000 Subject: [PATCH] Fixed tooltip flickering and a resolver bug. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@75 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Gui/TextArea.cs | 4 ++- .../NRefactoryResolver/NRefactoryResolver.cs | 2 +- .../Src/Services/Debugger/DebuggerService.cs | 29 ++++++++++++++----- .../CaseSensitiveProjectContent.cs | 2 +- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs index 386242ad55..7936535f3f 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs @@ -299,16 +299,18 @@ namespace ICSharpCode.TextEditor string oldToolTip; public void SetToolTip(string text) { + toolTipSet = (text != null); if (oldToolTip == text) return; ToolTip toolTip = this.toolTip; if (text == null) { + //Console.WriteLine("Tooltip disabled"); toolTip.Hide(this.FindForm()); } else { + //Console.WriteLine("Tooltip set to " + text); Point p = PointToClient(Control.MousePosition); p.Offset(3, 3); toolTip.Show(text, this, p); - toolTipSet = true; } oldToolTip = text; } diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs index 198f5ba22b..6be1e485cb 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs @@ -420,7 +420,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver foreach (IMethod m in curType.Methods) { if (IsSameName(m.Name, memberName) && - m.MustBeShown(callingClass, true, isClassInInheritanceTree) && + m.IsAccessible(callingClass, isClassInInheritanceTree) && !((m.Modifiers & ModifierEnum.Override) == ModifierEnum.Override)) { methods.Add(m); } diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs index e55e631f10..4532836cfd 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs @@ -519,6 +519,9 @@ namespace ICSharpCode.Core } } + static string oldExpression, oldToolTip; + static int oldLine; + /// /// This function shows variable values as tooltips /// @@ -540,16 +543,26 @@ namespace ICSharpCode.Core string textContent = doc.TextContent; string expression = expressionFinder.FindFullExpression(textContent, seg.Offset + xPosition); //Console.WriteLine("MouseMove@" + logicPos + ":" + expression); - if (expression != null && expression != String.Empty) { - // Look if it is variable - //value = selectedThread.LocalVariables[expresion].Value.ToString(); - ResolveResult result = ParserService.Resolve(expression, logicPos.Y + 1, xPosition + 1, textArea.MotherTextEditorControl.FileName, textContent); - string value = GetText(result); - if (value != null) { - value = "expr: >" + expression + "<\n" + value; - textArea.SetToolTip(value); + if (expression != null && expression.Length > 0) { + if (expression == oldExpression && oldLine == logicPos.Y) { + // same expression in same line -> reuse old tooltip + textArea.SetToolTip(oldToolTip); + // SetToolTip must be called in every mousemove event, + // otherwise textArea will close the tooltip. + } else { + // Look if it is variable + //value = selectedThread.LocalVariables[expresion].Value.ToString(); + ResolveResult result = ParserService.Resolve(expression, logicPos.Y + 1, xPosition + 1, textArea.MotherTextEditorControl.FileName, textContent); + string value = GetText(result); + if (value != null) { + value = "expr: >" + expression + "<\n" + value; + textArea.SetToolTip(value); + } + oldToolTip = value; } } + oldLine = logicPos.Y; + oldExpression = expression; } } } catch (Exception e) { diff --git a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs index add0941232..df6867f706 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs @@ -97,7 +97,7 @@ namespace ICSharpCode.Core { CaseSensitiveProjectContent newProjectContent = new CaseSensitiveProjectContent(); newProjectContent.referencedContents.Add(ProjectContentRegistry.GetMscorlibContent()); - foreach (ProjectItem item in project.Items) { + foreach (ProjectItem item in project.Items.ToArray()) { switch (item.ItemType) { case ItemType.Reference: IProjectContent referencedContent = ProjectContentRegistry.GetProjectContentForReference(item as ReferenceProjectItem);