delegates: remove ComboBoxTemplate::fixTabBehavior

The comment states that Qt treats TAB as cancel when in the combobox.
However, testing shows that this use-case works without this hack.
Since it caused weird behavior (the data was set *after* the editor
was closed, leading to inconsistent state), remove it.

Note: this overrides the previous commit, which is therefore redundant
from a history point of view. However, I'll leave the previous commit
in so that if something turns out to break, we can figure out which
of the two changes it was.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-04-04 23:02:32 +02:00
parent e5c4dee7f6
commit 7dc04b4437
2 changed files with 1 additions and 17 deletions

View file

@ -84,7 +84,6 @@ const QSize& StarWidgetsDelegate::starSize() const
ComboBoxDelegate::ComboBoxDelegate(QAbstractItemModel *model, QObject *parent, bool allowEdit) : QStyledItemDelegate(parent), model(model) ComboBoxDelegate::ComboBoxDelegate(QAbstractItemModel *model, QObject *parent, bool allowEdit) : QStyledItemDelegate(parent), model(model)
{ {
editable = allowEdit; editable = allowEdit;
connect(this, &ComboBoxDelegate::closeEditor, this, &ComboBoxDelegate::fixTabBehavior);
connect(this, &ComboBoxDelegate::closeEditor, this, &ComboBoxDelegate::editorClosed); connect(this, &ComboBoxDelegate::closeEditor, this, &ComboBoxDelegate::editorClosed);
} }
@ -121,7 +120,6 @@ QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewI
currCombo.currRow = index.row(); currCombo.currRow = index.row();
currCombo.model = const_cast<QAbstractItemModel *>(index.model()); currCombo.model = const_cast<QAbstractItemModel *>(index.model());
currCombo.activeText = currCombo.model->data(index).toString(); currCombo.activeText = currCombo.model->data(index).toString();
keyboardFinished = false;
// Current display of things on Gnome3 looks like shit, so // Current display of things on Gnome3 looks like shit, so
// let`s fix that. // let`s fix that.
@ -169,16 +167,6 @@ void ComboBoxDelegate::fakeActivation()
QStyledItemDelegate::eventFilter(currCombo.comboEditor, &ev); 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) bool ComboBoxDelegate::eventFilter(QObject *object, QEvent *event)
{ {
// Reacts on Key_UP and Key_DOWN to show the QComboBox - list of choices. // Reacts on Key_UP and Key_DOWN to show the QComboBox - list of choices.
@ -192,10 +180,8 @@ bool ComboBoxDelegate::eventFilter(QObject *object, QEvent *event)
return true; return true;
} }
} }
if (ev->key() == Qt::Key_Tab || ev->key() == Qt::Key_Enter || ev->key() == Qt::Key_Return) { if (ev->key() == Qt::Key_Tab || ev->key() == Qt::Key_Enter || ev->key() == Qt::Key_Return)
currCombo.activeText = currCombo.comboEditor->currentText(); currCombo.activeText = currCombo.comboEditor->currentText();
keyboardFinished = true;
}
} else { // the 'Drop Down Menu' part. } else { // the 'Drop Down Menu' part.
QKeyEvent *ev = static_cast<QKeyEvent *>(event); QKeyEvent *ev = static_cast<QKeyEvent *>(event);
if (ev->key() == Qt::Key_Enter || ev->key() == Qt::Key_Return || if (ev->key() == Qt::Key_Enter || ev->key() == Qt::Key_Return ||

View file

@ -44,11 +44,9 @@ slots:
void testActivation(const QModelIndex &currIndex); void testActivation(const QModelIndex &currIndex);
//HACK: try to get rid of this in the future. //HACK: try to get rid of this in the future.
void fakeActivation(); void fakeActivation();
void fixTabBehavior();
virtual void editorClosed(QWidget *widget, QAbstractItemDelegate::EndEditHint hint) = 0; virtual void editorClosed(QWidget *widget, QAbstractItemDelegate::EndEditHint hint) = 0;
private: private:
bool editable; bool editable;
mutable bool keyboardFinished;
protected: protected:
QAbstractItemModel *model; QAbstractItemModel *model;
mutable struct CurrSelected { mutable struct CurrSelected {