diff --git a/qrenderdoc/Windows/ShaderViewer.cpp b/qrenderdoc/Windows/ShaderViewer.cpp index 266870bd7..854d9bebb 100644 --- a/qrenderdoc/Windows/ShaderViewer.cpp +++ b/qrenderdoc/Windows/ShaderViewer.cpp @@ -126,26 +126,26 @@ ShaderViewer::ShaderViewer(ICaptureContext &ctx, QWidget *parent) m_DisassemblyFrame = new QWidget(this); m_DisassemblyFrame->setWindowTitle(tr("Disassembly")); - QFrame *disasmToolbar = new QFrame(this); - disasmToolbar->setFrameShape(QFrame::Panel); - disasmToolbar->setFrameShadow(QFrame::Raised); + m_DisassemblyToolbar = new QFrame(this); + m_DisassemblyToolbar->setFrameShape(QFrame::Panel); + m_DisassemblyToolbar->setFrameShadow(QFrame::Raised); - QHBoxLayout *toolbarlayout = new QHBoxLayout(disasmToolbar); + QHBoxLayout *toolbarlayout = new QHBoxLayout(m_DisassemblyToolbar); toolbarlayout->setSpacing(2); toolbarlayout->setContentsMargins(3, 3, 3, 3); - m_DisassemblyType = new QComboBox(disasmToolbar); + m_DisassemblyType = new QComboBox(m_DisassemblyToolbar); m_DisassemblyType->setMaxVisibleItems(12); m_DisassemblyType->setSizeAdjustPolicy(QComboBox::AdjustToContents); - toolbarlayout->addWidget(new QLabel(tr("Disassembly type:"), disasmToolbar)); + toolbarlayout->addWidget(new QLabel(tr("Disassembly type:"), m_DisassemblyToolbar)); toolbarlayout->addWidget(m_DisassemblyType); toolbarlayout->addItem(new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); QVBoxLayout *framelayout = new QVBoxLayout(m_DisassemblyFrame); framelayout->setSpacing(0); framelayout->setMargin(0); - framelayout->addWidget(disasmToolbar); + framelayout->addWidget(m_DisassemblyToolbar); framelayout->addWidget(m_DisassemblyView); ui->docking->addToolWindow(m_DisassemblyFrame, ToolWindowManager::EmptySpace); @@ -290,6 +290,8 @@ void ShaderViewer::debugShader(const ShaderBindpointMapping *bind, const ShaderR m_Trace = trace; m_Stage = stage; + m_DisassemblyFrame->layout()->removeWidget(m_DisassemblyToolbar); + // no replacing allowed, stay in find mode m_FindReplace->allowUserModeChange(false); @@ -324,6 +326,8 @@ void ShaderViewer::debugShader(const ShaderBindpointMapping *bind, const ShaderR m_DisassemblyView->setReadOnly(false); m_DisassemblyView->setText(disasm.c_str()); m_DisassemblyView->setReadOnly(true); + + updateDebugging(); }); }); } diff --git a/qrenderdoc/Windows/ShaderViewer.h b/qrenderdoc/Windows/ShaderViewer.h index 22c395887..136171fdd 100644 --- a/qrenderdoc/Windows/ShaderViewer.h +++ b/qrenderdoc/Windows/ShaderViewer.h @@ -171,6 +171,7 @@ private: const ShaderReflection *m_ShaderDetails = NULL; ShaderStage m_Stage; ScintillaEdit *m_DisassemblyView = NULL; + QFrame *m_DisassemblyToolbar = NULL; QWidget *m_DisassemblyFrame = NULL; QComboBox *m_DisassemblyType = NULL; ScintillaEdit *m_Errors = NULL; diff --git a/renderdocui/Windows/ShaderViewer.cs b/renderdocui/Windows/ShaderViewer.cs index 1276efe2d..5f63cbb33 100644 --- a/renderdocui/Windows/ShaderViewer.cs +++ b/renderdocui/Windows/ShaderViewer.cs @@ -497,6 +497,23 @@ namespace renderdocui.Windows disasmLayoutPanel.RowStyles.Add(new RowStyle()); disasmLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); + if (m_Trace == null) + { + disasmLayoutPanel.ColumnCount = 1; + disasmLayoutPanel.Controls.Add(disasmToolStrip, 0, 0); + disasmLayoutPanel.Controls.Add(m_DisassemblyView, 0, 1); + disasmLayoutPanel.RowCount = 2; + disasmLayoutPanel.RowStyles.Add(new RowStyle()); + disasmLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); + } + else + { + disasmLayoutPanel.ColumnCount = 1; + disasmLayoutPanel.RowCount = 1; + disasmLayoutPanel.Controls.Add(m_DisassemblyView, 0, 0); + disasmLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); + } + m_Scintillas.Add(m_DisassemblyView); var w = Helpers.WrapDockContent(dockPanel, disasmLayoutPanel, "Disassembly"); @@ -519,6 +536,8 @@ namespace renderdocui.Windows m_DisassemblyView.Text = disasm; m_DisassemblyView.UndoRedo.EmptyUndoBuffer(); m_DisassemblyView.IsReadOnly = true; + + UpdateDebugging(); }); }); }