diff options
author | nyamatongwe <nyamatongwe@gmail.com> | 2013-04-17 13:25:30 +1000 |
---|---|---|
committer | nyamatongwe <nyamatongwe@gmail.com> | 2013-04-17 13:25:30 +1000 |
commit | c8aeaed9896c3785c5a1f178e39f0714ae3900d3 (patch) | |
tree | bc39dbd8a9823c45a52878fcd6835e464a0ff8ac | |
parent | ff4b7da641c12e57cbff25cd826fb7a14882c747 (diff) | |
download | scintilla-mirror-c8aeaed9896c3785c5a1f178e39f0714ae3900d3.tar.gz |
Implement firstRectForCharacterRange so that composition popups appear near insertion.
-rw-r--r-- | cocoa/ScintillaView.mm | 31 |
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; } //-------------------------------------------------------------------------------------------------- |