Fix sending of EVT_KEY_DOWN on wxGTK for non-ASCII characters

Instead of returning early if the keycode is invalid, try setting the unicode
character first, and if neither are valid, return.

Fixes #18054
This commit is contained in:
Scott Talbert
2019-01-26 20:49:16 -05:00
committed by paulcor
parent 0265139c11
commit eaee931011

View File

@@ -1071,14 +1071,10 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
wxLogTrace(TRACE_KEYS, wxT("\t-> wxKeyCode %ld"), key_code);
// sending unknown key events doesn't really make sense
if ( !key_code )
return false;
event.m_keyCode = key_code;
#if wxUSE_UNICODE
event.m_uniChar = gdk_keyval_to_unicode(key_code);
event.m_uniChar = gdk_keyval_to_unicode(key_code ? key_code : gdk_event->keyval);
if ( !event.m_uniChar && event.m_keyCode <= WXK_DELETE )
{
// Set Unicode key code to the ASCII equivalent for compatibility. E.g.
@@ -1088,6 +1084,10 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
}
#endif // wxUSE_UNICODE
// sending unknown key events doesn't really make sense
if ( !key_code && !event.m_uniChar )
return false;
// now fill all the other fields
wxFillOtherKeyEventFields(event, win, gdk_event);