Use the virtual API to clear a selection.
Reviewed-by: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com> Merge-request: 980 (cherry picked from commit e3cd651d92a9e550fe52360d1be6ae41d0f2ab85)bb10
parent
fde6021547
commit
3880eee2d0
|
|
@ -1145,11 +1145,8 @@ void QItemSelectionModel::clearSelection()
|
|||
Q_D(QItemSelectionModel);
|
||||
if (d->ranges.count() == 0 && d->currentSelection.count() == 0)
|
||||
return;
|
||||
QItemSelection selection = d->ranges;
|
||||
selection.merge(d->currentSelection, d->currentCommand);
|
||||
d->ranges.clear();
|
||||
d->currentSelection.clear();
|
||||
emit selectionChanged(QItemSelection(), selection);
|
||||
|
||||
select(QItemSelection(), Clear);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ private slots:
|
|||
void testDifferentModels();
|
||||
|
||||
void testValidRangesInSelectionsAfterReset();
|
||||
void testChainedSelectionClear();
|
||||
|
||||
private:
|
||||
QAbstractItemModel *model;
|
||||
|
|
@ -2655,5 +2656,58 @@ void tst_QItemSelectionModel::testValidRangesInSelectionsAfterReset()
|
|||
model.setStringList(strings);
|
||||
}
|
||||
|
||||
class DuplicateItemSelectionModel : public QItemSelectionModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
DuplicateItemSelectionModel(QItemSelectionModel *target, QAbstractItemModel *model, QObject *parent = 0)
|
||||
: QItemSelectionModel(model, parent), m_target(target)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
|
||||
{
|
||||
QItemSelectionModel::select(selection, command);
|
||||
m_target->select(selection, command);
|
||||
}
|
||||
|
||||
using QItemSelectionModel::select;
|
||||
|
||||
private:
|
||||
QItemSelectionModel *m_target;
|
||||
|
||||
};
|
||||
|
||||
void tst_QItemSelectionModel::testChainedSelectionClear()
|
||||
{
|
||||
QStringListModel model(QStringList() << "Apples" << "Pears");
|
||||
|
||||
QItemSelectionModel selectionModel(&model, 0);
|
||||
DuplicateItemSelectionModel duplicate(&selectionModel, &model, 0);
|
||||
|
||||
duplicate.select(model.index(0, 0), QItemSelectionModel::Select);
|
||||
|
||||
{
|
||||
QModelIndexList selectedIndexes = selectionModel.selection().indexes();
|
||||
QModelIndexList duplicatedIndexes = duplicate.selection().indexes();
|
||||
|
||||
QVERIFY(selectedIndexes.size() == duplicatedIndexes.size());
|
||||
QVERIFY(selectedIndexes.size() == 1);
|
||||
QVERIFY(selectedIndexes.first() == model.index(0, 0));
|
||||
}
|
||||
|
||||
duplicate.clearSelection();
|
||||
|
||||
{
|
||||
QModelIndexList selectedIndexes = selectionModel.selection().indexes();
|
||||
QModelIndexList duplicatedIndexes = duplicate.selection().indexes();
|
||||
|
||||
QVERIFY(selectedIndexes.size() == duplicatedIndexes.size());
|
||||
QVERIFY(selectedIndexes.size() == 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QItemSelectionModel)
|
||||
#include "tst_qitemselectionmodel.moc"
|
||||
|
|
|
|||
Loading…
Reference in New Issue