public bool TryTriggerQuickInfo()
        {
            if (documentViewer.TextView.IsClosed)
            {
                return(false);
            }
            var caretPos = documentViewer.TextView.Caret.Position;

            if (caretPos.VirtualSpaces > 0)
            {
                return(false);
            }
            var pos      = caretPos.BufferPosition;
            var spanData = GetReference(pos.Position, true);

            if (spanData == null)
            {
                return(false);
            }
            var info     = spanData.Value;
            var snapshot = pos.Snapshot;

            if (info.Span.End > snapshot.Length)
            {
                return(false);
            }
            var triggerPoint = snapshot.CreateTrackingPoint(info.Span.Start, PointTrackingMode.Negative);
            var session      = quickInfoBroker.TriggerQuickInfo(documentViewer.TextView, triggerPoint, trackMouse: false);

            return(session?.IsDismissed == false);
        }
Ejemplo n.º 2
0
        private void RetriggerQuickInfoSession(IQuickInfoSession session)
        {
            if (session != null && !session.IsDismissed)
            {
                session.Dismiss();
            }

            _lastPosition = -1;
            IQuickInfoBroker broker = EditorShell.Current.ExportProvider.GetExport <IQuickInfoBroker>().Value;

            broker.TriggerQuickInfo(session.TextView, session.GetTriggerPoint(session.TextView.TextBuffer), session.TrackMouse);
        }
Ejemplo n.º 3
0
        private void RetriggerQuickInfoSession(IQuickInfoSession session, string packageName)
        {
            if (session != null && !session.IsDismissed)
            {
                session.Dismiss();
            }

            _lastPosition = -1;
            _packageName  = packageName;
            if (packageName != null)
            {
                IQuickInfoBroker broker = _coreShell.GetService <IQuickInfoBroker>();
                broker.TriggerQuickInfo(session.TextView, session.GetTriggerPoint(session.TextView.TextBuffer), session.TrackMouse);
            }
        }
Ejemplo n.º 4
0
        private void RetriggerQuickInfoSession(IQuickInfoSession session, string packageName)
        {
            if (session != null && !session.IsDismissed)
            {
                session.Dismiss();
            }

            _lastPosition = -1;
            _packageName  = packageName;
            if (packageName != null)
            {
                IQuickInfoBroker broker = _catalog.ExportProvider.GetExport <IQuickInfoBroker>().Value;
                broker.TriggerQuickInfo(session.TextView, session.GetTriggerPoint(session.TextView.TextBuffer), session.TrackMouse);
            }
        }
 public void StartQuickInfo(int offset)
 {
     if (!m_broker.IsQuickInfoActive(m_view))
     {
         if (offset >= m_view.TextSnapshot.Length)
         {
             return;
         }
         ITrackingPoint triggerPoint = m_view.TextSnapshot.CreateTrackingPoint(offset, PointTrackingMode.Positive);
         var            session      = m_broker.TriggerQuickInfo(m_view, triggerPoint, true);
         if (session != null)
         {
             session.Start();
         }
     }
 }
Ejemplo n.º 6
0
        private void OnViewMouseHover(object sender, MouseHoverEventArgs e)
        {
            //find the mouse position by mapping down to the subject buffer
            var point = _textView.BufferGraph.MapDownToFirstMatch
                            (new SnapshotPoint(_textView.TextSnapshot, e.Position),
                            PointTrackingMode.Positive,
                            snapshot => _subjectBuffers.Contains(snapshot.TextBuffer),
                            PositionAffinity.Predecessor);

            if (point != null)
            {
                var triggerPoint = point.Value.Snapshot.CreateTrackingPoint(point.Value.Position, PointTrackingMode.Positive);
                if (!_quickInfoBroker.IsQuickInfoActive(_textView) && !_signatureHelpBroker.IsSignatureHelpActive(_textView))
                {
                    _quickInfoBroker.TriggerQuickInfo(_textView, triggerPoint, true);
                }
            }
        }
Ejemplo n.º 7
0
        void TextView_MouseHover(object sender, MouseHoverEventArgs e)
        {
            var pos = e.TextPosition.GetPoint(textView.TextBuffer, PositionAffinity.Successor);

            if (pos == null)
            {
                return;
            }
            var sessions = quickInfoBroker.GetSessions(textView);

            foreach (var session in sessions)
            {
                if (Intersects(session.ApplicableToSpan, pos.Value))
                {
                    return;
                }
                if ((session as IQuickInfoSession2)?.HasInteractiveContent == true)
                {
                    foreach (var o in session.QuickInfoContent)
                    {
                        var io = o as IInteractiveQuickInfoContent;
                        if (io == null)
                        {
                            continue;
                        }
                        if (io.KeepQuickInfoOpen || io.IsMouseOverAggregated)
                        {
                            return;
                        }
                    }
                }
            }
            foreach (var session in sessions)
            {
                session.Dismiss();
            }
            var triggerPoint = pos.Value.Snapshot.CreateTrackingPoint(pos.Value.Position, PointTrackingMode.Negative);

            quickInfoBroker.TriggerQuickInfo(textView, triggerPoint, trackMouse: true);
        }
Ejemplo n.º 8
0
 public void TriggerQuickInfoSession(IEditorView view)
 => _quickInfoBroker.TriggerQuickInfo(view.As <ITextView>());