protected HexQuickInfoPresenterBase(HexQuickInfoSession session) { this.session = session ?? throw new ArgumentNullException(nameof(session)); control = new HexQuickInfoPresenterControl { DataContext = this }; session.Dismissed += Session_Dismissed; }
void QuickInfoSession_Dismissed(object sender, EventArgs e) { var qiSession = (HexQuickInfoSession)sender; qiSession.Dismissed -= QuickInfoSession_Dismissed; Debug.Assert(qiSession == quickInfoSession); if (qiSession == quickInfoSession) { quickInfoSession = null; } }
public HexQuickInfoPresenter(HexQuickInfoSession session) : base(session) { wpfHexView = session.HexView as WpfHexView; Debug.Assert(wpfHexView != null); popup = new Popup { PlacementTarget = wpfHexView?.VisualElement, Placement = PlacementMode.Relative, Visibility = Visibility.Collapsed, IsOpen = false, AllowsTransparency = true, UseLayoutRounding = true, SnapsToDevicePixels = true, }; }
void TriggerQuickInfo() { if (quickInfoSession != null) { quickInfoSession.Dismissed -= QuickInfoSession_Dismissed; quickInfoSession.Dismiss(); quickInfoSession = null; } quickInfoSession = quickInfoBroker.TriggerQuickInfo(hexView, hexView.Caret.Position.Position.ActivePosition, false); if (quickInfoSession?.IsDismissed == false) { quickInfoSession.Dismissed += QuickInfoSession_Dismissed; } else { quickInfoSession = null; } }
public override void AugmentQuickInfoSession(HexQuickInfoSession session, IList <object> quickInfoContent, out HexBufferSpanSelection applicableToSpan) { applicableToSpan = default(HexBufferSpanSelection); RemoveToolTipInfo(); toolTipInfoCollection = hexToolTipService.GetToolTipInfo(session.TriggerPoint.BufferPosition); if (toolTipInfoCollection == null) { return; } applicableToSpan = new HexBufferSpanSelection(toolTipInfoCollection.BufferSpan, HexSpanSelectionFlags.Selection); hexToolTipService.SetActiveToolTip(toolTipInfoCollection); session.Dismissed += Session_Dismissed; foreach (var info in toolTipInfoCollection) { if (info.ToolTip != null) { quickInfoContent.Add(info.ToolTip); } } }
public HexQuickInfoPresenter(HexQuickInfoSession session) : base(session) { wpfHexView = session.HexView as WpfHexView; Debug.Assert(wpfHexView != null); popup = new Popup { PlacementTarget = wpfHexView?.VisualElement, Placement = PlacementMode.Relative, Visibility = Visibility.Collapsed, IsOpen = false, AllowsTransparency = true, UseLayoutRounding = true, SnapsToDevicePixels = true, }; // It's possible that quick info gets triggered inside the space between two values but // the full span doesn't include that space. In that case, dismiss the session. var mousePos = GetMousePoint(Mouse.PrimaryDevice); if (mousePos == null || !IsMouseWithinSpan(mousePos.Value)) { session.Dismiss(); } }
public HexSpaceReservationQuickInfoPresenter(HexQuickInfoSession session) : base(session) { SetPresentationSpan(session.ApplicableToSpan); session.ApplicableToSpanChanged += Session_ApplicableToSpanChanged; }