Browse Source

Show tooltips on EnhancedScrollBarTrack.

Fixed NullReferenceException when showing tooltip after debugging.
newNRvisualizers
Daniel Grunwald 14 years ago
parent
commit
e1d7f1bf7f
  1. 2
      SharpDevelop.sln
  2. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  3. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpSemanticHighlighter.cs
  4. 3
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlBinding.csproj
  5. 13
      src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs
  6. 2
      src/AddIns/Debugger/Debugger.AddIn/TreeModel/ValueNode.cs
  7. 5
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  8. 23
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/EnhancedScrollBar.cs
  9. 2
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

2
SharpDevelop.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.2.0.8783
# SharpDevelop 4.3
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection

2
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
<Path name = "/SharpDevelop/Workbench/Ambiences">
<Class id = "C#"
class = "ICSharpCode.SharpDevelop.CSharpAmbience"/>
class = "ICSharpCode.NRefactory.CSharp.CSharpAmbience"/>
</Path>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectActions/Convert">

1
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpSemanticHighlighter.cs

@ -372,6 +372,7 @@ namespace CSharpBinding @@ -372,6 +372,7 @@ namespace CSharpBinding
public override void VisitMethodDeclaration(MethodDeclaration methodDeclaration)
{
methodDeclaration.ReturnType.AcceptVisitor(this);
methodDeclaration.PrivateImplementationType.AcceptVisitor(this);
Colorize(methodDeclaration.NameToken, methodCallColor);
foreach (var node in methodDeclaration.TypeParameters)
node.AcceptVisitor(this);

3
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlBinding.csproj

@ -14,7 +14,8 @@ @@ -14,7 +14,8 @@
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<SourceAnalysisOverrideSettingsFile>C:\Users\Daniel\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>

13
src/AddIns/Debugger/Debugger.AddIn/Service/WindowsDebugger.cs

@ -710,22 +710,21 @@ namespace ICSharpCode.SharpDevelop.Services @@ -710,22 +710,21 @@ namespace ICSharpCode.SharpDevelop.Services
public void HandleToolTipRequest(ToolTipRequestEventArgs e)
{
if (!(IsDebugging && CurrentProcess.IsPaused))
return;
if (e.ResolveResult == null)
return;
if (e.ResolveResult is LocalResolveResult || e.ResolveResult is MemberResolveResult || e.ResolveResult is InvocationResolveResult) {
Value result;
string text;
try {
ExpressionEvaluationVisitor eval = new ExpressionEvaluationVisitor(CurrentStackFrame, EvalThread, CurrentStackFrame.AppDomain.Compilation);
result = eval.Convert(e.ResolveResult);
text = new ResolveResultPrettyPrinter().Print(e.ResolveResult);
Value result = eval.Convert(e.ResolveResult);
string text = new ResolveResultPrettyPrinter().Print(e.ResolveResult);
e.SetToolTip(new DebuggerTooltipControl(ValueNode.GetTooltipFor(text, result)));
} catch (GetValueException ex) {
text = ex.Message;
result = null;
e.SetToolTip(ex.Message);
} catch (InvalidOperationException) {
return;
}
e.SetToolTip(new DebuggerTooltipControl(ValueNode.GetTooltipFor(text, result)));
}
}
}

2
src/AddIns/Debugger/Debugger.AddIn/TreeModel/ValueNode.cs

@ -279,6 +279,8 @@ namespace Debugger.AddIn.TreeModel @@ -279,6 +279,8 @@ namespace Debugger.AddIn.TreeModel
public static TreeNode GetTooltipFor(string text, Value value)
{
if (value == null)
throw new ArgumentNullException("value");
return new ValueNode("Icons.16x16.Local", text, () => value);
}

5
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -298,9 +298,10 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -298,9 +298,10 @@ namespace ICSharpCode.AvalonEdit.AddIn
var popupPosition = GetPopupPosition(e);
popupToolTip.HorizontalOffset = popupPosition.X;
popupToolTip.VerticalOffset = popupPosition.Y;
popupToolTip.IsOpen = true;
popupToolTip.StaysOpen = true; // We will close it ourselves
e.Handled = true;
popupToolTip.IsOpen = true;
} else {
if (toolTip == null) {
toolTip = new ToolTip();
@ -318,8 +319,8 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -318,8 +319,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
else
toolTip.Content = args.ContentToShow;
toolTip.IsOpen = true;
e.Handled = true;
toolTip.IsOpen = true;
}
}
}

23
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/EnhancedScrollBar.cs

@ -10,7 +10,11 @@ using System.Windows.Documents; @@ -10,7 +10,11 @@ using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Threading;
using ICSharpCode.AvalonEdit.Rendering;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.AvalonEdit.AddIn
{
@ -215,6 +219,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -215,6 +219,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
this.textMarkerService = enhanchedScrollBar.textMarkerService;
this.Cursor = Cursors.Hand;
this.ToolTip = string.Empty;
triangleGeometry = new StreamGeometry();
using (var ctx = triangleGeometry.Open()) {
@ -282,7 +287,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -282,7 +287,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
protected override void OnMouseDown(MouseButtonEventArgs e)
{
base.OnMouseDown(e);
var marker = FindNextMarker(e);
var marker = FindNextMarker(e.GetPosition(this));
if (marker != null) {
var location = editor.Document.GetLocation(marker.StartOffset);
// Use JumpTo() if possible
@ -291,12 +296,12 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -291,12 +296,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
textEditor.JumpTo(location.Line, location.Column);
else
editor.ScrollTo(location.Line, location.Column);
e.Handled = true;
}
}
ITextMarker FindNextMarker(MouseButtonEventArgs e)
ITextMarker FindNextMarker(Point mousePos)
{
var mousePos = e.GetPosition(this);
var renderSize = this.RenderSize;
var document = editor.Document;
var textView = editor.TextArea.TextView;
@ -319,6 +324,18 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -319,6 +324,18 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
return bestMarker;
}
protected override void OnToolTipOpening(ToolTipEventArgs e)
{
base.OnToolTipOpening(e);
var marker = FindNextMarker(Mouse.GetPosition(this));
if (marker != null && marker.ToolTip != null) {
this.ToolTip = marker.ToolTip;
} else {
// prevent tooltip from opening
e.Handled = true;
}
}
}
#endregion
}

2
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -65,8 +65,6 @@ @@ -65,8 +65,6 @@
</Path>
<Path name = "/SharpDevelop/Workbench/Ambiences">
<Class id = ".NET"
class = "ICSharpCode.SharpDevelop.NetAmbience"/>
</Path>
<Path name = "/SharpDevelop/Workbench/DisplayBindings">

Loading…
Cancel
Save