┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kcategorizedview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/kcategorizedview.cpp')
-rw-r--r--src/kcategorizedview.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/kcategorizedview.cpp b/src/kcategorizedview.cpp
index 582bda17b..6fa7632f2 100644
--- a/src/kcategorizedview.cpp
+++ b/src/kcategorizedview.cpp
@@ -1040,7 +1040,8 @@ void KCategorizedView::mouseMoveEvent(QMouseEvent *event)
end = d->mousePosition;
}
- rect = QRect(start, end).intersected(viewport()->rect().adjusted(-16, -16, 16, 16));
+ rect = QRect(start, end).adjusted(-16, -16, 16, 16);
+ rect = rect.united(QRect(start, end).adjusted(16, 16, -16, -16)).intersected(viewport()->rect());
viewport()->update(rect);
}
@@ -1112,6 +1113,34 @@ void KCategorizedView::mouseReleaseEvent(QMouseEvent *event)
}
}
+ QRect rect;
+ if (!d->isDragging)
+ {
+ QPoint start, end, initialPressPosition;
+
+ initialPressPosition = d->initialPressPosition;
+
+ initialPressPosition.setY(initialPressPosition.y() - verticalOffset());
+ initialPressPosition.setX(initialPressPosition.x() - horizontalOffset());
+
+ if (d->initialPressPosition.x() > d->mousePosition.x() ||
+ d->initialPressPosition.y() > d->mousePosition.y())
+ {
+ start = d->mousePosition;
+ end = initialPressPosition;
+ }
+ else
+ {
+ start = initialPressPosition;
+ end = d->mousePosition;
+ }
+
+ rect = QRect(start, end).adjusted(-16, -16, 16, 16);
+ rect = rect.united(QRect(start, end).adjusted(16, 16, -16, -16)).intersected(viewport()->rect());
+
+ viewport()->update(rect);
+ }
+
if (d->hovered.isValid())
viewport()->update(visualRect(d->hovered));
else if (!d->hoveredCategory.isEmpty())