提交 2e224710 编写于 作者: C CyrusNajmabadi

Prevent NaN from slipping into .Measure calls.

上级 613b9912
......@@ -8,6 +8,6 @@ namespace Microsoft.CodeAnalysis.Editor.Host
{
internal interface IPreviewPaneService : IWorkspaceService
{
object GetPreviewPane(DiagnosticData diagnostic, string language, string projectType, IList<object> previewContent);
object GetPreviewPane(DiagnosticData diagnostic, string language, string projectType, IReadOnlyList<object> previewContent);
}
}
......@@ -26,7 +26,7 @@ public SolutionPreviewResult(IList<SolutionPreviewItem> previews, SolutionChange
public bool IsEmpty => _previews.Count == 0;
public async Task<IList<object>> GetPreviewsAsync(DocumentId preferredDocumentId = null, ProjectId preferredProjectId = null, CancellationToken cancellationToken = default(CancellationToken))
public async Task<IReadOnlyList<object>> GetPreviewsAsync(DocumentId preferredDocumentId = null, ProjectId preferredProjectId = null, CancellationToken cancellationToken = default(CancellationToken))
{
AssertIsForeground();
cancellationToken.ThrowIfCancellationRequested();
......
......@@ -16,6 +16,8 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.PreviewPane
{
internal partial class PreviewPane : UserControl, IDisposable
{
private const double DefaultWidth = 400;
private static readonly string s_dummyThreeLineTitle = "A" + Environment.NewLine + "A" + Environment.NewLine + "A";
private static readonly Size s_infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
......@@ -26,8 +28,15 @@ internal partial class PreviewPane : UserControl, IDisposable
private double _heightForThreeLineTitle;
private IWpfDifferenceViewer _previewDiffViewer;
public PreviewPane(Image severityIcon, string id, string title, string description, Uri helpLink, string helpLinkToolTipText,
IList<object> previewContent, bool logIdVerbatimInTelemetry)
public PreviewPane(
Image severityIcon,
string id,
string title,
string description,
Uri helpLink,
string helpLinkToolTipText,
IReadOnlyList<object> previewContent,
bool logIdVerbatimInTelemetry)
{
InitializeComponent();
......@@ -62,7 +71,7 @@ internal partial class PreviewPane : UserControl, IDisposable
InitializePreviewElement(previewContent);
}
private void InitializePreviewElement(IList<object> previewItems)
private void InitializePreviewElement(IReadOnlyList<object> previewItems)
{
var previewElement = CreatePreviewElement(previewItems);
......@@ -84,7 +93,7 @@ private void InitializePreviewElement(IList<object> previewItems)
AdjustWidthAndHeight(previewElement);
}
private FrameworkElement CreatePreviewElement(IList<object> previewItems)
private FrameworkElement CreatePreviewElement(IReadOnlyList<object> previewItems)
{
if (previewItems == null || previewItems.Count == 0)
{
......@@ -175,7 +184,7 @@ public static FrameworkElement GetPreviewForString(string previewContent, bool u
{
preview = new Border()
{
Width = 400,
Width = DefaultWidth,
MinHeight = 75,
Child = textBlock
};
......@@ -202,7 +211,9 @@ private void AdjustWidthAndHeight(FrameworkElement previewElement)
}
else
{
PreviewDockPanel.Measure(availableSize: new Size(previewElement.Width, double.PositiveInfinity));
PreviewDockPanel.Measure(availableSize: new Size(
double.IsNaN(previewElement.Width) ? DefaultWidth : previewElement.Width,
double.PositiveInfinity));
headerStackPanelWidth = PreviewDockPanel.DesiredSize.Width;
if (IsNormal(headerStackPanelWidth))
{
......@@ -320,4 +331,4 @@ private void ExpanderToggleButton_CheckedChanged(object sender, RoutedEventArgs
}
}
}
}
}
\ No newline at end of file
......@@ -81,7 +81,7 @@ private static Uri GetHelpLink(DiagnosticData diagnostic, string language, strin
return helpLink;
}
object IPreviewPaneService.GetPreviewPane(DiagnosticData diagnostic, string language, string projectType, IList<object> previewContent)
object IPreviewPaneService.GetPreviewPane(DiagnosticData diagnostic, string language, string projectType, IReadOnlyList<object> previewContent)
{
var title = diagnostic?.Message;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册