aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa/ScintillaView.mm
diff options
context:
space:
mode:
authornyamatongwe <nyamatongwe@gmail.com>2013-04-17 13:25:30 +1000
committernyamatongwe <nyamatongwe@gmail.com>2013-04-17 13:25:30 +1000
commitc597bc3b2ad86c3a6f2e0848a69df9d5060deb41 (patch)
treef022430c5bf47e8a1f5ac820bf86299735a88a20 /cocoa/ScintillaView.mm
parent6e7d78f6421100f2ed96b262d5fde3b7f84045df (diff)
downloadscintilla-mirror-c597bc3b2ad86c3a6f2e0848a69df9d5060deb41.tar.gz
Implement firstRectForCharacterRange so that composition popups appear near insertion.
Diffstat (limited to 'cocoa/ScintillaView.mm')
-rw-r--r--cocoa/ScintillaView.mm31
1 files changed, 28 insertions, 3 deletions
diff --git a/cocoa/ScintillaView.mm b/cocoa/ScintillaView.mm
index 0b8fddf56..e01a2bf40 100644
--- a/cocoa/ScintillaView.mm
+++ b/cocoa/ScintillaView.mm
@@ -324,9 +324,34 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor)
//--------------------------------------------------------------------------------------------------
-- (NSRect) firstRectForCharacterRange: (NSRange) range
-{
- return NSZeroRect;
+- (NSRect) firstRectForCharacterRange: (NSRange) aRange
+{
+ NSRect rect;
+ rect.origin.x = [ScintillaView directCall: mOwner
+ message: SCI_POINTXFROMPOSITION
+ wParam: 0
+ lParam: aRange.location];
+ rect.origin.y = [ScintillaView directCall: mOwner
+ message: SCI_POINTYFROMPOSITION
+ wParam: 0
+ lParam: aRange.location];
+ int rangeEnd = aRange.location + aRange.length;
+ rect.size.width = [ScintillaView directCall: mOwner
+ message: SCI_POINTXFROMPOSITION
+ wParam: 0
+ lParam: rangeEnd] - rect.origin.x;
+ rect.size.height = [ScintillaView directCall: mOwner
+ message: SCI_POINTYFROMPOSITION
+ wParam: 0
+ lParam: rangeEnd] - rect.origin.y;
+ rect.size.height += [ScintillaView directCall: mOwner
+ message: SCI_TEXTHEIGHT
+ wParam: 0
+ lParam: 0];
+ rect = [[[self superview] superview] convertRect:rect toView:nil];
+ rect = [self.window convertRectToScreen:rect];
+
+ return rect;
}
//--------------------------------------------------------------------------------------------------