diff --git a/CHANGES.md b/CHANGES.md index ef63d010..c7682251 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,13 @@ Features: Bug fixes: +------------------------------------------------------------------------------ +version 2.2.2 (Unofficial), 2022-07-19 +------------------------------------------------------------------------------ + +Bug fixes: + * Correct unicode text entry behavior. (twanvl#121) + ------------------------------------------------------------------------------ version 2.2.1 (Unofficial), 2022-07-19 ------------------------------------------------------------------------------ diff --git a/CMakeLists.txt b/CMakeLists.txt index 96df4722..cbc3450a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.13) -project(magicseteditor VERSION 2.2.1) +project(magicseteditor VERSION 2.2.2) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) diff --git a/src/gui/symbol/part_list.cpp b/src/gui/symbol/part_list.cpp index 310b21c3..24445514 100644 --- a/src/gui/symbol/part_list.cpp +++ b/src/gui/symbol/part_list.cpp @@ -266,8 +266,10 @@ void SymbolPartList::onChar(wxKeyEvent& ev) { } break; default: - // See gui/value/text.cpp - #ifdef __WXMSW__ + // See gui/value/text.cpp + #if defined UNICODE + if (ev.GetUnicodeKey() >= WXK_SPACE) { + #elif defined __WXMSW__ if (ev.GetKeyCode() >= _(' ') && ev.GetKeyCode() == (int)ev.GetRawKeyCode()) { #else if (ev.GetKeyCode() >= _(' ') /*&& ev.GetKeyCode() == (int)ev.GetRawKeyCode()*/) { diff --git a/src/gui/value/text.cpp b/src/gui/value/text.cpp index 47b35968..cb705b27 100644 --- a/src/gui/value/text.cpp +++ b/src/gui/value/text.cpp @@ -482,8 +482,15 @@ bool TextValueEditor::onChar(wxKeyEvent& ev) { } } return true; - default: - #ifdef __WXMSW__ + default: + #if defined UNICODE + // I think in theory this works because the UnicodeKey is intended to be only character values. + // See the following link for pretty much an exact example of this type of handling. + // https://docs.wxwidgets.org/3.0/classwx_key_event.html#a3dccc5a254770931e5d8066ef47e7fb0 + // Most of the special keys (<32) are handled in the case structure above anyways. + // I tried to replicate the Numpad issue mentioned below, but couldn't - so unclear if that's still relevant. + if (ev.GetUnicodeKey() >= WXK_SPACE) { + #elif defined __WXMSW__ if (ev.GetKeyCode() >= _(' ') && ev.GetKeyCode() == (int)ev.GetRawKeyCode()) { // This check is need, otherwise pressing a key, say "0" on the numpad produces "a0" // (don't ask me why)