From 7ef19e4d7c019a39df81ecb82ca38388409f9b96 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Mon, 7 May 2012 21:43:17 +0200 Subject: [PATCH] fix exception occurring in IME support on AvalonDock layout changes --- .../ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs index 342f2173ba..4a1f38e92c 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs @@ -148,6 +148,9 @@ namespace ICSharpCode.AvalonEdit.Editing double offset = vl.GetTextLineVisualYPosition(line, VisualYPosition.LineTop) - textView.ScrollOffset.Y; Rect r = line.GetTextBounds(pos.VisualColumn, 1).First().Rectangle; r.Offset(-textView.ScrollOffset.X, offset); + // this may happen during layout changes in AvalonDock, so we just return an empty rectangle + // in those cases. It should be refreshed immediately. + if (!source.RootVisual.IsAncestorOf(textView)) return EMPTY_RECT; Point pointOnRootVisual = textView.TransformToAncestor(source.RootVisual).Transform(r.Location); Point pointOnHwnd = pointOnRootVisual.TransformToDevice(source.RootVisual); r.Location = pointOnHwnd;