From 12d1d2495f4ff9bbb13879c40749ffd4a09e3c80 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 8 Jun 2019 12:28:50 +0200 Subject: [PATCH] Fix #1527: Remove links on non-local definitions --- ILSpy/TextView/AvalonEditTextOutput.cs | 18 +++++------------- ILSpy/TextView/DecompilerTextView.cs | 6 +++--- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/ILSpy/TextView/AvalonEditTextOutput.cs b/ILSpy/TextView/AvalonEditTextOutput.cs index fe3c98fdf..6c03a8b2d 100644 --- a/ILSpy/TextView/AvalonEditTextOutput.cs +++ b/ILSpy/TextView/AvalonEditTextOutput.cs @@ -41,7 +41,7 @@ namespace ICSharpCode.ILSpy.TextView { public object Reference; public bool IsLocal; - public bool IsLocalTarget; + public bool IsDefinition; } /// @@ -236,10 +236,8 @@ namespace ICSharpCode.ILSpy.TextView int end = this.TextLength; if (isDefinition) { this.DefinitionLookup.AddDefinition((module, handle), this.TextLength); - references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = (module, handle) }); - } else { - references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = (module, handle) }); } + references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = (module, handle), IsDefinition = isDefinition }); } public void WriteReference(IType type, string text, bool isDefinition = false) @@ -250,10 +248,8 @@ namespace ICSharpCode.ILSpy.TextView int end = this.TextLength; if (isDefinition) { this.DefinitionLookup.AddDefinition(type, this.TextLength); - references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = type }); - } else { - references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = type }); } + references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = type, IsDefinition = isDefinition }); } public void WriteReference(IMember member, string text, bool isDefinition = false) @@ -264,10 +260,8 @@ namespace ICSharpCode.ILSpy.TextView int end = this.TextLength; if (isDefinition) { this.DefinitionLookup.AddDefinition(member, this.TextLength); - references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = member }); - } else { - references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = member }); } + references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = member, IsDefinition = isDefinition }); } public void WriteLocalReference(string text, object reference, bool isDefinition = false) @@ -278,10 +272,8 @@ namespace ICSharpCode.ILSpy.TextView int end = this.TextLength; if (isDefinition) { this.DefinitionLookup.AddDefinition(reference, this.TextLength); - references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = reference, IsLocal = true, IsLocalTarget = true }); - } else { - references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = reference, IsLocal = true }); } + references.Add(new ReferenceSegment { StartOffset = start, EndOffset = end, Reference = reference, IsLocal = true, IsDefinition = isDefinition }); } public void MarkFoldStart(string collapsedText = "...", bool defaultCollapsed = false) diff --git a/ILSpy/TextView/DecompilerTextView.cs b/ILSpy/TextView/DecompilerTextView.cs index 62710b5a7..8a4f05152 100644 --- a/ILSpy/TextView/DecompilerTextView.cs +++ b/ILSpy/TextView/DecompilerTextView.cs @@ -590,7 +590,7 @@ namespace ICSharpCode.ILSpy.TextView foreach (var r in references) { if (reference.Equals(r.Reference)) { var mark = textMarkerService.Create(r.StartOffset, r.Length); - mark.BackgroundColor = r.IsLocalTarget ? Colors.LightSeaGreen : Colors.GreenYellow; + mark.BackgroundColor = r.IsDefinition ? Colors.LightSeaGreen : Colors.GreenYellow; localReferenceMarks.Add(mark); } } @@ -633,7 +633,7 @@ namespace ICSharpCode.ILSpy.TextView var referenceSegment = GetReferenceSegmentAtMousePosition(); if (referenceSegment == null) { ClearLocalReferenceMarks(); - } else { + } else if (referenceSegment.IsLocal || !referenceSegment.IsDefinition) { JumpToReference(referenceSegment); textEditor.TextArea.ClearSelection(); } @@ -656,7 +656,7 @@ namespace ICSharpCode.ILSpy.TextView /// bool IsLink(ReferenceSegment referenceSegment) { - return true; + return referenceSegment.IsLocal || !referenceSegment.IsDefinition; } #endregion