mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-22 05:35:48 +00:00
Fix panel menus
This commit is contained in:
@@ -470,16 +470,14 @@ void CaptureContext::MenuDisplaying(ContextMenu contextMenu, QMenu *menu,
|
||||
}
|
||||
}
|
||||
|
||||
void CaptureContext::MenuDisplaying(PanelMenu panelMenu, QWidget *extensionButton,
|
||||
void CaptureContext::MenuDisplaying(PanelMenu panelMenu, QMenu *menu, QWidget *extensionButton,
|
||||
const ExtensionCallbackData &data)
|
||||
{
|
||||
QMenu contextMenu(m_MainWindow);
|
||||
|
||||
for(RegisteredMenuItem *item : m_RegisteredMenuItems)
|
||||
{
|
||||
if(item->panel == panelMenu)
|
||||
{
|
||||
AddSortedMenuItem(&contextMenu, false, item->submenus, [this, item, data]() {
|
||||
AddSortedMenuItem(menu, false, item->submenus, [this, item, data]() {
|
||||
rdcarray<rdcpair<rdcstr, PyObject *>> args;
|
||||
|
||||
PythonContext::ConvertPyArgs(data, args);
|
||||
@@ -491,16 +489,14 @@ void CaptureContext::MenuDisplaying(PanelMenu panelMenu, QWidget *extensionButto
|
||||
}
|
||||
}
|
||||
|
||||
QAction emptyAction(tr("No extension commands configured"), m_MainWindow);
|
||||
QAction *emptyAction = new QAction(tr("No extension commands configured"), menu);
|
||||
|
||||
if(contextMenu.isEmpty())
|
||||
if(menu->isEmpty())
|
||||
{
|
||||
contextMenu.addAction(&emptyAction);
|
||||
QObject::connect(&emptyAction, &QAction::triggered,
|
||||
menu->addAction(emptyAction);
|
||||
QObject::connect(emptyAction, &QAction::triggered,
|
||||
[this]() { m_MainWindow->showExtensionManager(); });
|
||||
}
|
||||
|
||||
RDDialog::show(&contextMenu, extensionButton->mapToGlobal(extensionButton->rect().bottomLeft()));
|
||||
}
|
||||
|
||||
void CaptureContext::AddSortedMenuItem(QMenu *menu, bool rootMenu, const rdcarray<rdcstr> &items,
|
||||
|
||||
@@ -80,7 +80,7 @@ public:
|
||||
ExtensionCallback callback) override;
|
||||
void MenuDisplaying(ContextMenu contextMenu, QMenu *menu,
|
||||
const ExtensionCallbackData &data) override;
|
||||
void MenuDisplaying(PanelMenu panelMenu, QWidget *extensionButton,
|
||||
void MenuDisplaying(PanelMenu panelMenu, QMenu *menu, QWidget *extensionButton,
|
||||
const ExtensionCallbackData &data) override;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -1291,7 +1291,7 @@ struct IExtensionManager
|
||||
// style avoids complex retained state that has to be refreshed each time a panel is created.
|
||||
virtual void MenuDisplaying(ContextMenu contextMenu, QMenu *menu,
|
||||
const ExtensionCallbackData &data) = 0;
|
||||
virtual void MenuDisplaying(PanelMenu panelMenu, QWidget *extensionButton,
|
||||
virtual void MenuDisplaying(PanelMenu panelMenu, QMenu *menu, QWidget *extensionButton,
|
||||
const ExtensionCallbackData &data) = 0;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1135,9 +1135,12 @@ BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent)
|
||||
{
|
||||
QMenu *extensionsMenu = new QMenu(this);
|
||||
|
||||
ui->extensions->setMenu(extensionsMenu);
|
||||
ui->extensions->setPopupMode(QToolButton::InstantPopup);
|
||||
|
||||
QObject::connect(extensionsMenu, &QMenu::aboutToShow, [this, extensionsMenu]() {
|
||||
extensionsMenu->clear();
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::MeshPreview, ui->extensions, {});
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::MeshPreview, extensionsMenu, ui->extensions, {});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -192,9 +192,12 @@ EventBrowser::EventBrowser(ICaptureContext &ctx, QWidget *parent)
|
||||
{
|
||||
QMenu *extensionsMenu = new QMenu(this);
|
||||
|
||||
ui->extensions->setMenu(extensionsMenu);
|
||||
ui->extensions->setPopupMode(QToolButton::InstantPopup);
|
||||
|
||||
QObject::connect(extensionsMenu, &QMenu::aboutToShow, [this, extensionsMenu]() {
|
||||
extensionsMenu->clear();
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::EventBrowser, ui->extensions, {});
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::EventBrowser, extensionsMenu, ui->extensions, {});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -175,9 +175,13 @@ D3D11PipelineStateViewer::D3D11PipelineStateViewer(ICaptureContext &ctx,
|
||||
{
|
||||
QMenu *extensionsMenu = new QMenu(this);
|
||||
|
||||
ui->extensions->setMenu(extensionsMenu);
|
||||
ui->extensions->setPopupMode(QToolButton::InstantPopup);
|
||||
|
||||
QObject::connect(extensionsMenu, &QMenu::aboutToShow, [this, extensionsMenu]() {
|
||||
extensionsMenu->clear();
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::PipelineStateViewer, ui->extensions, {});
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::PipelineStateViewer, extensionsMenu,
|
||||
ui->extensions, {});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -215,9 +215,13 @@ D3D12PipelineStateViewer::D3D12PipelineStateViewer(ICaptureContext &ctx,
|
||||
{
|
||||
QMenu *extensionsMenu = new QMenu(this);
|
||||
|
||||
ui->extensions->setMenu(extensionsMenu);
|
||||
ui->extensions->setPopupMode(QToolButton::InstantPopup);
|
||||
|
||||
QObject::connect(extensionsMenu, &QMenu::aboutToShow, [this, extensionsMenu]() {
|
||||
extensionsMenu->clear();
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::PipelineStateViewer, ui->extensions, {});
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::PipelineStateViewer, extensionsMenu,
|
||||
ui->extensions, {});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -172,9 +172,13 @@ GLPipelineStateViewer::GLPipelineStateViewer(ICaptureContext &ctx, PipelineState
|
||||
{
|
||||
QMenu *extensionsMenu = new QMenu(this);
|
||||
|
||||
ui->extensions->setMenu(extensionsMenu);
|
||||
ui->extensions->setPopupMode(QToolButton::InstantPopup);
|
||||
|
||||
QObject::connect(extensionsMenu, &QMenu::aboutToShow, [this, extensionsMenu]() {
|
||||
extensionsMenu->clear();
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::PipelineStateViewer, ui->extensions, {});
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::PipelineStateViewer, extensionsMenu,
|
||||
ui->extensions, {});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -167,9 +167,13 @@ VulkanPipelineStateViewer::VulkanPipelineStateViewer(ICaptureContext &ctx,
|
||||
{
|
||||
QMenu *extensionsMenu = new QMenu(this);
|
||||
|
||||
ui->extensions->setMenu(extensionsMenu);
|
||||
ui->extensions->setPopupMode(QToolButton::InstantPopup);
|
||||
|
||||
QObject::connect(extensionsMenu, &QMenu::aboutToShow, [this, extensionsMenu]() {
|
||||
extensionsMenu->clear();
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::PipelineStateViewer, ui->extensions, {});
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::PipelineStateViewer, extensionsMenu,
|
||||
ui->extensions, {});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -543,9 +543,12 @@ TextureViewer::TextureViewer(ICaptureContext &ctx, QWidget *parent)
|
||||
{
|
||||
QMenu *extensionsMenu = new QMenu(this);
|
||||
|
||||
ui->extensions->setMenu(extensionsMenu);
|
||||
ui->extensions->setPopupMode(QToolButton::InstantPopup);
|
||||
|
||||
QObject::connect(extensionsMenu, &QMenu::aboutToShow, [this, extensionsMenu]() {
|
||||
extensionsMenu->clear();
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::TextureViewer, ui->extensions, {});
|
||||
m_Ctx.Extensions().MenuDisplaying(PanelMenu::TextureViewer, extensionsMenu, ui->extensions, {});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user