aboutsummaryrefslogtreecommitdiffhomepage
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
commitc8aeaed9896c3785c5a1f178e39f0714ae3900d3 (patch)
treebc39dbd8a9823c45a52878fcd6835e464a0ff8ac
parentff4b7da641c12e57cbff25cd826fb7a14882c747 (diff)
downloadscintilla-mirror-c8aeaed9896c3785c5a1f178e39f0714ae3900d3.tar.gz
Implement firstRectForCharacterRange so that composition popups appear near insertion.
-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;
}
//--------------------------------------------------------------------------------------------------