Fix Tab key edition on the Equipment table [patch]
Tomaz Canabrava
tcanabrava at kde.org
Tue Oct 15 09:25:04 UTC 2013
The following changes since commit e93f96a8ebfb38696c964f9a0af28eadccf8d1a2:
Add test dive with tank pressure sensor information (2013-10-15 04:12:16
-0700)
are available in the git repository at:
tabOnEquipmentEdit
for you to fetch changes up to 28b458e8d9dd774b4d54d97788d7d00e650cc328:
Fixed the Tab behavior on the QCombobox Delegate (2013-10-15 13:11:35
-0300)
----------------------------------------------------------------
Tomaz Canabrava (1):
Fixed the Tab behavior on the QCombobox Delegate
qt-ui/modeldelegates.cpp | 18 +++++++++++++++++-
qt-ui/modeldelegates.h | 1 +
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/qt-ui/modeldelegates.cpp b/qt-ui/modeldelegates.cpp
index a4f457f..d1e2839 100644
--- a/qt-ui/modeldelegates.cpp
+++ b/qt-ui/modeldelegates.cpp
@@ -22,6 +22,7 @@
// Gets the index of the model in the currentRow and column.
// currCombo is defined below.
#define IDX( XX ) mymodel->index(currCombo.currRow, XX)
+static bool keyboardFinished = false;
StarWidgetsDelegate::StarWidgetsDelegate(QWidget* parent):
QStyledItemDelegate(parent),
@@ -91,11 +92,12 @@ QWidget* ComboBoxDelegate::createEditor(QWidget*
parent, const QStyleOptionViewI
comboDelegate->lineEdit()->installEventFilter(
const_cast<QObject*>(qobject_cast<const QObject*>(this)));
comboDelegate->view()->installEventFilter(
const_cast<QObject*>(qobject_cast<const QObject*>(this)));
connect(comboDelegate, SIGNAL(highlighted(QString)), this,
SLOT(testActivation(QString)));
- connect(comboDelegate->lineEdit(), SIGNAL(editingFinished()), this,
SLOT(testActivation()));
connect(comboDelegate, SIGNAL(activated(QString)), this,
SLOT(fakeActivation()));
+ connect(this,
SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this,
SLOT(fixTabBehavior()));
currCombo.comboEditor = comboDelegate;
currCombo.currRow = index.row();
currCombo.model = const_cast<QAbstractItemModel*>(index.model());
+ keyboardFinished = false;
// Current display of things on Gnome3 looks like shit, so
// let`s fix that.
@@ -137,6 +139,16 @@ void ComboBoxDelegate::fakeActivation(){
QStyledItemDelegate::eventFilter(currCombo.comboEditor, &ev);
}
+// This 'reverts' the model data to what we actually choosed,
+// becaus e a TAB is being understood by Qt as 'cancel' while
+// we are on a QComboBox ( but not on a QLineEdit.
+void ComboBoxDelegate::fixTabBehavior()
+{
+ if(keyboardFinished){
+ setModelData(0,0,QModelIndex());
+ }
+}
+
bool ComboBoxDelegate::eventFilter(QObject* object, QEvent* event)
{
// Reacts on Key_UP and Key_DOWN to show the QComboBox - list of
choices.
@@ -147,6 +159,10 @@ bool ComboBoxDelegate::eventFilter(QObject* object,
QEvent* event)
currCombo.ignoreSelection = true;
currCombo.comboEditor->showPopup();
}
+ if(ev->key() == Qt::Key_Tab || ev->key() ==
Qt::Key_Enter || ev->key() == Qt::Key_Return){
+ currCombo.activeText =
currCombo.comboEditor->currentText();
+ keyboardFinished = true;
+ }
}
else{ // the 'Drop Down Menu' part.
QKeyEvent *ev = static_cast<QKeyEvent*>(event);
diff --git a/qt-ui/modeldelegates.h b/qt-ui/modeldelegates.h
index a16e472..9fade15 100644
--- a/qt-ui/modeldelegates.h
+++ b/qt-ui/modeldelegates.h
@@ -27,6 +27,7 @@ public slots:
void testActivation(const QString& currString = QString());
//HACK: try to get rid of this in the future.
void fakeActivation();
+ void fixTabBehavior();
virtual void revertModelData(QWidget* widget,
QAbstractItemDelegate::EndEditHint hint) = 0;
protected:
QAbstractItemModel *model;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hohndel.org/pipermail/subsurface/attachments/20131015/40681122/attachment-0001.html>
More information about the subsurface
mailing list