From 2205a61ae6a2abb4c54a5ff0b7e01bf25157b484 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 16 Aug 2022 13:41:27 +0200 Subject: [PATCH 1/2] Speculative fix for FIRE-31473: Accessing "characters" property outside key-up or key-down event is not allowed according to the API doc - not sure if flagsChanged does count as such though (hopefully it compiles...) --- indra/llwindow/llopenglview-objc.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 475eb5489b..896ee1ce62 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -549,7 +549,9 @@ attributedStringInfo getSegments(NSAttributedString *str) if (mModifiers & mask) { eventData.mKeyEvent = NativeKeyEventData::KEYDOWN; - callKeyDown(&eventData, [theEvent keyCode], 0, [[theEvent characters] characterAtIndex:0]); + // Speculative fix for FIRE-31473 + //callKeyDown(&eventData, [theEvent keyCode], 0, [[theEvent characters] characterAtIndex:0]); + callKeyDown(&eventData, [theEvent keyCode], 0, L'\0']); } else { From 0243626011d67be2499d9bfff2eac77f6f11ea71 Mon Sep 17 00:00:00 2001 From: Mnikolenko ProductEngine Date: Fri, 11 Mar 2022 13:41:06 +0200 Subject: [PATCH 2/2] SL-16985 FIXED [Mac] Key combinations for diacritical marks are not working --- indra/llwindow/llopenglview-objc.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 896ee1ce62..2fe8d4b69f 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -505,14 +505,14 @@ attributedStringInfo getSegments(NSAttributedString *str) // e.g. OS Window for upload something or Input Window... // mModifiers instance variable is for insertText: or insertText:replacementRange: (by Pell Smit) mModifiers = [theEvent modifierFlags]; + unichar ch = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]; + bool acceptsText = mHasMarkedText ? false : callKeyDown(&eventData, keycode, mModifiers, ch); - bool acceptsText = mHasMarkedText ? false : callKeyDown(&eventData, keycode, mModifiers, [[theEvent characters] characterAtIndex:0]); - unichar ch; if (acceptsText && !mMarkedTextAllowed && !(mModifiers & (NSControlKeyMask | NSCommandKeyMask)) && // commands don't invoke InputWindow ![(LLAppDelegate*)[NSApp delegate] romanScript] && - (ch = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]) > ' ' && + ch > ' ' && ch != NSDeleteCharacter && (ch < 0xF700 || ch > 0xF8FF)) // 0xF700-0xF8FF: reserved for function keys on the keyboard(from NSEvent.h) {