summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Fultz <jfultz@wolfram.com>2016-07-03 01:00:05 -0500
committerJohn Fultz <jfultz@wolfram.com>2016-07-03 01:00:05 -0500
commit63e3348ace58bb8cc990d418269df61f640fc234 (patch)
tree18e0af06231d3ab7efb9c09d392806f7aa434166
parent6640912578e4d5a4567fd7ae20f0da2bf6fb7058 (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.cpp26
-rw-r--r--quacker/boarddisplay.h17
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