Fix wxKeyEvent::m_uniChar for EVT_CHAR for native controls in wxGTK.
It was mistakenly set to the same value as in EVT_KEY_DOWN event but, just as m_keyCode, it may be different for EVT_CHAR. Use gdk_keyval_to_unicode() to set it correctly instead of inheriting EVT_KEY_DOWN value. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
7c8bfa876a
commit
d50905f761
@ -1012,10 +1012,9 @@ gtk_window_key_press_callback( GtkWidget *WXUNUSED(widget),
|
|||||||
// will only be sent if it is not in an accelerator table.
|
// will only be sent if it is not in an accelerator table.
|
||||||
if (!ret)
|
if (!ret)
|
||||||
{
|
{
|
||||||
long key_code;
|
|
||||||
KeySym keysym = gdk_event->keyval;
|
KeySym keysym = gdk_event->keyval;
|
||||||
// Find key code for EVT_CHAR and EVT_CHAR_HOOK events
|
// Find key code for EVT_CHAR and EVT_CHAR_HOOK events
|
||||||
key_code = wxTranslateKeySymToWXKey(keysym, true /* isChar */);
|
long key_code = wxTranslateKeySymToWXKey(keysym, true /* isChar */);
|
||||||
if ( !key_code )
|
if ( !key_code )
|
||||||
{
|
{
|
||||||
if ( wxIsAsciiKeysym(keysym) )
|
if ( wxIsAsciiKeysym(keysym) )
|
||||||
@ -1037,6 +1036,9 @@ gtk_window_key_press_callback( GtkWidget *WXUNUSED(widget),
|
|||||||
wxLogTrace(TRACE_KEYS, wxT("Char event: %ld"), key_code);
|
wxLogTrace(TRACE_KEYS, wxT("Char event: %ld"), key_code);
|
||||||
|
|
||||||
eventChar.m_keyCode = key_code;
|
eventChar.m_keyCode = key_code;
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
eventChar.m_uniChar = gdk_keyval_to_unicode(key_code);
|
||||||
|
#endif // wxUSE_UNICODE
|
||||||
|
|
||||||
AdjustCharEventKeyCodes(eventChar);
|
AdjustCharEventKeyCodes(eventChar);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user