X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FCustomizedWidgets.cpp;h=c29feba0e30e8dd82ac96412256478734cf0540e;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=2e9bbca6d551eaec234ad655a75dfd7d2820af59;hpb=ba76bf5eb85db5a10839fccee3430d906d3f7b70;p=lyx.git diff --git a/src/frontends/qt4/CustomizedWidgets.cpp b/src/frontends/qt4/CustomizedWidgets.cpp index 2e9bbca6d5..c29feba0e3 100644 --- a/src/frontends/qt4/CustomizedWidgets.cpp +++ b/src/frontends/qt4/CustomizedWidgets.cpp @@ -5,12 +5,13 @@ * * \author Bo Peng * \author Edwin Leuven + * \author Jürgen Spitzmüller * * Full author contact details are available in file CREDITS. */ /* - The code for the ShortcutLineEdit class was adapted from + The code for the ShortcutWidget class was adapted from kkeysequencewidget.cpp, which is part of the KDE libraries. Copyright (C) 1998 Mark Donohoe Copyright (C) 2001 Ellis Whitehead @@ -26,6 +27,9 @@ #include "GuiKeySymbol.h" #include +#include +#include +#include #include "support/qstring_helpers.h" @@ -38,22 +42,27 @@ using lyx::toqstr; namespace lyx { namespace frontend { -ShortcutLineEdit::ShortcutLineEdit(QWidget * parent) - : QLineEdit(parent), keysequence_() +ShortcutWidget::ShortcutWidget(QWidget * parent) + : QLabel(parent), keysequence_() { QApplication::instance()->installEventFilter(this); has_cursor_ = false; + setFrameShape(QFrame::Panel); + setFrameShadow(QFrame::Raised); + setLineWidth(3); + setFocusPolicy(Qt::StrongFocus); + setAlignment(Qt::AlignCenter); } -void ShortcutLineEdit::reset() +void ShortcutWidget::reset() { clear(); keysequence_ = KeySequence(); } -bool ShortcutLineEdit::eventFilter(QObject * obj, QEvent * e) +bool ShortcutWidget::eventFilter(QObject * obj, QEvent * e) { if (!has_cursor_) return false; @@ -66,18 +75,24 @@ bool ShortcutLineEdit::eventFilter(QObject * obj, QEvent * e) return true; default: break; - } + } return false; } -KeySequence const ShortcutLineEdit::getKeySequence() const +KeySequence const ShortcutWidget::getKeySequence() const { return keysequence_; } -void ShortcutLineEdit::keyPressEvent(QKeyEvent * e) +void ShortcutWidget::setKeySequence(lyx::KeySequence const s) +{ + keysequence_ = s; +} + + +void ShortcutWidget::keyPressEvent(QKeyEvent * e) { int const keyQt = e->key(); if (!keyQt) @@ -97,14 +112,16 @@ void ShortcutLineEdit::keyPressEvent(QKeyEvent * e) } -bool ShortcutLineEdit::event(QEvent * e) +bool ShortcutWidget::event(QEvent * e) { switch (e->type()) { case QEvent::FocusOut: has_cursor_ = false; + setFrameShadow(QFrame::Raised); break; case QEvent::FocusIn: has_cursor_ = true; + setFrameShadow(QFrame::Sunken); break; case QEvent::ShortcutOverride: keyPressEvent(static_cast(e)); @@ -116,21 +133,29 @@ bool ShortcutLineEdit::event(QEvent * e) default: break; } - return QLineEdit::event(e); + return QLabel::event(e); } -void ShortcutLineEdit::appendToSequence(QKeyEvent * e) +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); + } +} + + +void ShortcutWidget::removeFromSequence() +{ + keysequence_.removeKey(); + setText(toqstr(keysequence_.print(KeySequence::ForGui))); } } // namespace frontend } // namespace lyx -#include "CustomizedWidgets_moc.cpp" +#include "moc_CustomizedWidgets.cpp"