From 15bf95490629522479bd234e1f8ebcc29c8c20d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Fern=C3=A1ndez=20L=C3=B3pez?= Date: Thu, 20 Dec 2007 20:17:43 +0000 Subject: [PATCH] Now we have it: don't update the whole viewport, and be safe when drawing, so there are not parts forgetting to be updated svn path=/trunk/KDE/kdebase/apps/; revision=750990 --- src/kcategorizedview.cpp | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/kcategorizedview.cpp b/src/kcategorizedview.cpp index 582bda17ba..6fa7632f27 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())