From 0a9cd54f1ac9850182f685a128da9214d4efec3d Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Thu, 12 Feb 2026 17:47:51 -0700 Subject: [PATCH] Fix stuff --- gui/GraphEditorWidget.cpp | 28 +++++++++++++++++++--------- gui/GraphEditorWidget.h | 2 ++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/gui/GraphEditorWidget.cpp b/gui/GraphEditorWidget.cpp index ebb13a8..d8a4b18 100644 --- a/gui/GraphEditorWidget.cpp +++ b/gui/GraphEditorWidget.cpp @@ -569,21 +569,17 @@ GraphEditorWidget::GraphEditorWidget(warppipe::Client *client, connect(m_model, &QtNodes::AbstractGraphModel::nodeCreated, this, [this](QtNodes::NodeId nodeId) { wireVolumeWidget(nodeId); - rebuildMixerStrips(); - rebuildNodeMeters(); - rebuildRulesList(); + this->scheduleSidebarRebuild(); }); connect(m_model, &QtNodes::AbstractGraphModel::nodeDeleted, this, [this](QtNodes::NodeId nodeId) { m_mixerStrips.erase(nodeId); m_nodeMeters.erase(nodeId); - rebuildMixerStrips(); - rebuildNodeMeters(); - rebuildRulesList(); if (nodeId == m_selectedNodeId) { m_selectedNodeId = 0; clearNodeDetailsPanel(); } + this->scheduleSidebarRebuild(); }); connect(m_scene, &QGraphicsScene::selectionChanged, this, @@ -1547,7 +1543,7 @@ void GraphEditorWidget::rebuildMixerStrips() { while (layout->count() > 0) { auto *item = layout->takeAt(0); if (item->widget()) - item->widget()->deleteLater(); + delete item->widget(); delete item; } m_mixerStrips.clear(); @@ -1725,7 +1721,7 @@ void GraphEditorWidget::rebuildNodeMeters() { while (layout->count() > 0) { auto *item = layout->takeAt(0); if (item->widget()) - item->widget()->deleteLater(); + delete item->widget(); delete item; } m_nodeMeters.clear(); @@ -1795,6 +1791,20 @@ void GraphEditorWidget::rebuildNodeMeters() { } } +void GraphEditorWidget::scheduleSidebarRebuild() { + if (m_sidebarRebuildPending) { + return; + } + m_sidebarRebuildPending = true; + + QTimer::singleShot(0, this, [this]() { + m_sidebarRebuildPending = false; + rebuildMixerStrips(); + rebuildNodeMeters(); + rebuildRulesList(); + }); +} + void GraphEditorWidget::rebuildRulesList() { if (!m_rulesContainer || !m_client) return; @@ -1806,7 +1816,7 @@ void GraphEditorWidget::rebuildRulesList() { while (layout->count() > 0) { auto *item = layout->takeAt(0); if (item->widget()) - item->widget()->deleteLater(); + delete item->widget(); delete item; } diff --git a/gui/GraphEditorWidget.h b/gui/GraphEditorWidget.h index b7e0dbe..6f57dd3 100644 --- a/gui/GraphEditorWidget.h +++ b/gui/GraphEditorWidget.h @@ -96,6 +96,7 @@ private: void rebuildMixerStrips(); void updateMeters(); void rebuildNodeMeters(); + void scheduleSidebarRebuild(); void rebuildRulesList(); void showAddRuleDialog(const std::string &prefillApp = {}, const std::string &prefillBin = {}, @@ -135,6 +136,7 @@ private: QWidget *m_mixerContainer = nullptr; QScrollArea *m_mixerScroll = nullptr; std::unordered_map m_mixerStrips; + bool m_sidebarRebuildPending = false; QTimer *m_meterTimer = nullptr; AudioLevelMeter *m_masterMeterL = nullptr;