From 1c37bfa02e3e2869043b630f1d4ebd7a09477e70 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 25 Jan 2021 16:14:03 +0000 Subject: [PATCH] Fix painting issues when scrolling with pinned columns --- qrenderdoc/Widgets/Extended/RDHeaderView.cpp | 9 +++++++++ qrenderdoc/Widgets/Extended/RDHeaderView.h | 3 ++- qrenderdoc/Widgets/Extended/RDTableView.cpp | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Widgets/Extended/RDHeaderView.cpp b/qrenderdoc/Widgets/Extended/RDHeaderView.cpp index 44dcebdb4..efd5e5c16 100644 --- a/qrenderdoc/Widgets/Extended/RDHeaderView.cpp +++ b/qrenderdoc/Widgets/Extended/RDHeaderView.cpp @@ -23,11 +23,13 @@ ******************************************************************************/ #include "RDHeaderView.h" +#include #include #include #include #include #include +#include #include #include "Code/QRDUtils.h" @@ -497,6 +499,13 @@ void RDHeaderView::setColumnStretchHints(const QList &hints) resizeSectionsWithHints(); } +void RDHeaderView::setPinnedColumns(int numColumns, QAbstractScrollArea *scroll) +{ + m_pinnedColumns = numColumns; + QObject::connect(scroll->horizontalScrollBar(), &QScrollBar::valueChanged, + [this]() { viewport()->update(); }); +} + void RDHeaderView::setRootIndex(const QModelIndex &index) { QHeaderView::setRootIndex(index); diff --git a/qrenderdoc/Widgets/Extended/RDHeaderView.h b/qrenderdoc/Widgets/Extended/RDHeaderView.h index bc3b0d6cd..0634c2dec 100644 --- a/qrenderdoc/Widgets/Extended/RDHeaderView.h +++ b/qrenderdoc/Widgets/Extended/RDHeaderView.h @@ -27,6 +27,7 @@ #include class QLabel; +class QAbstractScrollArea; class RDHeaderView : public QHeaderView { @@ -62,7 +63,7 @@ public: void setColumnGroupRole(int role) { m_columnGroupRole = role; } int columnGroupRole() const { return m_columnGroupRole; } - void setPinnedColumns(int numColumns) { m_pinnedColumns = numColumns; } + void setPinnedColumns(int numColumns, QAbstractScrollArea *scroll); int pinnedColumns() const { return m_pinnedColumns; } void setCustomSizing(bool sizing) { m_customSizing = sizing; } bool customSizing() const { return m_customSizing; } diff --git a/qrenderdoc/Widgets/Extended/RDTableView.cpp b/qrenderdoc/Widgets/Extended/RDTableView.cpp index 0f1d0ac14..653ccc884 100644 --- a/qrenderdoc/Widgets/Extended/RDTableView.cpp +++ b/qrenderdoc/Widgets/Extended/RDTableView.cpp @@ -150,7 +150,7 @@ void RDTableView::setColumnGroupRole(int role) void RDTableView::setPinnedColumns(int numColumns) { m_pinnedColumns = numColumns; - m_horizontalHeader->setPinnedColumns(numColumns); + m_horizontalHeader->setPinnedColumns(numColumns, this); } void RDTableView::keyPressEvent(QKeyEvent *e)