From 54db4206e9302e7510bc4f103ff59714c1be942d Mon Sep 17 00:00:00 2001 From: Alexander Gavriliuk Date: Thu, 30 Nov 2023 14:09:50 +0100 Subject: SL-19801 Inserting emoji characters from system emoji picker does not work on macOS --- indra/llwindow/llopenglview-objc.mm | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'indra/llwindow') diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 7936245744..5527094021 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -718,6 +718,19 @@ attributedStringInfo getSegments(NSAttributedString *str) - (void)insertText:(id)aString replacementRange:(NSRange)replacementRange { + // SL-19801 Special workaround for system emoji picker + if ([aString length] == 2) + { + uint32_t b0 = [aString characterAtIndex:0]; + uint32_t b1 = [aString characterAtIndex:1]; + if (((b0 & 0xF000) == 0xD000) && ((b1 & 0xF000) == 0xD000)) + { + uint32_t b = 0x10000 | ((b0 & 0x3F) << 10) | (b1 & 0x3FF); + callUnicodeCallback(b, 0); + return; + } + } + if (!mHasMarkedText) { for (NSInteger i = 0; i < [aString length]; i++) -- cgit v1.2.3