diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs index 672c62c647..e6041b6dba 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs @@ -119,7 +119,7 @@ namespace ICSharpCode.AvalonEdit.Rendering DocumentChanged(this, EventArgs.Empty); } - /// + /// protected virtual bool ReceiveWeakEvent(Type managerType, object sender, EventArgs e) { if (managerType == typeof(TextDocumentWeakEventManager.Changing)) { @@ -800,6 +800,8 @@ namespace ICSharpCode.AvalonEdit.Rendering /// protected override Size ArrangeOverride(Size finalSize) { + if (!VisualLinesValid) + throw new VisualLinesInvalidException(); foreach (UIElement layer in layers) { layer.Arrange(new Rect(new Point(0, 0), finalSize)); } @@ -859,23 +861,13 @@ namespace ICSharpCode.AvalonEdit.Rendering void BackgroundRenderer_Added(IBackgroundRenderer renderer) { ConnectToTextView(renderer); - InvalidateVisualAndLayerVisuals(); + InvalidateLayer(renderer.Layer); } void BackgroundRenderer_Removed(IBackgroundRenderer renderer) { DisconnectFromTextView(renderer); - InvalidateVisualAndLayerVisuals(); - } - - void InvalidateVisualAndLayerVisuals() - { - InvalidateVisual(); - foreach (UIElement layer in this.Layers) { - // invalidate known layers - if (layer is Layer) - layer.InvalidateVisual(); - } + InvalidateLayer(renderer.Layer); } ///