diff options
author | John Fultz <jfultz@wolfram.com> | 2016-07-03 01:00:05 -0500 |
---|---|---|
committer | John Fultz <jfultz@wolfram.com> | 2016-07-03 01:00:05 -0500 |
commit | 63e3348ace58bb8cc990d418269df61f640fc234 (patch) | |
tree | 18e0af06231d3ab7efb9c09d392806f7aa434166 | |
parent | 6640912578e4d5a4567fd7ae20f0da2bf6fb7058 (diff) |
Support Shift+Enter to commit from move input field.
Also resets the focus back to the input field when
you press Shift+Enter.
-rw-r--r-- | quacker/boarddisplay.cpp | 26 | ||||
-rw-r--r-- | quacker/boarddisplay.h | 17 |
2 files changed, 41 insertions, 2 deletions
diff --git a/quacker/boarddisplay.cpp b/quacker/boarddisplay.cpp index 9dd49da..2f570c6 100644 --- a/quacker/boarddisplay.cpp +++ b/quacker/boarddisplay.cpp @@ -32,8 +32,9 @@ BoardWithQuickEntry::BoardWithQuickEntry(QWidget *parent) m_vlayout = new QVBoxLayout(this); Geometry::setupInnerLayout(m_vlayout); - m_lineEdit = new QLineEdit; + m_lineEdit = new QLineEditWithShiftReturn; connect(m_lineEdit, SIGNAL(returnPressed()), this, SLOT(quickEditReturnPressed())); + connect(m_lineEdit, SIGNAL(shiftReturnPressed()), this, SLOT(quickEditShiftReturnPressed())); QLabel *placeLabel = new QLabel(tr("Move: '<position> <word>' or 'exchange <tiles|number>'")); placeLabel->setBuddy(m_lineEdit); @@ -96,6 +97,13 @@ void BoardWithQuickEntry::quickEditReturnPressed() m_lineEdit->clear(); } +void BoardWithQuickEntry::quickEditShiftReturnPressed() +{ + quickEditReturnPressed(); + performCommit(); + m_lineEdit->setFocus(); +} + void BoardWithQuickEntry::plusFive() { m_localCandidateMove.setScoreAddition(m_localCandidateMove.scoreAddition() + 5); @@ -217,3 +225,19 @@ void TextBoard::positionChanged(const Quackle::GamePosition &position) //m_textEdit->setHtml(QString("<html><font size=\"+4\"><pre>%1</pre></font></html>").arg(QuackleIO::Util::uvStringToQString(position.boardAfterMoveMade().toString()))); m_textEdit->setPlainText(QString("%1").arg(QuackleIO::Util::uvStringToQString(position.boardAfterMoveMade().toString()))); } + +/////////// + +void QLineEditWithShiftReturn::keyPressEvent(QKeyEvent * e) +{ + if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter) + { + if (e->modifiers() & Qt::ShiftModifier) + { + emit shiftReturnPressed(); + return; + } + } + QLineEdit::keyPressEvent(e); +} + diff --git a/quacker/boarddisplay.h b/quacker/boarddisplay.h index 35ebcb7..fbb71c1 100644 --- a/quacker/boarddisplay.h +++ b/quacker/boarddisplay.h @@ -22,8 +22,10 @@ #include <move.h> #include "view.h" +#include <QLineEdit> class QLineEdit; +class QLineEditWithShiftReturn; class QPushButton; class QTextEdit; class QVBoxLayout; @@ -49,6 +51,7 @@ protected slots: private slots: void quickEditReturnPressed(); + void quickEditShiftReturnPressed(); void plusFive(); void performCommit(); void reset(); @@ -60,7 +63,7 @@ protected: QVBoxLayout *m_vlayout; private: - QLineEdit *m_lineEdit; + QLineEditWithShiftReturn *m_lineEdit; QPushButton *m_commitButton; Quackle::Move m_localCandidateMove; }; @@ -79,4 +82,16 @@ private: QTextEdit *m_textEdit; }; +class QLineEditWithShiftReturn : public QLineEdit +{ +Q_OBJECT + +signals: + void shiftReturnPressed(); + +public: + virtual void keyPressEvent(QKeyEvent * e); +}; + + #endif |