/// <summary> /// Clear tooptip by clearing <seealso cref="ActiveTagData"/> and refreshing the taggers. /// </summary> public void ClearTooltip() { ActiveTagData.ResetCurrent(); if (_isTooltipShown) { SendTagsChangedEvent(); } }
/// <summary> /// Set the data members in a batch. /// for parameter definition, <seealso cref="ActiveTagData"/> data members. /// </summary> public static void SetCurrent(IWpfTextView view, long line, UserControl control, string method = null) { Current = new ActiveTagData() { TextView = view, SourceLine = line, TooltipControl = control, MethodName = method }; }
private void OnLostAggregateFocus(object sender, EventArgs e) { if (_isTooltipShown) { if (ActiveTagData.Current?.TextView == _view) { ActiveTagData.ResetCurrent(); } SendTagsChangedEvent(); } }
private void DisplayTooltip(SnapshotSpan span) { _toolTipProvider.ClearToolTip(); _isTooltipShown = true; // Note, keep a local copy of ActiveTagData.Current. // In case ActiveTagData.Current changes by other thread or by async re-entrancy. ActiveTagData activeData = ActiveTagData.Current; if (activeData == null) { Debug.WriteLine($"{nameof(ActiveTagData.Current)} is empty, this is probably a code bug."); return; } activeData.TooltipControl.Width = _view.ViewportWidth; _toolTipProvider.ShowToolTip( span.Snapshot.CreateTrackingSpan(span, SpanTrackingMode.EdgeExclusive), activeData.TooltipControl, PopupStyles.PositionClosest); }
/// <summary> /// Show the Logger method tooltip. /// </summary> /// <param name="logItem">The <seealso cref="LogItem"/> that has the source line information.</param> /// <param name="window">The Visual Studio doucment window of the source file.</param> public static void ShowToolTip(this LogItem logItem, Window window) { GotoLine(window, (int)logItem.SourceLine); IVsTextView textView = GetIVsTextView(window.Document.FullName); var wpfView = GetWpfTextView(textView); if (wpfView == null) { return; } var control = new LoggerTooltipControl(); control.DataContext = new LoggerTooltipViewModel(logItem); ActiveTagData.SetCurrent( wpfView, logItem.SourceLine.Value, control, logItem.LogLevel.GetLoggerMethodName()); TryFindTagger(wpfView)?.ShowOrUpdateToolTip(); }
private void DisplayTooltip(SnapshotSpan span) { _toolTipProvider.Dismiss(); _isTooltipShown = true; // Note, keep a local copy of ActiveTagData.Current. // In case ActiveTagData.Current changes by other thread or by async re-entrancy. ActiveTagData activeData = ActiveTagData.Current; if (activeData == null) { Debug.WriteLine($"{nameof(ActiveTagData.Current)} is empty, this is probably a code bug."); return; } List <object> uiList = new List <object>(); uiList.Add(activeData.TextView); activeData.TooltipControl.Width = _view.ViewportWidth; _toolTipProvider.StartOrUpdate( span.Snapshot.CreateTrackingSpan(span, SpanTrackingMode.EdgeExclusive), uiList); }
/// <summary> /// Show the tooltip for an error group stack frame. /// </summary> /// <param name="errorGroupItem">The error group item that will be shown in the source code tooltip.</param> /// <param name="stackFrame">The stack frame that contains the source file and source line number.</param> /// <param name="window">The Visual Studio Document window that opens the source file.</param> public static void ShowToolTip( ErrorGroupItem errorGroupItem, ErrorReporting.StackFrame stackFrame, Window window) { GotoLine(window, (int)stackFrame.LineNumber); IVsTextView textView = GetIVsTextView(window.Document.FullName); var wpfView = GetWpfTextView(textView); if (wpfView == null) { return; } var control = new ErrorFrameTooltipControl(); control.DataContext = new ErrorFrameTooltipViewModel(errorGroupItem); ActiveTagData.SetCurrent( wpfView, stackFrame.LineNumber, control, ""); TryFindTagger(wpfView)?.ShowOrUpdateToolTip(); }
/// <summary> /// Set all data members to null. /// </summary> public static void ResetCurrent() { Current = null; }