From f790337325875ee653208aae1a6bd60bb5b0de2f Mon Sep 17 00:00:00 2001 From: Shen Chen Date: Wed, 14 Jul 2021 14:15:55 -0700 Subject: [PATCH] Make sure ZoomLevel is divided by 100 --- .../MarginGlyph/InheritanceMargin.xaml.cs | 5 +---- .../MarginGlyph/InheritanceMarginViewModel.cs | 6 +++++- .../InheritanceMarginViewModelTests.vb | 16 +++++++++------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/VisualStudio/Core/Def/Implementation/InheritanceMargin/MarginGlyph/InheritanceMargin.xaml.cs b/src/VisualStudio/Core/Def/Implementation/InheritanceMargin/MarginGlyph/InheritanceMargin.xaml.cs index 92d6b1fffb1b4..8fad1dc981814 100644 --- a/src/VisualStudio/Core/Def/Implementation/InheritanceMargin/MarginGlyph/InheritanceMargin.xaml.cs +++ b/src/VisualStudio/Core/Def/Implementation/InheritanceMargin/MarginGlyph/InheritanceMargin.xaml.cs @@ -44,10 +44,7 @@ public InheritanceMargin( _textView = textView; InitializeComponent(); - // ZoomLevel of textView is percentage based. (e.g. 20 -> 400 means 20% -> 400%) - // and the scaleFactor of CrispImage is 1 based. (e.g 1 means 100%) - var scaleFactor = textView.ZoomLevel; - var viewModel = InheritanceMarginViewModel.Create(classificationTypeMap, classificationFormatMap, tag, scaleFactor); + var viewModel = InheritanceMarginViewModel.Create(classificationTypeMap, classificationFormatMap, tag, textView.ZoomLevel); DataContext = viewModel; ContextMenu.DataContext = viewModel; ToolTip = new ToolTip { Content = viewModel.ToolTipTextBlock, Style = (Style)FindResource("ToolTipStyle") }; diff --git a/src/VisualStudio/Core/Def/Implementation/InheritanceMargin/MarginGlyph/InheritanceMarginViewModel.cs b/src/VisualStudio/Core/Def/Implementation/InheritanceMargin/MarginGlyph/InheritanceMarginViewModel.cs index 3a466c45183fe..6616e87e1cc81 100644 --- a/src/VisualStudio/Core/Def/Implementation/InheritanceMargin/MarginGlyph/InheritanceMarginViewModel.cs +++ b/src/VisualStudio/Core/Def/Implementation/InheritanceMargin/MarginGlyph/InheritanceMarginViewModel.cs @@ -61,9 +61,13 @@ public static InheritanceMarginViewModel Create( ClassificationTypeMap classificationTypeMap, IClassificationFormatMap classificationFormatMap, InheritanceMarginTag tag, - double scaleFactor) + double zoomLevel) { var members = tag.MembersOnLine; + + // ZoomLevel is 100 based. (e.g. 150%, 100%) + // ScaleFactor is 1 based. (e.g. 1.5, 1) + var scaleFactor = zoomLevel / 100; if (members.Length == 1) { var member = tag.MembersOnLine[0]; diff --git a/src/VisualStudio/Core/Test/InheritanceMargin/InheritanceMarginViewModelTests.vb b/src/VisualStudio/Core/Test/InheritanceMargin/InheritanceMarginViewModelTests.vb index d8c2d3b1bf24c..92889971014b8 100644 --- a/src/VisualStudio/Core/Test/InheritanceMargin/InheritanceMarginViewModelTests.vb +++ b/src/VisualStudio/Core/Test/InheritanceMargin/InheritanceMarginViewModelTests.vb @@ -71,8 +71,9 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.InheritanceMargin Assert.True(acutalLineToTagDictionary.ContainsKey(lineNumber)) Dim acutalTag = acutalLineToTagDictionary(lineNumber) + ' Editor TestView zoom level is 100 based. Dim actualViewModel = InheritanceMarginViewModel.Create( - classificationTypeMap, classificationFormatMap.GetClassificationFormatMap("tooltip"), acutalTag, 1) + classificationTypeMap, classificationFormatMap.GetClassificationFormatMap("tooltip"), acutalTag, 100) VerifyTwoViewModelAreSame(expectedViewModel, actualViewModel) Next @@ -80,9 +81,9 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.InheritanceMargin End Using End Function - Private Shared Sub VerifyTwoViewModelAreSame(expected As InheritanceMarginViewModel, acutal As InheritanceMarginViewModel) - Assert.Equal(expected.ImageMoniker, acutal.ImageMoniker) - Dim actualTextGetFromTextBlock = acutal.ToolTipTextBlock.Inlines _ + Private Shared Sub VerifyTwoViewModelAreSame(expected As InheritanceMarginViewModel, actual As InheritanceMarginViewModel) + Assert.Equal(expected.ImageMoniker, actual.ImageMoniker) + Dim actualTextGetFromTextBlock = actual.ToolTipTextBlock.Inlines _ .OfType(Of Run).Select(Function(run) run.Text) _ .Aggregate(Function(text1, text2) text1 + text2) ' When the text block is created, a unicode 'left to right' would be inserted between the space. @@ -90,12 +91,13 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.InheritanceMargin Dim leftToRightMarker = Char.ConvertFromUtf32(&H200E) Dim actualText = actualTextGetFromTextBlock.Replace(leftToRightMarker, String.Empty) Assert.Equal(expected.ToolTipTextBlock.Text, actualText) - Assert.Equal(expected.AutomationName, acutal.AutomationName) - Assert.Equal(expected.MenuItemViewModels.Length, acutal.MenuItemViewModels.Length) + Assert.Equal(expected.AutomationName, actual.AutomationName) + Assert.Equal(expected.MenuItemViewModels.Length, actual.MenuItemViewModels.Length) + Assert.Equal(expected.ScaleFactor, actual.ScaleFactor) For i = 0 To expected.MenuItemViewModels.Length - 1 Dim expectedMenuItem = expected.MenuItemViewModels(i) - Dim actualMenuItem = acutal.MenuItemViewModels(i) + Dim actualMenuItem = actual.MenuItemViewModels(i) Next End Sub