diff --git a/src/playlist/playlistdelegates.cpp b/src/playlist/playlistdelegates.cpp index af0c87f47..5a112d4b0 100644 --- a/src/playlist/playlistdelegates.cpp +++ b/src/playlist/playlistdelegates.cpp @@ -26,6 +26,7 @@ #include #include #include +#include const int PlaylistDelegateBase::kMinHeight = 19; @@ -66,7 +67,10 @@ QSize PlaylistDelegateBase::sizeHint(const QStyleOptionViewItem &option, const Q void PlaylistDelegateBase::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyledItemDelegate::paint(painter, Adjusted(option, index), index); - if (view_->header()->logicalIndexAt(QPoint(0,0)) == index.column()) { + QPoint top_left(-view_->horizontalScrollBar()->value(), + -view_->verticalScrollBar()->value()); + + if (view_->header()->logicalIndexAt(top_left) == index.column()) { if (index.data(Playlist::Role_StopAfter).toBool()) { QColor color(Qt::white); if (!index.data(Playlist::Role_IsCurrent).toBool() && @@ -91,7 +95,10 @@ void PlaylistDelegateBase::paint(QPainter* painter, const QStyleOptionViewItem& } QStyleOptionViewItemV4 PlaylistDelegateBase::Adjusted(const QStyleOptionViewItem& option, const QModelIndex& index) const { - if (view_->header()->logicalIndexAt(QPoint(0,0)) != index.column()) + QPoint top_left(-view_->horizontalScrollBar()->value(), + -view_->verticalScrollBar()->value()); + + if (view_->header()->logicalIndexAt(top_left) != index.column()) return option; QStyleOptionViewItemV4 ret(option); diff --git a/src/playlist/playlistview.cpp b/src/playlist/playlistview.cpp index 54905b258..32c1fd732 100644 --- a/src/playlist/playlistview.cpp +++ b/src/playlist/playlistview.cpp @@ -396,6 +396,10 @@ void PlaylistView::mousePressEvent(QMouseEvent *event) { } void PlaylistView::scrollContentsBy(int dx, int dy) { + if (dx) { + InvalidateCachedCurrentPixmap(); + } + QTreeView::scrollContentsBy(dx, dy); if (!currently_autoscrolling_) {