Browse Source

fix SD-1910 - IME support crashes when caret is in virtual space

pull/27/head
Siegfried Pammer 14 years ago
parent
commit
28047a4407
  1. 10
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs

10
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs

@ -163,9 +163,15 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -163,9 +163,15 @@ namespace ICSharpCode.AvalonEdit.Editing
VisualLine vl = textView.GetVisualLine(pos.Line);
if (vl == null) return EMPTY_RECT;
TextLine line = vl.GetTextLine(pos.VisualColumn);
double offset = vl.GetTextLineVisualYPosition(line, VisualYPosition.LineTop) - textView.ScrollOffset.Y;
Rect r = line.GetTextBounds(pos.VisualColumn, 1).First().Rectangle;
double offset = vl.GetTextLineVisualYPosition(line, VisualYPosition.TextTop) - textView.ScrollOffset.Y;
Rect r;
if (pos.VisualColumn < vl.VisualLengthWithEndOfLineMarker) {
r = line.GetTextBounds(pos.VisualColumn, 1).First().Rectangle;
r.Offset(-textView.ScrollOffset.X, offset);
} else {
r = new Rect(vl.GetVisualPosition(pos.VisualColumn, VisualYPosition.TextTop), new Size(textView.WideSpaceWidth, textView.DefaultLineHeight));
r.Offset(-textView.ScrollOffset);
}
// 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;

Loading…
Cancel
Save