From 3bf805ec35398e8ad193678333d7eacaac71cf19 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 29 Nov 2019 12:08:03 +0000 Subject: [PATCH] Add 'expand all' menu to resource inspector --- qrenderdoc/Windows/ResourceInspector.cpp | 33 ++++++++++++++++++++++++ qrenderdoc/Windows/ResourceInspector.h | 1 + 2 files changed, 34 insertions(+) diff --git a/qrenderdoc/Windows/ResourceInspector.cpp b/qrenderdoc/Windows/ResourceInspector.cpp index 3c420e060..06b6cb1ca 100644 --- a/qrenderdoc/Windows/ResourceInspector.cpp +++ b/qrenderdoc/Windows/ResourceInspector.cpp @@ -25,7 +25,9 @@ #include "ResourceInspector.h" #include #include +#include #include "3rdparty/toolwindowmanager/ToolWindowManagerArea.h" +#include "Code/Resources.h" #include "Widgets/Extended/RDHeaderView.h" #include "ui_ResourceInspector.h" @@ -128,6 +130,10 @@ ResourceInspector::ResourceInspector(ICaptureContext &ctx, QWidget *parent) ui->relatedResources->setFont(Formatter::PreferredFont()); ui->resourceUsage->setFont(Formatter::PreferredFont()); + ui->initChunks->setContextMenuPolicy(Qt::CustomContextMenu); + QObject::connect(ui->initChunks, &RDTreeWidget::customContextMenuRequested, this, + &ResourceInspector::initChunks_contextMenu); + { RDHeaderView *header = new RDHeaderView(Qt::Horizontal, this); ui->relatedResources->setHeader(header); @@ -441,6 +447,33 @@ void ResourceInspector::resource_doubleClicked(const QModelIndex &index) HighlightUsage(); } +void ResourceInspector::initChunks_contextMenu(const QPoint &pos) +{ + RDTreeWidgetItem *item = ui->initChunks->itemAt(pos); + + QMenu contextMenu(this); + + QAction expandAll(tr("&Expand All"), this); + QAction collapseAll(tr("&Collapse All"), this); + + contextMenu.addAction(&expandAll); + contextMenu.addAction(&collapseAll); + + expandAll.setIcon(Icons::arrow_out()); + collapseAll.setIcon(Icons::arrow_in()); + + expandAll.setEnabled(item && item->childCount() > 0); + collapseAll.setEnabled(item && item->childCount() > 0); + + QObject::connect(&expandAll, &QAction::triggered, + [this, item]() { ui->initChunks->expandAllItems(item); }); + + QObject::connect(&collapseAll, &QAction::triggered, + [this, item]() { ui->initChunks->collapseAllItems(item); }); + + RDDialog::show(&contextMenu, ui->initChunks->viewport()->mapToGlobal(pos)); +} + void ResourceInspector::on_viewContents_clicked() { TextureDescription *tex = m_Ctx.GetTexture(m_Resource); diff --git a/qrenderdoc/Windows/ResourceInspector.h b/qrenderdoc/Windows/ResourceInspector.h index d7330b186..ab56ed7d5 100644 --- a/qrenderdoc/Windows/ResourceInspector.h +++ b/qrenderdoc/Windows/ResourceInspector.h @@ -65,6 +65,7 @@ public slots: // manual slots void resource_doubleClicked(const QModelIndex &index); + void initChunks_contextMenu(const QPoint &pos); private slots: void on_viewContents_clicked();