Fix stuff

This commit is contained in:
Joey Yakimowich-Payne 2026-02-12 17:47:51 -07:00
commit 0a9cd54f1a
2 changed files with 21 additions and 9 deletions

View file

@ -569,21 +569,17 @@ GraphEditorWidget::GraphEditorWidget(warppipe::Client *client,
connect(m_model, &QtNodes::AbstractGraphModel::nodeCreated, this, connect(m_model, &QtNodes::AbstractGraphModel::nodeCreated, this,
[this](QtNodes::NodeId nodeId) { [this](QtNodes::NodeId nodeId) {
wireVolumeWidget(nodeId); wireVolumeWidget(nodeId);
rebuildMixerStrips(); this->scheduleSidebarRebuild();
rebuildNodeMeters();
rebuildRulesList();
}); });
connect(m_model, &QtNodes::AbstractGraphModel::nodeDeleted, this, connect(m_model, &QtNodes::AbstractGraphModel::nodeDeleted, this,
[this](QtNodes::NodeId nodeId) { [this](QtNodes::NodeId nodeId) {
m_mixerStrips.erase(nodeId); m_mixerStrips.erase(nodeId);
m_nodeMeters.erase(nodeId); m_nodeMeters.erase(nodeId);
rebuildMixerStrips();
rebuildNodeMeters();
rebuildRulesList();
if (nodeId == m_selectedNodeId) { if (nodeId == m_selectedNodeId) {
m_selectedNodeId = 0; m_selectedNodeId = 0;
clearNodeDetailsPanel(); clearNodeDetailsPanel();
} }
this->scheduleSidebarRebuild();
}); });
connect(m_scene, &QGraphicsScene::selectionChanged, this, connect(m_scene, &QGraphicsScene::selectionChanged, this,
@ -1547,7 +1543,7 @@ void GraphEditorWidget::rebuildMixerStrips() {
while (layout->count() > 0) { while (layout->count() > 0) {
auto *item = layout->takeAt(0); auto *item = layout->takeAt(0);
if (item->widget()) if (item->widget())
item->widget()->deleteLater(); delete item->widget();
delete item; delete item;
} }
m_mixerStrips.clear(); m_mixerStrips.clear();
@ -1725,7 +1721,7 @@ void GraphEditorWidget::rebuildNodeMeters() {
while (layout->count() > 0) { while (layout->count() > 0) {
auto *item = layout->takeAt(0); auto *item = layout->takeAt(0);
if (item->widget()) if (item->widget())
item->widget()->deleteLater(); delete item->widget();
delete item; delete item;
} }
m_nodeMeters.clear(); 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() { void GraphEditorWidget::rebuildRulesList() {
if (!m_rulesContainer || !m_client) if (!m_rulesContainer || !m_client)
return; return;
@ -1806,7 +1816,7 @@ void GraphEditorWidget::rebuildRulesList() {
while (layout->count() > 0) { while (layout->count() > 0) {
auto *item = layout->takeAt(0); auto *item = layout->takeAt(0);
if (item->widget()) if (item->widget())
item->widget()->deleteLater(); delete item->widget();
delete item; delete item;
} }

View file

@ -96,6 +96,7 @@ private:
void rebuildMixerStrips(); void rebuildMixerStrips();
void updateMeters(); void updateMeters();
void rebuildNodeMeters(); void rebuildNodeMeters();
void scheduleSidebarRebuild();
void rebuildRulesList(); void rebuildRulesList();
void showAddRuleDialog(const std::string &prefillApp = {}, void showAddRuleDialog(const std::string &prefillApp = {},
const std::string &prefillBin = {}, const std::string &prefillBin = {},
@ -135,6 +136,7 @@ private:
QWidget *m_mixerContainer = nullptr; QWidget *m_mixerContainer = nullptr;
QScrollArea *m_mixerScroll = nullptr; QScrollArea *m_mixerScroll = nullptr;
std::unordered_map<QtNodes::NodeId, QWidget *> m_mixerStrips; std::unordered_map<QtNodes::NodeId, QWidget *> m_mixerStrips;
bool m_sidebarRebuildPending = false;
QTimer *m_meterTimer = nullptr; QTimer *m_meterTimer = nullptr;
AudioLevelMeter *m_masterMeterL = nullptr; AudioLevelMeter *m_masterMeterL = nullptr;