diff options
author | David Faure <david.faure@kdab.com> | 2013-08-28 21:09:18 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-02 16:26:21 +0200 |
commit | 8f4b6f1cd166986f219e72a584fe19379880c2c5 (patch) | |
tree | 05b9994cb753d9cbf1485dc7f421eb162b69f3f0 /src/widgets/itemviews/qstyleditemdelegate.cpp | |
parent | 0a3eb0fe443f8158d81d97cde8f0c9a9632fb9f0 (diff) |
item delegates: fix clicking on tristate checkboxes.
QCheckBox cycles through the 3 states, but item delegates didn't
do that.
Change-Id: Iad1e464341033ca357925fe8064f53bb584459f4
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src/widgets/itemviews/qstyleditemdelegate.cpp')
-rw-r--r-- | src/widgets/itemviews/qstyleditemdelegate.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp index 7e1933ad1e..c1fa9fe28e 100644 --- a/src/widgets/itemviews/qstyleditemdelegate.cpp +++ b/src/widgets/itemviews/qstyleditemdelegate.cpp @@ -764,8 +764,11 @@ bool QStyledItemDelegate::editorEvent(QEvent *event, return false; } - Qt::CheckState state = (static_cast<Qt::CheckState>(value.toInt()) == Qt::Checked - ? Qt::Unchecked : Qt::Checked); + Qt::CheckState state = static_cast<Qt::CheckState>(value.toInt()); + if (flags & Qt::ItemIsTristate) + state = ((Qt::CheckState)((state + 1) % 3)); + else + state = (state == Qt::Checked) ? Qt::Unchecked : Qt::Checked; return model->setData(index, state, Qt::CheckStateRole); } |