Browse Source

Fixed tooltip flickering and a resolver bug.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@75 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
3cfb8ffad9
  1. 4
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
  2. 2
      src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs
  3. 15
      src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs
  4. 2
      src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs

4
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs

@ -299,16 +299,18 @@ namespace ICSharpCode.TextEditor
string oldToolTip; string oldToolTip;
public void SetToolTip(string text) public void SetToolTip(string text)
{ {
toolTipSet = (text != null);
if (oldToolTip == text) if (oldToolTip == text)
return; return;
ToolTip toolTip = this.toolTip; ToolTip toolTip = this.toolTip;
if (text == null) { if (text == null) {
//Console.WriteLine("Tooltip disabled");
toolTip.Hide(this.FindForm()); toolTip.Hide(this.FindForm());
} else { } else {
//Console.WriteLine("Tooltip set to " + text);
Point p = PointToClient(Control.MousePosition); Point p = PointToClient(Control.MousePosition);
p.Offset(3, 3); p.Offset(3, 3);
toolTip.Show(text, this, p); toolTip.Show(text, this, p);
toolTipSet = true;
} }
oldToolTip = text; oldToolTip = text;
} }

2
src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryResolver.cs

@ -420,7 +420,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
foreach (IMethod m in curType.Methods) { foreach (IMethod m in curType.Methods) {
if (IsSameName(m.Name, memberName) && if (IsSameName(m.Name, memberName) &&
m.MustBeShown(callingClass, true, isClassInInheritanceTree) && m.IsAccessible(callingClass, isClassInInheritanceTree) &&
!((m.Modifiers & ModifierEnum.Override) == ModifierEnum.Override)) { !((m.Modifiers & ModifierEnum.Override) == ModifierEnum.Override)) {
methods.Add(m); methods.Add(m);
} }

15
src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs

@ -519,6 +519,9 @@ namespace ICSharpCode.Core
} }
} }
static string oldExpression, oldToolTip;
static int oldLine;
/// <summary> /// <summary>
/// This function shows variable values as tooltips /// This function shows variable values as tooltips
/// </summary> /// </summary>
@ -540,7 +543,13 @@ namespace ICSharpCode.Core
string textContent = doc.TextContent; string textContent = doc.TextContent;
string expression = expressionFinder.FindFullExpression(textContent, seg.Offset + xPosition); string expression = expressionFinder.FindFullExpression(textContent, seg.Offset + xPosition);
//Console.WriteLine("MouseMove@" + logicPos + ":" + expression); //Console.WriteLine("MouseMove@" + logicPos + ":" + expression);
if (expression != null && expression != String.Empty) { 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 // Look if it is variable
//value = selectedThread.LocalVariables[expresion].Value.ToString(); //value = selectedThread.LocalVariables[expresion].Value.ToString();
ResolveResult result = ParserService.Resolve(expression, logicPos.Y + 1, xPosition + 1, textArea.MotherTextEditorControl.FileName, textContent); ResolveResult result = ParserService.Resolve(expression, logicPos.Y + 1, xPosition + 1, textArea.MotherTextEditorControl.FileName, textContent);
@ -549,7 +558,11 @@ namespace ICSharpCode.Core
value = "expr: >" + expression + "<\n" + value; value = "expr: >" + expression + "<\n" + value;
textArea.SetToolTip(value); textArea.SetToolTip(value);
} }
oldToolTip = value;
}
} }
oldLine = logicPos.Y;
oldExpression = expression;
} }
} }
} catch (Exception e) { } catch (Exception e) {

2
src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs

@ -97,7 +97,7 @@ namespace ICSharpCode.Core
{ {
CaseSensitiveProjectContent newProjectContent = new CaseSensitiveProjectContent(); CaseSensitiveProjectContent newProjectContent = new CaseSensitiveProjectContent();
newProjectContent.referencedContents.Add(ProjectContentRegistry.GetMscorlibContent()); newProjectContent.referencedContents.Add(ProjectContentRegistry.GetMscorlibContent());
foreach (ProjectItem item in project.Items) { foreach (ProjectItem item in project.Items.ToArray()) {
switch (item.ItemType) { switch (item.ItemType) {
case ItemType.Reference: case ItemType.Reference:
IProjectContent referencedContent = ProjectContentRegistry.GetProjectContentForReference(item as ReferenceProjectItem); IProjectContent referencedContent = ProjectContentRegistry.GetProjectContentForReference(item as ReferenceProjectItem);

Loading…
Cancel
Save