protected override async Task <IWpfDifferenceViewer> CreateDifferenceViewAsync( IDifferenceBuffer diffBuffer, ITextViewRoleSet previewRoleSet, DifferenceViewMode mode, double zoomLevel, CancellationToken cancellationToken ) { var diffViewer = _differenceViewerService.CreateDifferenceView( diffBuffer, previewRoleSet ); const string DiffOverviewMarginName = "deltadifferenceViewerOverview"; diffViewer.ViewMode = mode; if (mode == DifferenceViewMode.RightViewOnly) { diffViewer.RightView.ZoomLevel *= zoomLevel; diffViewer.RightHost.GetTextViewMargin( DiffOverviewMarginName ).VisualElement.Visibility = Visibility.Collapsed; } else if (mode == DifferenceViewMode.LeftViewOnly) { diffViewer.LeftView.ZoomLevel *= zoomLevel; diffViewer.LeftHost.GetTextViewMargin( DiffOverviewMarginName ).VisualElement.Visibility = Visibility.Collapsed; } else { Contract.ThrowIfFalse(mode == DifferenceViewMode.Inline); diffViewer.InlineView.ZoomLevel *= zoomLevel; diffViewer.InlineHost.GetTextViewMargin( DiffOverviewMarginName ).VisualElement.Visibility = Visibility.Collapsed; } // Disable focus / tab stop for the diff viewer. diffViewer.RightView.VisualElement.Focusable = false; diffViewer.LeftView.VisualElement.Focusable = false; diffViewer.InlineView.VisualElement.Focusable = false; #pragma warning disable CA2007 // Consider calling ConfigureAwait on the awaited task (containing method uses JTF) await diffViewer.SizeToFitAsync(ThreadingContext, cancellationToken : cancellationToken); #pragma warning restore CA2007 // Consider calling ConfigureAwait on the awaited task return(diffViewer); }
protected override async Task <ICocoaDifferenceViewer> CreateDifferenceViewAsync( IDifferenceBuffer diffBuffer, ITextViewRoleSet previewRoleSet, DifferenceViewMode mode, double zoomLevel, CancellationToken cancellationToken ) { var diffViewer = _differenceViewerService.CreateDifferenceView( diffBuffer, previewRoleSet ); diffViewer.ViewMode = mode; // We use ConfigureAwait(true) to stay on the UI thread. await diffViewer .SizeToFitAsync(ThreadingContext, cancellationToken : cancellationToken) .ConfigureAwait(true); return(diffViewer); }
protected abstract Task <TDifferenceViewer> CreateDifferenceViewAsync(IDifferenceBuffer diffBuffer, ITextViewRoleSet previewRoleSet, DifferenceViewMode mode, double zoomLevel, CancellationToken cancellationToken);
protected override async Task <ICocoaDifferenceViewer> CreateDifferenceViewAsync(IDifferenceBuffer diffBuffer, ITextViewRoleSet previewRoleSet, DifferenceViewMode mode, double zoomLevel, CancellationToken cancellationToken) { var diffViewer = _differenceViewerService.CreateDifferenceView(diffBuffer, previewRoleSet); diffViewer.ViewMode = mode; const string DiffOverviewMarginName = "deltadifferenceViewerOverview"; if (mode == DifferenceViewMode.RightViewOnly) { diffViewer.RightHost.GetTextViewMargin(DiffOverviewMarginName).VisualElement.Hidden = true; } else if (mode == DifferenceViewMode.LeftViewOnly) { diffViewer.LeftHost.GetTextViewMargin(DiffOverviewMarginName).VisualElement.Hidden = true; } else { Contract.ThrowIfFalse(mode == DifferenceViewMode.Inline); diffViewer.InlineHost.GetTextViewMargin(DiffOverviewMarginName).VisualElement.Hidden = true; } // We use ConfigureAwait(true) to stay on the UI thread. await diffViewer.SizeToFitAsync(ThreadingContext, cancellationToken : cancellationToken).ConfigureAwait(true); return(diffViewer); }