]> git.lyx.org Git - features.git/commitdiff
Patch from Ben M.: do not accept key events if we do not know what these keys
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Mon, 6 Jul 2009 16:14:20 +0000 (16:14 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Mon, 6 Jul 2009 16:14:20 +0000 (16:14 +0000)
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

src/frontends/qt4/CustomizedWidgets.cpp
src/frontends/qt4/GuiKeySymbol.cpp
src/frontends/qt4/GuiWorkArea.cpp

index 4ae2fe6f94daedb9ac13d2a987edda37239049c0..c29feba0e30e8dd82ac96412256478734cf0540e 100644 (file)
@@ -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);
+       }
 }
 
 
index 0770010f165d0a39735fc75fc348d70d5d2a227e..e5d3d796d96133e6329c32a3d39208da9837177b 100644 (file)
@@ -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;
 }
index 511c062e31d8efb6202d483b13fc8622becec6f5..0be7bad473411bcdfd175fe69b45fac00f198746 100644 (file)
@@ -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();
+       }
 }