private void MouseHover(object sender, MouseEventArgs e) { var pos = TextEditor.TextArea.TextView.GetPositionFloor(e.GetPosition(TextEditor.TextArea.TextView) + TextEditor.TextArea.TextView.ScrollOffset); var inDocument = pos.HasValue; if (inDocument) { var logicalPosition = pos.Value.Location; var offset = TextEditor.Document.GetOffset(logicalPosition); var markersAtOffset = _textMarkerService.GetMarkersAtOffset(offset); TextMarker markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null); if (markerWithToolTip != null) { if (_toolTip == null) { _toolTip = new ToolTip(); _toolTip.Closed += ToolTipClosed; _toolTip.PlacementTarget = this; _toolTip.Content = new TextBlock { Text = markerWithToolTip.ToolTip, TextWrapping = TextWrapping.Wrap }; _toolTip.IsOpen = true; e.Handled = true; } } } }
private void ToolTipMouseHover(object sender, MouseEventArgs e) { var pos = this.TextArea.TextView.GetPositionFloor(e.GetPosition(this.TextArea.TextView) + this.TextArea.TextView.ScrollOffset); bool inDocument = pos.HasValue; if (inDocument) { TextLocation logicalPosition = pos.Value.Location; int offset = this.Document.GetOffset(logicalPosition); var markersAtOffset = textMarkerService.GetMarkersAtOffset(offset); ITextMarker markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null); var ast_node = ParseInfo?.AstNodeAtOffset(offset); if (markerWithToolTip != null || ast_node != null) { if (toolTip == null) { var toolTipText = ""; if (markerWithToolTip != null && markerWithToolTip.ToolTip != null) { toolTipText += (string)markerWithToolTip.ToolTip; } if (ast_node != null) { toolTipText += ast_node.ToString(); } toolTip = new ToolTip(); toolTip.Closed += ToolTipClosed; toolTip.PlacementTarget = this; toolTip.Content = new TextBlock { Text = toolTipText, TextWrapping = TextWrapping.Wrap }; toolTip.IsOpen = true; e.Handled = true; } } } }