Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 9d3ce09

Browse files
authored
Merge pull request #2407 from github/fixes/2382-inline-tagger-leaking-editor-instances
Stop inline comments tagger from leaking editor instances
2 parents 6b9da32 + b50df9c commit 9d3ce09

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

src/GitHub.InlineReviews/Margins/InlineCommentMarginProvider.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using Microsoft.VisualStudio.Text.Classification;
88
using GitHub.Services;
99
using GitHub.VisualStudio;
10-
using GitHub.InlineReviews.Services;
1110

1211
namespace GitHub.InlineReviews.Margins
1312
{
@@ -16,7 +15,9 @@ namespace GitHub.InlineReviews.Margins
1615
[Order(After = PredefinedMarginNames.Glyph)]
1716
[MarginContainer(PredefinedMarginNames.Left)]
1817
[ContentType("text")]
19-
[TextViewRole(PredefinedTextViewRoles.Interactive)]
18+
[TextViewRole("LEFTDIFF")]
19+
[TextViewRole("RIGHTDIFF")]
20+
[TextViewRole("INLINEDIFF")]
2021
internal sealed class InlineCommentMarginProvider : IWpfTextViewMarginProvider
2122
{
2223
readonly Lazy<IEditorFormatMapService> editorFormatMapService;

src/GitHub.InlineReviews/Tags/InlineCommentTaggerProvider.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
using System;
22
using System.ComponentModel.Composition;
33
using GitHub.Extensions;
4-
using GitHub.InlineReviews.Services;
54
using GitHub.Services;
65
using Microsoft.VisualStudio.Text;
6+
using Microsoft.VisualStudio.Text.Differencing;
77
using Microsoft.VisualStudio.Text.Editor;
88
using Microsoft.VisualStudio.Text.Tagging;
99
using Microsoft.VisualStudio.Utilities;
@@ -16,6 +16,9 @@ namespace GitHub.InlineReviews.Tags
1616
[Export(typeof(IViewTaggerProvider))]
1717
[ContentType("text")]
1818
[TagType(typeof(ShowInlineCommentTag))]
19+
[TextViewRole("LEFTDIFF")]
20+
[TextViewRole("RIGHTDIFF")]
21+
[TextViewRole("INLINEDIFF")]
1922
class InlineCommentTaggerProvider : IViewTaggerProvider
2023
{
2124
readonly IPullRequestSessionManager sessionManager;
@@ -31,11 +34,22 @@ public InlineCommentTaggerProvider(
3134

3235
public ITagger<T> CreateTagger<T>(ITextView view, ITextBuffer buffer) where T : ITag
3336
{
34-
return buffer.Properties.GetOrCreateSingletonProperty(() =>
35-
new InlineCommentTagger(
36-
view,
37-
buffer,
38-
sessionManager)) as ITagger<T>;
37+
if (view.TextViewModel is IDifferenceTextViewModel model)
38+
{
39+
if (buffer == model.Viewer.DifferenceBuffer.BaseLeftBuffer)
40+
{
41+
return view.Properties.GetOrCreateSingletonProperty("InlineTaggerForLeftBuffer",
42+
() => new InlineCommentTagger(view, buffer, sessionManager) as ITagger<T>);
43+
}
44+
45+
if (buffer == model.Viewer.DifferenceBuffer.BaseRightBuffer)
46+
{
47+
return view.Properties.GetOrCreateSingletonProperty("InlineTaggerForRightBuffer",
48+
() => new InlineCommentTagger(view, buffer, sessionManager) as ITagger<T>);
49+
}
50+
}
51+
52+
return null;
3953
}
4054
}
4155
}

0 commit comments

Comments
 (0)