mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 10:00:40 +00:00
Add right-click context menu to event browser with expand/collapse all
This commit is contained in:
@@ -503,6 +503,33 @@ void RDTreeWidget::expandItem(RDTreeWidgetItem *item)
|
||||
expand(m_model->indexForItem(item, 0));
|
||||
}
|
||||
|
||||
void RDTreeWidget::expandAllItems(RDTreeWidgetItem *item)
|
||||
{
|
||||
expandItem(item);
|
||||
|
||||
for(int c = 0; c < item->childCount(); c++)
|
||||
{
|
||||
RDTreeWidgetItem *child = item->child(c);
|
||||
expandAllItems(child);
|
||||
}
|
||||
}
|
||||
|
||||
void RDTreeWidget::collapseItem(RDTreeWidgetItem *item)
|
||||
{
|
||||
collapse(m_model->indexForItem(item, 0));
|
||||
}
|
||||
|
||||
void RDTreeWidget::collapseAllItems(RDTreeWidgetItem *item)
|
||||
{
|
||||
collapseItem(item);
|
||||
|
||||
for(int c = 0; c < item->childCount(); c++)
|
||||
{
|
||||
RDTreeWidgetItem *child = item->child(c);
|
||||
collapseAllItems(child);
|
||||
}
|
||||
}
|
||||
|
||||
void RDTreeWidget::scrollToItem(RDTreeWidgetItem *node)
|
||||
{
|
||||
scrollTo(m_model->indexForItem(node, 0));
|
||||
|
||||
@@ -175,6 +175,9 @@ public:
|
||||
RDTreeWidgetItem *itemAt(const QPoint &p) const;
|
||||
RDTreeWidgetItem *itemAt(int x, int y) const { return itemAt(QPoint(x, y)); }
|
||||
void expandItem(RDTreeWidgetItem *item);
|
||||
void expandAllItems(RDTreeWidgetItem *item);
|
||||
void collapseItem(RDTreeWidgetItem *item);
|
||||
void collapseAllItems(RDTreeWidgetItem *item);
|
||||
void scrollToItem(RDTreeWidgetItem *node);
|
||||
|
||||
void clear();
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
#include "EventBrowser.h"
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QShortcut>
|
||||
#include <QTimer>
|
||||
#include "3rdparty/flowlayout/FlowLayout.h"
|
||||
@@ -123,6 +124,10 @@ EventBrowser::EventBrowser(ICaptureContext &ctx, QWidget *parent)
|
||||
QObject::connect(sc, &QShortcut::activated, this, &EventBrowser::on_stepNext_clicked);
|
||||
}
|
||||
|
||||
ui->events->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
QObject::connect(ui->events, &RDTreeWidget::customContextMenuRequested, this,
|
||||
&EventBrowser::events_contextMenu);
|
||||
|
||||
OnLogfileClosed();
|
||||
}
|
||||
|
||||
@@ -642,6 +647,39 @@ void EventBrowser::events_keyPress(QKeyEvent *event)
|
||||
}
|
||||
}
|
||||
|
||||
void EventBrowser::events_contextMenu(const QPoint &pos)
|
||||
{
|
||||
if(!m_Ctx.LogLoaded())
|
||||
return;
|
||||
|
||||
RDTreeWidgetItem *item = ui->events->itemAt(pos);
|
||||
|
||||
if(item)
|
||||
{
|
||||
QMenu contextMenu(this);
|
||||
|
||||
QAction expandAll(tr("Expand All"), this);
|
||||
QAction collapseAll(tr("Collapse All"), this);
|
||||
|
||||
contextMenu.addAction(&expandAll);
|
||||
contextMenu.addAction(&collapseAll);
|
||||
|
||||
expandAll.setIcon(Icons::fit_window());
|
||||
collapseAll.setIcon(Icons::arrow_in());
|
||||
|
||||
expandAll.setEnabled(item->childCount() > 0);
|
||||
collapseAll.setEnabled(item->childCount() > 0);
|
||||
|
||||
QObject::connect(&expandAll, &QAction::triggered,
|
||||
[this, item]() { ui->events->expandAllItems(item); });
|
||||
|
||||
QObject::connect(&collapseAll, &QAction::triggered,
|
||||
[this, item]() { ui->events->collapseAllItems(item); });
|
||||
|
||||
RDDialog::show(&contextMenu, ui->events->viewport()->mapToGlobal(pos));
|
||||
}
|
||||
}
|
||||
|
||||
void EventBrowser::clearBookmarks()
|
||||
{
|
||||
for(QToolButton *b : m_BookmarkButtons)
|
||||
|
||||
@@ -81,6 +81,7 @@ private slots:
|
||||
// manual slots
|
||||
void findHighlight_timeout();
|
||||
void events_keyPress(QKeyEvent *event);
|
||||
void events_contextMenu(const QPoint &pos);
|
||||
|
||||
public slots:
|
||||
void clearBookmarks();
|
||||
|
||||
Reference in New Issue
Block a user