SpanData <ReferenceInfo>?GetReference(MouseEventArgs e) { var loc = MouseLocation.TryCreateTextOnly(documentViewer.TextView, e); if (loc == null) { return(null); } if (loc.Position.IsInVirtualSpace) { return(null); } return(GetReference(loc.Position.Position.Position)); }
SpanData <ReferenceInfo>?GetReferenceCore(MouseEventArgs e) { if (Keyboard.Modifiers != ModifierKeys.None && Keyboard.Modifiers != ModifierKeys.Control) { return(null); } var documentViewer = TryGetDocumentViewer(); if (documentViewer == null) { return(null); } var loc = MouseLocation.TryCreateTextOnly(documentViewer.TextView, e); if (loc == null || loc.Position.IsInVirtualSpace) { return(null); } int pos = loc.Position.Position.Position; var spanData = documentViewer.Content.ReferenceCollection.Find(pos, false); if (spanData == null) { return(null); } if (spanData.Value.Data.Reference == null) { return(null); } if (Keyboard.Modifiers != ModifierKeys.Control) { if (spanData.Value.Data.IsDefinition) { return(null); } if (spanData.Value.Data.IsLocal) { return(null); } } return(spanData); }