Browse Source

Fixed bug in TextView.BackgroundRenderer_Added that could cause a VisualLinesInvalidException during rendering.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5066 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
82e6a42b97
  1. 18
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs

18
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs

@ -119,7 +119,7 @@ namespace ICSharpCode.AvalonEdit.Rendering
DocumentChanged(this, EventArgs.Empty); DocumentChanged(this, EventArgs.Empty);
} }
/// <inheritdoc/> /// <inheritdoc cref="IWeakEventListener.ReceiveWeakEvent"/>
protected virtual bool ReceiveWeakEvent(Type managerType, object sender, EventArgs e) protected virtual bool ReceiveWeakEvent(Type managerType, object sender, EventArgs e)
{ {
if (managerType == typeof(TextDocumentWeakEventManager.Changing)) { if (managerType == typeof(TextDocumentWeakEventManager.Changing)) {
@ -800,6 +800,8 @@ namespace ICSharpCode.AvalonEdit.Rendering
/// </summary> /// </summary>
protected override Size ArrangeOverride(Size finalSize) protected override Size ArrangeOverride(Size finalSize)
{ {
if (!VisualLinesValid)
throw new VisualLinesInvalidException();
foreach (UIElement layer in layers) { foreach (UIElement layer in layers) {
layer.Arrange(new Rect(new Point(0, 0), finalSize)); layer.Arrange(new Rect(new Point(0, 0), finalSize));
} }
@ -859,23 +861,13 @@ namespace ICSharpCode.AvalonEdit.Rendering
void BackgroundRenderer_Added(IBackgroundRenderer renderer) void BackgroundRenderer_Added(IBackgroundRenderer renderer)
{ {
ConnectToTextView(renderer); ConnectToTextView(renderer);
InvalidateVisualAndLayerVisuals(); InvalidateLayer(renderer.Layer);
} }
void BackgroundRenderer_Removed(IBackgroundRenderer renderer) void BackgroundRenderer_Removed(IBackgroundRenderer renderer)
{ {
DisconnectFromTextView(renderer); DisconnectFromTextView(renderer);
InvalidateVisualAndLayerVisuals(); InvalidateLayer(renderer.Layer);
}
void InvalidateVisualAndLayerVisuals()
{
InvalidateVisual();
foreach (UIElement layer in this.Layers) {
// invalidate known layers
if (layer is Layer)
layer.InvalidateVisual();
}
} }
/// <inheritdoc/> /// <inheritdoc/>

Loading…
Cancel
Save