PDA

View Full Version : For why in latest qt version flag QItemSelectionModel::Toggle will be filtered



Ilya
1st December 2010, 06:51
Our project migrated from from qt 4.5 to 4.7.
In our code we created replacement for standard QItemSelectionModel in which we override method select(...), for getting behavior like we need. In method select(...) we have special logic for case QItemSelectionModel::Toggle. But in qt 4.7 in QAbstractItemView::mousePressEvent(...) added new code before calling setSelection(rect, command) :



if (command.testFlag(QItemSelectionModel::Toggle)) {
command &= ~QItemSelectionModel::Toggle;
d->ctrlDragSelectionFlag = d->selectionModel->isSelected(index) ? QItemSelectionModel::Deselect : QItemSelectionModel::Select;
command |= d->ctrlDragSelectionFlag;
}
setSelection(rect, command);


This code will filter flag QItemSelectionModel::Toggle. Because of that we can't getting any more flag in which set QItemSelectionModel::Toggle in overrides QItemSelectionModel::select(...). For why this changes and how now we can know, that need process Toggle flag.