From f55fe7bce6cabcd92fbd195fa549248a8c899e7b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafael=20Fern=C3=A1ndez=20L=C3=B3pez?= Date: Sun, 16 Dec 2007 02:14:15 +0000 Subject: [PATCH] The latest fix still had the same problem when dragging went out of the viewport and entered again. Non droppable places (e.g. files) were still drawn with MouseOver flag. This completely fixes the problem for all cases, the problem was the hovered cached index being updated at indexAt() method used for general purposes. Now it is updated on the MouseMove method, and this gives consistence. CCMAIL: peter.penz@gmx.at svn path=/trunk/KDE/kdebase/apps/; revision=748970 --- src/kcategorizedview.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/kcategorizedview.cpp b/src/kcategorizedview.cpp index d612f4b1c..42ee7b1ad 100644 --- a/src/kcategorizedview.cpp +++ b/src/kcategorizedview.cpp @@ -662,8 +662,6 @@ QModelIndex KCategorizedView::indexAt(const QPoint &point) const index = item[0]; } - d->hovered = index; - return index; } @@ -744,7 +742,10 @@ void KCategorizedView::paintEvent(QPaintEvent *event) option.state |= QStyle::State_Editing; } - if ((index == d->hovered) && !d->mouseButtonPressed && (this->state() != QAbstractItemView::DraggingState)) + // we are only interested to give the mouse over feedback when no + // dragging is happening (ereslibre) + if ((index == d->hovered) && !d->mouseButtonPressed && + (this->state() == QAbstractItemView::NoState)) option.state |= QStyle::State_MouseOver; else option.state &= ~QStyle::State_MouseOver; @@ -986,6 +987,17 @@ void KCategorizedView::mouseMoveEvent(QMouseEvent *event) return; } + QModelIndexList item = d->intersectionSet(QRect(event->pos(), event->pos())); + + if (item.count() == 1) + { + d->hovered = item[0]; + } + else + { + d->hovered = QModelIndex(); + } + const QString previousHoveredCategory = d->hoveredCategory; d->mousePosition = event->pos(); -- 2.47.3