diff --git a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp index 4764ec73b..899da09b8 100644 --- a/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/D3D11PipelineStateViewer.cpp @@ -1983,6 +1983,8 @@ void D3D11PipelineStateViewer::highlightIABind(int slot) QColor col = QColor::fromHslF(float(idx) / 32.0f, 1.0f, 0.95f); + ui->iaLayouts->model()->blockSignals(true); + ui->iaBuffers->model()->blockSignals(true); if(slot < m_VBNodes.count()) { QTreeWidgetItem *item = m_VBNodes[(int)slot]; @@ -2009,6 +2011,20 @@ void D3D11PipelineStateViewer::highlightIABind(int slot) item->setForeground(c, QBrush(QColor(0, 0, 0))); } } + ui->iaLayouts->model()->blockSignals(false); + ui->iaBuffers->model()->blockSignals(false); + + if(ui->iaLayouts->topLevelItemCount() > 0) + { + ui->iaLayouts->topLevelItem(0)->setDisabled(true); + ui->iaLayouts->topLevelItem(0)->setDisabled(false); + } + + if(ui->iaBuffers->topLevelItemCount() > 0) + { + ui->iaBuffers->topLevelItem(0)->setDisabled(true); + ui->iaBuffers->topLevelItem(0)->setDisabled(false); + } } void D3D11PipelineStateViewer::on_iaLayouts_mouseMove(QMouseEvent *e) @@ -2042,6 +2058,8 @@ void D3D11PipelineStateViewer::on_iaBuffers_mouseMove(QMouseEvent *e) vertex_leave(NULL); + ui->iaLayouts->model()->blockSignals(true); + ui->iaBuffers->model()->blockSignals(true); if(item) { int idx = m_VBNodes.indexOf(item); @@ -2058,10 +2076,26 @@ void D3D11PipelineStateViewer::on_iaBuffers_mouseMove(QMouseEvent *e) } } } + ui->iaLayouts->model()->blockSignals(false); + ui->iaBuffers->model()->blockSignals(false); + + if(ui->iaLayouts->topLevelItemCount() > 0) + { + ui->iaLayouts->topLevelItem(0)->setDisabled(true); + ui->iaLayouts->topLevelItem(0)->setDisabled(false); + } + + if(ui->iaBuffers->topLevelItemCount() > 0) + { + ui->iaBuffers->topLevelItem(0)->setDisabled(true); + ui->iaBuffers->topLevelItem(0)->setDisabled(false); + } } void D3D11PipelineStateViewer::vertex_leave(QEvent *e) { + ui->iaLayouts->model()->blockSignals(true); + ui->iaBuffers->model()->blockSignals(true); for(int i = 0; i < ui->iaLayouts->topLevelItemCount(); i++) { QTreeWidgetItem *item = ui->iaLayouts->topLevelItem(i); @@ -2081,6 +2115,20 @@ void D3D11PipelineStateViewer::vertex_leave(QEvent *e) item->setForeground(c, QBrush()); } } + ui->iaLayouts->model()->blockSignals(false); + ui->iaBuffers->model()->blockSignals(false); + + if(ui->iaLayouts->topLevelItemCount() > 0) + { + ui->iaLayouts->topLevelItem(0)->setDisabled(true); + ui->iaLayouts->topLevelItem(0)->setDisabled(false); + } + + if(ui->iaBuffers->topLevelItemCount() > 0) + { + ui->iaBuffers->topLevelItem(0)->setDisabled(true); + ui->iaBuffers->topLevelItem(0)->setDisabled(false); + } } void D3D11PipelineStateViewer::shaderView_clicked() diff --git a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp index db1f7793e..56ae8241f 100644 --- a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp @@ -1984,6 +1984,8 @@ void D3D12PipelineStateViewer::highlightIABind(int slot) QColor col = QColor::fromHslF(float(idx) / 32.0f, 1.0f, 0.95f); + ui->iaLayouts->model()->blockSignals(true); + ui->iaBuffers->model()->blockSignals(true); if(slot < m_VBNodes.count()) { QTreeWidgetItem *item = m_VBNodes[(int)slot]; @@ -2010,6 +2012,20 @@ void D3D12PipelineStateViewer::highlightIABind(int slot) item->setForeground(c, QBrush(QColor(0, 0, 0))); } } + ui->iaLayouts->model()->blockSignals(false); + ui->iaBuffers->model()->blockSignals(false); + + if(ui->iaLayouts->topLevelItemCount() > 0) + { + ui->iaLayouts->topLevelItem(0)->setDisabled(true); + ui->iaLayouts->topLevelItem(0)->setDisabled(false); + } + + if(ui->iaBuffers->topLevelItemCount() > 0) + { + ui->iaBuffers->topLevelItem(0)->setDisabled(true); + ui->iaBuffers->topLevelItem(0)->setDisabled(false); + } } void D3D12PipelineStateViewer::on_iaLayouts_mouseMove(QMouseEvent *e) @@ -2043,6 +2059,8 @@ void D3D12PipelineStateViewer::on_iaBuffers_mouseMove(QMouseEvent *e) vertex_leave(NULL); + ui->iaLayouts->model()->blockSignals(true); + ui->iaBuffers->model()->blockSignals(true); if(item) { int idx = m_VBNodes.indexOf(item); @@ -2059,10 +2077,26 @@ void D3D12PipelineStateViewer::on_iaBuffers_mouseMove(QMouseEvent *e) } } } + ui->iaLayouts->model()->blockSignals(false); + ui->iaBuffers->model()->blockSignals(false); + + if(ui->iaLayouts->topLevelItemCount() > 0) + { + ui->iaLayouts->topLevelItem(0)->setDisabled(true); + ui->iaLayouts->topLevelItem(0)->setDisabled(false); + } + + if(ui->iaBuffers->topLevelItemCount() > 0) + { + ui->iaBuffers->topLevelItem(0)->setDisabled(true); + ui->iaBuffers->topLevelItem(0)->setDisabled(false); + } } void D3D12PipelineStateViewer::vertex_leave(QEvent *e) { + ui->iaLayouts->model()->blockSignals(true); + ui->iaBuffers->model()->blockSignals(true); for(int i = 0; i < ui->iaLayouts->topLevelItemCount(); i++) { QTreeWidgetItem *item = ui->iaLayouts->topLevelItem(i); @@ -2082,6 +2116,20 @@ void D3D12PipelineStateViewer::vertex_leave(QEvent *e) item->setForeground(c, QBrush()); } } + ui->iaLayouts->model()->blockSignals(false); + ui->iaBuffers->model()->blockSignals(false); + + if(ui->iaLayouts->topLevelItemCount() > 0) + { + ui->iaLayouts->topLevelItem(0)->setDisabled(true); + ui->iaLayouts->topLevelItem(0)->setDisabled(false); + } + + if(ui->iaBuffers->topLevelItemCount() > 0) + { + ui->iaBuffers->topLevelItem(0)->setDisabled(true); + ui->iaBuffers->topLevelItem(0)->setDisabled(false); + } } void D3D12PipelineStateViewer::shaderView_clicked() diff --git a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp index d6829cade..24d1c8cf6 100644 --- a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp @@ -2100,6 +2100,8 @@ void GLPipelineStateViewer::highlightIABind(int slot) QColor col = QColor::fromHslF(float(idx) / 32.0f, 1.0f, 0.95f); + ui->viAttrs->model()->blockSignals(true); + ui->viBuffers->model()->blockSignals(true); if(slot < m_VBNodes.count()) { QTreeWidgetItem *item = m_VBNodes[(int)slot]; @@ -2120,6 +2122,20 @@ void GLPipelineStateViewer::highlightIABind(int slot) for(int c = 0; c < item->columnCount(); c++) item->setBackground(c, itemBrush); } + ui->viAttrs->model()->blockSignals(false); + ui->viBuffers->model()->blockSignals(false); + + if(ui->viAttrs->topLevelItemCount() > 0) + { + ui->viAttrs->topLevelItem(0)->setDisabled(true); + ui->viAttrs->topLevelItem(0)->setDisabled(false); + } + + if(ui->viBuffers->topLevelItemCount() > 0) + { + ui->viBuffers->topLevelItem(0)->setDisabled(true); + ui->viBuffers->topLevelItem(0)->setDisabled(false); + } } void GLPipelineStateViewer::on_viAttrs_mouseMove(QMouseEvent *e) @@ -2153,6 +2169,8 @@ void GLPipelineStateViewer::on_viBuffers_mouseMove(QMouseEvent *e) vertex_leave(NULL); + ui->viAttrs->model()->blockSignals(true); + ui->viBuffers->model()->blockSignals(true); if(item) { int idx = m_VBNodes.indexOf(item); @@ -2166,10 +2184,26 @@ void GLPipelineStateViewer::on_viBuffers_mouseMove(QMouseEvent *e) item->setBackground(c, QBrush(ui->viBuffers->palette().color(QPalette::Window))); } } + ui->viAttrs->model()->blockSignals(false); + ui->viBuffers->model()->blockSignals(false); + + if(ui->viAttrs->topLevelItemCount() > 0) + { + ui->viAttrs->topLevelItem(0)->setDisabled(true); + ui->viAttrs->topLevelItem(0)->setDisabled(false); + } + + if(ui->viBuffers->topLevelItemCount() > 0) + { + ui->viBuffers->topLevelItem(0)->setDisabled(true); + ui->viBuffers->topLevelItem(0)->setDisabled(false); + } } void GLPipelineStateViewer::vertex_leave(QEvent *e) { + ui->viAttrs->model()->blockSignals(true); + ui->viBuffers->model()->blockSignals(true); for(int i = 0; i < ui->viAttrs->topLevelItemCount(); i++) { QTreeWidgetItem *item = ui->viAttrs->topLevelItem(i); @@ -2183,6 +2217,20 @@ void GLPipelineStateViewer::vertex_leave(QEvent *e) for(int c = 0; c < item->columnCount(); c++) item->setBackground(c, QBrush()); } + ui->viAttrs->model()->blockSignals(false); + ui->viBuffers->model()->blockSignals(false); + + if(ui->viAttrs->topLevelItemCount() > 0) + { + ui->viAttrs->topLevelItem(0)->setDisabled(true); + ui->viAttrs->topLevelItem(0)->setDisabled(false); + } + + if(ui->viBuffers->topLevelItemCount() > 0) + { + ui->viBuffers->topLevelItem(0)->setDisabled(true); + ui->viBuffers->topLevelItem(0)->setDisabled(false); + } } void GLPipelineStateViewer::shaderView_clicked() diff --git a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp index 84086f86d..9777a6635 100644 --- a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp @@ -2194,6 +2194,8 @@ void VulkanPipelineStateViewer::highlightIABind(int slot) QColor col = QColor::fromHslF(float(idx) / 32.0f, 1.0f, 0.95f); + ui->viAttrs->model()->blockSignals(true); + ui->viBuffers->model()->blockSignals(true); if(slot < m_VBNodes.count()) { QTreeWidgetItem *item = m_VBNodes[(int)slot]; @@ -2222,6 +2224,20 @@ void VulkanPipelineStateViewer::highlightIABind(int slot) for(int c = 0; c < item->columnCount(); c++) item->setBackground(c, itemBrush); } + ui->viAttrs->model()->blockSignals(false); + ui->viBuffers->model()->blockSignals(false); + + if(ui->viAttrs->topLevelItemCount() > 0) + { + ui->viAttrs->topLevelItem(0)->setDisabled(true); + ui->viAttrs->topLevelItem(0)->setDisabled(false); + } + + if(ui->viBuffers->topLevelItemCount() > 0) + { + ui->viBuffers->topLevelItem(0)->setDisabled(true); + ui->viBuffers->topLevelItem(0)->setDisabled(false); + } } void VulkanPipelineStateViewer::on_viAttrs_mouseMove(QMouseEvent *e) @@ -2255,6 +2271,8 @@ void VulkanPipelineStateViewer::on_viBuffers_mouseMove(QMouseEvent *e) vertex_leave(NULL); + ui->viAttrs->model()->blockSignals(true); + ui->viBuffers->model()->blockSignals(true); if(item) { int idx = m_VBNodes.indexOf(item); @@ -2268,10 +2286,26 @@ void VulkanPipelineStateViewer::on_viBuffers_mouseMove(QMouseEvent *e) item->setBackground(c, QBrush(ui->viBuffers->palette().color(QPalette::Window))); } } + ui->viAttrs->model()->blockSignals(false); + ui->viBuffers->model()->blockSignals(false); + + if(ui->viAttrs->topLevelItemCount() > 0) + { + ui->viAttrs->topLevelItem(0)->setDisabled(true); + ui->viAttrs->topLevelItem(0)->setDisabled(false); + } + + if(ui->viBuffers->topLevelItemCount() > 0) + { + ui->viBuffers->topLevelItem(0)->setDisabled(true); + ui->viBuffers->topLevelItem(0)->setDisabled(false); + } } void VulkanPipelineStateViewer::vertex_leave(QEvent *e) { + ui->viAttrs->model()->blockSignals(true); + ui->viBuffers->model()->blockSignals(true); for(int i = 0; i < ui->viAttrs->topLevelItemCount(); i++) { QTreeWidgetItem *item = ui->viAttrs->topLevelItem(i); @@ -2285,6 +2319,20 @@ void VulkanPipelineStateViewer::vertex_leave(QEvent *e) for(int c = 0; c < item->columnCount(); c++) item->setBackground(c, QBrush()); } + ui->viAttrs->model()->blockSignals(false); + ui->viBuffers->model()->blockSignals(false); + + if(ui->viAttrs->topLevelItemCount() > 0) + { + ui->viAttrs->topLevelItem(0)->setDisabled(true); + ui->viAttrs->topLevelItem(0)->setDisabled(false); + } + + if(ui->viBuffers->topLevelItemCount() > 0) + { + ui->viBuffers->topLevelItem(0)->setDisabled(true); + ui->viBuffers->topLevelItem(0)->setDisabled(false); + } } void VulkanPipelineStateViewer::shaderView_clicked()