From 30fbb9405335ff9a2843a35e1bfe26b22bb114e7 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Mon, 10 Jul 2023 10:49:31 +0200 Subject: [PATCH] Send key down events ourselves if macOS didn't do it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set a flag in insertText and send wxEVT_KEY_DOWN ourselves from DoHandleKeyEvent() if it wasn't set to ensure that we generate these events for the keys ignored by the standard insertText, such as ⌘+⎇+Letter combination. Closes #23671. See #23699. --- src/osx/cocoa/window.mm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index 17489beca0..7e6ebbf310 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -2166,6 +2166,7 @@ void wxWidgetCocoaImpl::insertText(NSString* text, WXWidget slf, void *_cmd) wxKeyEvent wxevent(wxEVT_KEY_DOWN); SetupKeyEvent( wxevent, GetLastNativeKeyDownEvent() ); result = GetWXPeer()->OSXHandleKeyEvent(wxevent); + SetKeyDownSent(); } // ...and wxEVT_CHAR. @@ -3883,6 +3884,15 @@ bool wxWidgetCocoaImpl::DoHandleKeyEvent(NSEvent *event) [[(NSScrollView*)m_osxView documentView] interpretKeyEvents:[NSArray arrayWithObject:event]]; else [m_osxView interpretKeyEvents:[NSArray arrayWithObject:event]]; + + if ( IsInNativeKeyDown() && !WasKeyDownSent()) + { + wxLogTrace(TRACE_KEYS, "Emulating missing key down event"); + + wxKeyEvent wxevent(wxEVT_KEY_DOWN); + SetupKeyEvent( wxevent, GetLastNativeKeyDownEvent() ); + GetWXPeer()->OSXHandleKeyEvent(wxevent); + } return true; } else