diff --git a/qrenderdoc/Code/QRDUtils.h b/qrenderdoc/Code/QRDUtils.h index 2f62cd987..7662a4a5c 100644 --- a/qrenderdoc/Code/QRDUtils.h +++ b/qrenderdoc/Code/QRDUtils.h @@ -870,24 +870,6 @@ struct RDDialog QFileDialog::Options options = QFileDialog::Options()); }; -// useful delegate for enforcing a given size -#include - -class SizeDelegate : public QItemDelegate -{ -private: - Q_OBJECT - - QSize m_Size; - -public: - SizeDelegate(QSize size) : m_Size(size) {} - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const - { - return m_Size; - } -}; - class QGridLayout; void addGridLines(QGridLayout *grid); diff --git a/qrenderdoc/Widgets/Extended/RDTreeView.cpp b/qrenderdoc/Widgets/Extended/RDTreeView.cpp index 6adcf70d4..89662a4bf 100644 --- a/qrenderdoc/Widgets/Extended/RDTreeView.cpp +++ b/qrenderdoc/Widgets/Extended/RDTreeView.cpp @@ -25,8 +25,26 @@ #include "RDTreeView.h" #include +RDTreeViewDelegate::RDTreeViewDelegate(RDTreeView *view) : QStyledItemDelegate(view), m_View(view) +{ +} + +QSize RDTreeViewDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + QSize ret = QStyledItemDelegate::sizeHint(option, index); + + // expand by the margins + ret.setWidth(ret.width() + m_View->m_HorizMargin); + ret.setHeight(ret.height() + m_View->m_VertMargin); + + return ret; +} + RDTreeView::RDTreeView(QWidget *parent) : QTreeView(NULL) { + setItemDelegate(new RDTreeViewDelegate(this)); +} + } void RDTreeView::drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const diff --git a/qrenderdoc/Widgets/Extended/RDTreeView.h b/qrenderdoc/Widgets/Extended/RDTreeView.h index 307793ffe..29a5c66f3 100644 --- a/qrenderdoc/Widgets/Extended/RDTreeView.h +++ b/qrenderdoc/Widgets/Extended/RDTreeView.h @@ -24,8 +24,23 @@ #pragma once +#include #include +class RDTreeView; + +class RDTreeViewDelegate : public QStyledItemDelegate +{ +private: + Q_OBJECT + + RDTreeView *m_View; + +public: + RDTreeViewDelegate(RDTreeView *view); + QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; +}; + class RDTreeView : public QTreeView { Q_OBJECT @@ -33,8 +48,20 @@ public: explicit RDTreeView(QWidget *parent = 0); void setDrawBranches(bool draw) { m_DrawBranches = draw; } -private: + void setItemMargins(int horizontal, int vertical) + { + m_HorizMargin = horizontal; + m_VertMargin = vertical; + } + int horizontalItemMargin() { return m_HorizMargin; } + int verticalItemMargin() { return m_VertMargin; } +protected: void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const override; +private: bool m_DrawBranches = true; + + int m_HorizMargin = 3, m_VertMargin = 3; + + friend class RDTreeViewDelegate; }; diff --git a/qrenderdoc/Windows/EventBrowser.cpp b/qrenderdoc/Windows/EventBrowser.cpp index 346fbb078..e3b34df53 100644 --- a/qrenderdoc/Windows/EventBrowser.cpp +++ b/qrenderdoc/Windows/EventBrowser.cpp @@ -85,9 +85,6 @@ EventBrowser::EventBrowser(ICaptureContext &ctx, QWidget *parent) // becomes quickly infuriating to rearrange, just disable until that can be fixed. ui->events->header()->setSectionsMovable(false); - m_SizeDelegate = new SizeDelegate(QSize(0, 16)); - ui->events->setItemDelegate(m_SizeDelegate); - UpdateDurationColumn(); m_FindHighlight = new QTimer(this); @@ -141,7 +138,6 @@ EventBrowser::~EventBrowser() m_Ctx.BuiltinWindowClosed(this); m_Ctx.RemoveLogViewer(this); delete ui; - delete m_SizeDelegate; } void EventBrowser::OnLogfileLoaded() diff --git a/qrenderdoc/Windows/EventBrowser.h b/qrenderdoc/Windows/EventBrowser.h index b71a159f5..e2a037ad5 100644 --- a/qrenderdoc/Windows/EventBrowser.h +++ b/qrenderdoc/Windows/EventBrowser.h @@ -39,7 +39,6 @@ class RDTreeWidgetItem; class QTimer; class QTextStream; class FlowLayout; -class SizeDelegate; struct EventItemTag; class EventBrowser : public QFrame, public IEventBrowser, public ILogViewer @@ -123,7 +122,6 @@ private: rdctype::array m_Times; - SizeDelegate *m_SizeDelegate; QTimer *m_FindHighlight; FlowLayout *m_BookmarkStripLayout;