Fix panel menus

This commit is contained in:
baldurk
2018-10-23 15:15:39 +01:00
parent 6388bf1c77
commit 8447e43e78
10 changed files with 40 additions and 19 deletions
+6 -10
View File
@@ -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,
+1 -1
View File
@@ -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;
//////////////////////////////////////////////////////////////////////////////
+1 -1
View File
@@ -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
+4 -1
View File
@@ -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, {});
});
}
+4 -1
View File
@@ -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, {});
});
}
+4 -1
View File
@@ -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, {});
});
}