created selections, as well as inverting selections inside the same category.
CCMAIL: peter.penz@gmx.at
svn path=/trunk/KDE/kdebase/apps/; revision=714051
- selectionModel()->clear();
-
if (flags & QItemSelectionModel::Clear)
{
if (flags & QItemSelectionModel::Clear)
{
- d->lastSelection = QItemSelection();
+ if (!rect.intersects(d->categoryVisualRect(d->hoveredCategory)))
+ {
+ d->lastSelection = QItemSelection();
+ }
- QModelIndexList dirtyIndexes = d->intersectionSet(rect);
+ selectionModel()->clear();
- QItemSelection selection;
+ QModelIndexList dirtyIndexes = d->intersectionSet(rect);
if (!dirtyIndexes.count())
{
if (!dirtyIndexes.count())
{
- if (d->lastSelection.count())
+ if (!d->lastSelection.isEmpty() &&
+ (rect.intersects(d->categoryVisualRect(d->hoveredCategory)) || d->mouseButtonPressed))
{
selectionModel()->select(d->lastSelection, flags);
}
{
selectionModel()->select(d->lastSelection, flags);
}
+ QItemSelection selection;
+
if (!d->mouseButtonPressed)
{
selection = QItemSelection(dirtyIndexes[0], dirtyIndexes[0]);
if (!d->mouseButtonPressed)
{
selection = QItemSelection(dirtyIndexes[0], dirtyIndexes[0]);
initialPressPosition.setX(initialPressPosition.x() + horizontalOffset());
QItemSelection selection;
initialPressPosition.setX(initialPressPosition.x() + horizontalOffset());
QItemSelection selection;
+ QItemSelection deselection;
if (initialPressPosition == d->initialPressPosition)
{
if (initialPressPosition == d->initialPressPosition)
{
{
QModelIndex selectIndex = index.model()->index(index.row(), 0);
{
QModelIndex selectIndex = index.model()->index(index.row(), 0);
- selection << QItemSelectionRange(selectIndex);
+ if (!d->lastSelection.contains(selectIndex))
+ {
+ selection << QItemSelectionRange(selectIndex);
+ }
+ else
+ {
+ deselection << QItemSelectionRange(selectIndex);
+ }
}
selectionModel()->select(selection, QItemSelectionModel::Select);
}
selectionModel()->select(selection, QItemSelectionModel::Select);
+ selectionModel()->select(deselection, QItemSelectionModel::Deselect);