diff options
-rw-r--r-- | quacker/graphicalboard.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/quacker/graphicalboard.cpp b/quacker/graphicalboard.cpp index b3af1ab..0b273f6 100644 --- a/quacker/graphicalboard.cpp +++ b/quacker/graphicalboard.cpp @@ -572,15 +572,19 @@ void GraphicalBoardFrame::keyPressEvent(QKeyEvent *event) break; case Append: - if (event->modifiers() & Qt::AltModifier && event->modifiers() & Qt::ControlModifier) + if (event->text().isEmpty() || + (event->text().at(0) >= 0xa8 && event->text().at(0) <= 0xb8) || // combining character + (event->text().at(0) >= 0x2b9 && event->text().at(0) <= 0x2ff)) // combining character + break; // let AltGr (Ctrl+Alt) and other composite keyboard events slip through + else if (event->modifiers() & Qt::AltModifier || event->modifiers() & Qt::ControlModifier) { - if (event->text().isEmpty()) - break; // let AltGr (Ctrl+Alt) events slip through - } - else if (event->modifiers() & Qt::AltModifier || event->modifiers() & Qt::ControlModifier || event->text().isEmpty()) - { - event->ignore(); - return; + if (!event->text().isEmpty() && + ((event->text().at(0) >= 'a' && event->text().at(0) <= 'z') || + (event->text().at(0) >= 'A' && event->text().at(0) <= 'Z'))) + { + event->ignore(); + return; + } } appendHandler(event->text(), event->modifiers() & Qt::ShiftModifier); |