From c2cb367753647f904d15e56f1dca1f05a5722821 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Thu, 10 Dec 2015 18:05:07 +0100 Subject: [PATCH] Remember QPersistentModelIndex rather than row for hover effect. --- src/modules/partition/gui/PartitionBarsView.cpp | 17 +++++++++-------- src/modules/partition/gui/PartitionBarsView.h | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/modules/partition/gui/PartitionBarsView.cpp b/src/modules/partition/gui/PartitionBarsView.cpp index d5f6c8e06..f2d726d11 100644 --- a/src/modules/partition/gui/PartitionBarsView.cpp +++ b/src/modules/partition/gui/PartitionBarsView.cpp @@ -40,7 +40,7 @@ static const int EXTENDED_PARTITION_MARGIN = 4; PartitionBarsView::PartitionBarsView( QWidget* parent ) : QAbstractItemView( parent ) - , m_hoveredRow( -1 ) + , m_hoveredIndex( QModelIndex() ) { setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); setFrameStyle( QFrame::NoFrame ); @@ -113,7 +113,8 @@ PartitionBarsView::drawSection( QPainter* painter, const QRect& rect_, int x, in QColor borderColor; - if ( index.row() == m_hoveredRow ) + if ( m_hoveredIndex.isValid() && + index == m_hoveredIndex ) { borderColor = palette().highlight().color(); painter->setBrush( color.lighter( 115 ) ); @@ -362,15 +363,15 @@ void PartitionBarsView::mouseMoveEvent( QMouseEvent* event ) { QModelIndex candidateIndex = indexAt( event->pos() ); - int oldHoveredRow = m_hoveredRow; + QPersistentModelIndex oldHoveredIndex = m_hoveredIndex; if ( candidateIndex.isValid() ) { - m_hoveredRow = candidateIndex.row(); + m_hoveredIndex = candidateIndex; } else - m_hoveredRow = -1; + m_hoveredIndex = QModelIndex(); - if ( oldHoveredRow != m_hoveredRow ) + if ( oldHoveredIndex != m_hoveredIndex ) { viewport()->repaint(); } @@ -380,9 +381,9 @@ PartitionBarsView::mouseMoveEvent( QMouseEvent* event ) void PartitionBarsView::leaveEvent( QEvent* event ) { - if ( m_hoveredRow > -1 ) + if ( m_hoveredIndex.isValid() ) { - m_hoveredRow = -1; + m_hoveredIndex = QModelIndex(); viewport()->repaint(); } } diff --git a/src/modules/partition/gui/PartitionBarsView.h b/src/modules/partition/gui/PartitionBarsView.h index a26629bac..289e7247a 100644 --- a/src/modules/partition/gui/PartitionBarsView.h +++ b/src/modules/partition/gui/PartitionBarsView.h @@ -72,7 +72,7 @@ private: QModelIndex index; }; inline QPair< QVector< Item >, qreal > computeItemsVector( const QModelIndex& parent ) const; - int m_hoveredRow; + QPersistentModelIndex m_hoveredIndex; }; #endif /* PARTITIONPREVIEW_H */