/**
- * \file GuiPrefs.cpp
+ * \file CustomizedWidgets.cpp
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Bo Peng
* \author Edwin Leuven
- * \author Jürgen Spitzmüller
+ * \author Jürgen Spitzmüller
*
* Full author contact details are available in file CREDITS.
*/
ShortcutWidget::ShortcutWidget(QWidget * parent)
: QLabel(parent), keysequence_()
{
- QApplication::instance()->installEventFilter(this);
has_cursor_ = false;
setFrameShape(QFrame::Panel);
setFrameShadow(QFrame::Raised);
}
-bool ShortcutWidget::eventFilter(QObject * obj, QEvent * e)
-{
- if (!has_cursor_)
- return false;
-
- switch (e->type()) {
- // swallow these if we have focus and they come from elsewhere
- case QEvent::Shortcut:
- case QEvent::ShortcutOverride:
- if (obj != this)
- return true;
- default:
- break;
- }
- return false;
-}
-
-
KeySequence const ShortcutWidget::getKeySequence() const
{
return keysequence_;
}
-void ShortcutWidget::setKeySequence(lyx::KeySequence const s)
+void ShortcutWidget::setKeySequence(lyx::KeySequence const & s)
{
keysequence_ = s;
}
setFrameShadow(QFrame::Sunken);
break;
case QEvent::ShortcutOverride:
+ // accepting the ShortcutOverride event lets us override shortcuts
+ // and capture them as keypress events instead
+ e->accept();
+ return true;
+ case QEvent::KeyPress:
keyPressEvent(static_cast<QKeyEvent *>(e));
return true;
case QEvent::KeyRelease:
case QEvent::Shortcut:
- case QEvent::KeyPress:
return true;
- default:
+ default:
break;
}
return QLabel::event(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);
+ }
}