From e2761461633b6d19e4073b66acd9ed2686c4a97e Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 18 Mar 2020 12:02:03 +0000 Subject: [PATCH] Fix RDHeaderView not properly updating in some cases --- qrenderdoc/Widgets/Extended/RDHeaderView.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Widgets/Extended/RDHeaderView.cpp b/qrenderdoc/Widgets/Extended/RDHeaderView.cpp index 7ef1dd29a..b3d125585 100644 --- a/qrenderdoc/Widgets/Extended/RDHeaderView.cpp +++ b/qrenderdoc/Widgets/Extended/RDHeaderView.cpp @@ -23,12 +23,12 @@ ******************************************************************************/ #include "RDHeaderView.h" -#include #include #include #include #include #include +#include #include "Code/QRDUtils.h" ///////////////////////////////////////////////////////////////////////////////// @@ -50,6 +50,15 @@ RDHeaderView::RDHeaderView(Qt::Orientation orient, QWidget *parent) : QHeaderVie m_sectionPreview = new QLabel(this); setDefaultAlignment(Qt::AlignLeft | Qt::AlignVCenter); + + QTreeView *treeView = qobject_cast(parent); + if(treeView) + { + QObject::connect(treeView, &QTreeView::expanded, + [this](const QModelIndex &) { rowsChanged(QModelIndex(), 0, 0); }); + QObject::connect(treeView, &QTreeView::collapsed, + [this](const QModelIndex &) { rowsChanged(QModelIndex(), 0, 0); }); + } } RDHeaderView::~RDHeaderView() @@ -87,6 +96,9 @@ void RDHeaderView::setModel(QAbstractItemModel *model) &RDHeaderView::columnsInserted); QObject::connect(model, &QAbstractItemModel::rowsInserted, this, &RDHeaderView::rowsChanged); QObject::connect(model, &QAbstractItemModel::rowsRemoved, this, &RDHeaderView::rowsChanged); + QObject::connect(model, &QAbstractItemModel::dataChanged, + [this](const QModelIndex &topLeft, const QModelIndex &bottomRight, + const QVector &roles) { rowsChanged(QModelIndex(), 0, 0); }); } } @@ -510,7 +522,7 @@ void RDHeaderView::columnsInserted(const QModelIndex &parent, int first, int las cacheSections(); } -void RDHeaderView::rowsChanged(const QModelIndex &parent, int first, int last) +void RDHeaderView::rowsChanged(const QModelIndex &, int, int) { if(!m_sectionStretchHints.isEmpty()) {