diff options
Diffstat (limited to 'confui/ui_tab_node_overview.cpp')
-rw-r--r-- | confui/ui_tab_node_overview.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/confui/ui_tab_node_overview.cpp b/confui/ui_tab_node_overview.cpp index 84f1d6e..752bade 100644 --- a/confui/ui_tab_node_overview.cpp +++ b/confui/ui_tab_node_overview.cpp @@ -20,13 +20,17 @@ void CDNodeOverviewTabWidget::update() { map<cd_uid_t, cd_s_node*> nodes = g_cd_mesh_connector->get_nodes(false); for (pair<cd_uid_t, cd_s_node*> node : nodes) { - if (node_widgets.count(node.first)) { // node is already in list - node_widgets[node.first]->update(); - } else { - node_widgets[node.first] = new CDNodeWidget(this); + if (node_widgets.count(node.first) == 0) { + node_widgets[node.first] = new CDNodeWidget(this); // create new node widget node_widgets[node.first]->set_node(node.second); node_widgets[node.first]->update(); + main_layout->addWidget(node_widgets[node.first]); + } else if (node.second != nullptr) { + node_widgets[node.first]->update(); // update existing widget + } else if (node_widgets[node.first] != nullptr) { + main_layout->removeWidget(node_widgets[node.first]); // remove removed automation + delete node_widgets[node.first]; // free automation widget + node_widgets[node.first] = nullptr; } - main_layout->addWidget(node_widgets[node.first]); } } |