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:
@@ -1071,14 +1071,10 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
|
|||||||
|
|
||||||
wxLogTrace(TRACE_KEYS, wxT("\t-> wxKeyCode %ld"), key_code);
|
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;
|
event.m_keyCode = key_code;
|
||||||
|
|
||||||
#if wxUSE_UNICODE
|
#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 )
|
if ( !event.m_uniChar && event.m_keyCode <= WXK_DELETE )
|
||||||
{
|
{
|
||||||
// Set Unicode key code to the ASCII equivalent for compatibility. E.g.
|
// Set Unicode key code to the ASCII equivalent for compatibility. E.g.
|
||||||
@@ -1088,6 +1084,10 @@ wxTranslateGTKKeyEventToWx(wxKeyEvent& event,
|
|||||||
}
|
}
|
||||||
#endif // wxUSE_UNICODE
|
#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
|
// now fill all the other fields
|
||||||
wxFillOtherKeyEventFields(event, win, gdk_event);
|
wxFillOtherKeyEventFields(event, win, gdk_event);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user