Keyboard sequence monitoring upgraded not to react on modifier keys, canceling multi-key sequences when non-first key modifier pressed

This commit is contained in:
Simon Rozman 2016-04-07 14:49:28 +02:00
parent 834743c7dd
commit 426b7a6227

View File

@ -54,13 +54,14 @@ bool wxZRColaKeyHandler::ProcessEvent(wxEvent& event)
{ {
if (event.GetEventType() == wxEVT_KEY_DOWN) { if (event.GetEventType() == wxEVT_KEY_DOWN) {
// The character event occured. // The character event occured.
wxKeyEvent &e = (wxKeyEvent&)event;
if (e.GetUnicodeKey() || !e.HasAnyModifiers()) {
ZRCola::keyseq_db::indexKey::size_type start, end; ZRCola::keyseq_db::indexKey::size_type start, end;
bool found; bool found;
wxFrame *pFrame = wxDynamicCast(wxTheApp->GetTopWindow(), wxFrame); wxFrame *pFrame = wxDynamicCast(wxTheApp->GetTopWindow(), wxFrame);
{ {
// Parse key event and save it at the end of the key sequence. // Parse key event and save it at the end of the key sequence.
wxKeyEvent &e = (wxKeyEvent&)event;
ZRCola::keyseq_db::keyseq::key_t key; ZRCola::keyseq_db::keyseq::key_t key;
key.key = e.GetKeyCode(); //wxToupper(e.m_uniChar); key.key = e.GetKeyCode(); //wxToupper(e.m_uniChar);
key.modifiers = key.modifiers =
@ -112,6 +113,7 @@ bool wxZRColaKeyHandler::ProcessEvent(wxEvent& event)
pFrame->SetStatusText(wxEmptyString); pFrame->SetStatusText(wxEmptyString);
} }
} }
}
return wxEvtHandler::ProcessEvent(event); return wxEvtHandler::ProcessEvent(event);
} }