aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui/tagwidget.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2014-05-16 15:12:46 +0900
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-05-18 14:32:15 +0900
commit6d42a99e7f6d3ea3a9c977604c7cc980a4215f18 (patch)
tree8fed51d0cf5bac1fa64dcdd8fb35b15da97b0dd5 /qt-ui/tagwidget.cpp
parent531a5db2f182164e5344344e3678245215a430d0 (diff)
downloadsubsurface-6d42a99e7f6d3ea3a9c977604c7cc980a4215f18.tar.gz
Improve the tag widget to allow us to tab to the next field
If the last key that went in ended a tag and the next key is a tab - deliver that to the TabWidget instead so we can navigate between input fields. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/tagwidget.cpp')
-rw-r--r--qt-ui/tagwidget.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/qt-ui/tagwidget.cpp b/qt-ui/tagwidget.cpp
index dfeeac537..432aea923 100644
--- a/qt-ui/tagwidget.cpp
+++ b/qt-ui/tagwidget.cpp
@@ -4,8 +4,9 @@
#include <QAbstractItemView>
#include <QSettings>
#include <QFont>
+#include "mainwindow.h"
-TagWidget::TagWidget(QWidget *parent) : GroupedLineEdit(parent), m_completer(NULL)
+TagWidget::TagWidget(QWidget *parent) : GroupedLineEdit(parent), m_completer(NULL), lastFinishedTag(false)
{
connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(reparse()));
connect(this, SIGNAL(textChanged()), this, SLOT(reparse()));
@@ -176,6 +177,7 @@ void TagWidget::keyPressEvent(QKeyEvent *e)
{
QPair<int, int> pos;
QAbstractItemView *popup;
+ bool finishedTag = false;
switch (e->key()) {
case Qt::Key_Escape:
pos = getCursorTagPosition();
@@ -199,13 +201,17 @@ void TagWidget::keyPressEvent(QKeyEvent *e)
if (popup)
popup->hide();
}
+ finishedTag = true;
}
- if (e->key() == Qt::Key_Tab || e->key() == Qt::Key_Return) { // let's pretend this is a comma instead
+ if (e->key() == Qt::Key_Tab && lastFinishedTag) { // if we already end in comma, go to next/prev field
+ MainWindow::instance()->information()->nextInputField(e); // by sending the key event to the MainTab widget
+ } else if (e->key() == Qt::Key_Tab || e->key() == Qt::Key_Return) { // otherwise let's pretend this is a comma instead
QKeyEvent fakeEvent(e->type(), Qt::Key_Comma, e->modifiers(), QString(","));
GroupedLineEdit::keyPressEvent(&fakeEvent);
} else {
GroupedLineEdit::keyPressEvent(e);
}
+ lastFinishedTag = finishedTag;
}
void TagWidget::wheelEvent(QWheelEvent *event)