From: Jean-Marc Lasgouttes Date: Mon, 6 Jul 2009 16:14:20 +0000 (+0000) Subject: Patch from Ben M.: do not accept key events if we do not know what these keys X-Git-Tag: 2.0.0~6152 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=5784b88f65612909623adf40db7888c8869cd717;p=features.git Patch from Ben M.: do not accept key events if we do not know what these keys stand for. This fixes bug #6043: Windows multimedia keys intercepted git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30389 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/qt4/CustomizedWidgets.cpp b/src/frontends/qt4/CustomizedWidgets.cpp index 4ae2fe6f94..c29feba0e3 100644 --- a/src/frontends/qt4/CustomizedWidgets.cpp +++ b/src/frontends/qt4/CustomizedWidgets.cpp @@ -141,10 +141,11 @@ void ShortcutWidget::appendToSequence(QKeyEvent * e) { KeySymbol sym; setKeySymbol(&sym, e); - - KeyModifier mod = lyx::q_key_state(e->modifiers()); - keysequence_.addkey(sym, mod, lyx::NoModifier); + if (sym.isOK()) { + KeyModifier mod = lyx::q_key_state(e->modifiers()); + keysequence_.addkey(sym, mod, lyx::NoModifier); + } } diff --git a/src/frontends/qt4/GuiKeySymbol.cpp b/src/frontends/qt4/GuiKeySymbol.cpp index 0770010f16..e5d3d796d9 100644 --- a/src/frontends/qt4/GuiKeySymbol.cpp +++ b/src/frontends/qt4/GuiKeySymbol.cpp @@ -638,7 +638,7 @@ void KeySymbol::init(string const & symbolname) bool KeySymbol::isOK() const { - bool const ok = !(text_.empty() && key_ == Qt::Key_unknown); + bool const ok = !(text_.empty() && qkey_to_string(key_).empty()); LYXERR(Debug::KEY, "isOK is " << ok); return ok; } diff --git a/src/frontends/qt4/GuiWorkArea.cpp b/src/frontends/qt4/GuiWorkArea.cpp index 511c062e31..0be7bad473 100644 --- a/src/frontends/qt4/GuiWorkArea.cpp +++ b/src/frontends/qt4/GuiWorkArea.cpp @@ -902,8 +902,12 @@ void GuiWorkArea::keyPressEvent(QKeyEvent * ev) KeySymbol sym; setKeySymbol(&sym, ev); - processKeySym(sym, q_key_state(ev->modifiers())); - ev->accept(); + if (sym.isOK()) { + processKeySym(sym, q_key_state(ev->modifiers())); + ev->accept(); + } else { + ev->ignore(); + } }