Another attempt to handle key events correctly for wxSTC

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12037 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2001-10-17 05:29:09 +00:00
parent df9176ab71
commit f3c2c22108
8 changed files with 134 additions and 50 deletions

View File

@@ -1834,19 +1834,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???
// \|@#<23>[]{}?<3F>$~ <20>,<2C>,<2C>,<2C>, <20>, <20>
// 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();
}