X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d6582821b61ba8270f712e0f26b2a3d7bf24116f..9af175d227f382e78f85174d1602782b5506ad57:/contrib/src/stc/stc.cpp.in diff --git a/contrib/src/stc/stc.cpp.in b/contrib/src/stc/stc.cpp.in index e4c51365a9..3a415e1f85 100644 --- a/contrib/src/stc/stc.cpp.in +++ b/contrib/src/stc/stc.cpp.in @@ -32,6 +32,7 @@ int wxForceScintillaLexers(void) extern LexerModule lmAVE; extern LexerModule lmConf; extern LexerModule lmCPP; + extern LexerModule lmNncrontab; extern LexerModule lmEiffel; extern LexerModule lmHTML; extern LexerModule lmLISP; @@ -48,6 +49,7 @@ int wxForceScintillaLexers(void) && &lmAVE && &lmConf && &lmCPP + && &lmNncrontab && &lmEiffel && &lmHTML && &lmLISP @@ -380,19 +382,40 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) { void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) { long key = evt.KeyCode(); - if (key <= 0xff && !iscntrl(key) && !m_lastKeyDownConsumed) { + +// printf("OnChar key:%%d consumed:%%d ctrl:%%d alt:%%d\n", +// key, m_lastKeyDownConsumed, evt.ControlDown(), evt.AltDown()); + + // AltGr keys??? + // \|@#¬[]{}?£$~ ã,õ,Ã,Õ, ñ, Ñ + + // On (some?) non-US keyboards the AltGr key is required to enter some + // common characters. It comes to us as both Alt and Ctrl down so we need + // to let the char through in that case, otherwise if only ctrl or only + // alt let's skip it. + bool ctrl = evt.ControlDown(); + bool alt = evt.AltDown(); + bool skip = (ctrl || alt && ! (ctrl && alt)); + + if (key <= 0xff && !iscntrl(key) && !m_lastKeyDownConsumed && !skip) { m_swx->DoAddChar(key); + return; } + evt.Skip(); } void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) { long key = evt.KeyCode(); - int processed = m_swx->DoKeyDown(key, - evt.ShiftDown(), - evt.ControlDown(), - evt.AltDown(), - &m_lastKeyDownConsumed); + bool shift = evt.ShiftDown(), + ctrl = evt.ControlDown(), + alt = evt.AltDown(); + + int processed = m_swx->DoKeyDown(key, shift, ctrl, alt, &m_lastKeyDownConsumed); + +// printf("key: %%d shift: %%d ctrl: %%d alt: %%d processed: %%d consumed: %%d\n", +// key, shift, ctrl, alt, processed, m_lastKeyDownConsumed); + if (!processed && !m_lastKeyDownConsumed) evt.Skip(); }