44
55namespace sv {
66
7- WaveDataTreePanel::WaveDataTreePanel () {
7+ void WaveDataTreePanel::BuildInitialTree () {
88 if (Workspace::Get ().Waves () == nullptr ) return ;
99 for (const auto &scope : Workspace::Get ().Waves ()->Roots ()) {
1010 roots_.push_back (std::make_unique<WaveDataTreeItem>(scope));
@@ -15,31 +15,36 @@ WaveDataTreePanel::WaveDataTreePanel() {
1515 if (data_.ListSize () == 2 ) {
1616 data_.ToggleExpand (1 );
1717 }
18+ line_idx_ = 0 ;
19+ }
20+
21+ WaveDataTreePanel::WaveDataTreePanel () { BuildInitialTree (); }
22+
23+ void WaveDataTreePanel::HandleReloadedWaves () {
24+ BuildInitialTree ();
25+ scope_for_signals_ = dynamic_cast <WaveDataTreeItem *>(data_[line_idx_])->SignalScope ();
1826}
1927
2028void WaveDataTreePanel::UIChar (int ch) {
2129 int initial_line = line_idx_;
2230 switch (ch) {
2331 case ' S' :
2432 Workspace::Get ().SetMatchedSignalScope (
25- dynamic_cast <const WaveDataTreeItem *>(data_[line_idx_])
26- ->SignalScope ());
33+ dynamic_cast <const WaveDataTreeItem *>(data_[line_idx_])->SignalScope ());
2734 break ;
2835 default : TreePanel::UIChar (ch);
2936 }
3037 // If the selection moved, update the signals panel
3138 if (line_idx_ != initial_line) {
32- scope_for_signals_ =
33- dynamic_cast <WaveDataTreeItem *>(data_[line_idx_])->SignalScope ();
39+ scope_for_signals_ = dynamic_cast <WaveDataTreeItem *>(data_[line_idx_])->SignalScope ();
3440 }
3541}
3642
3743std::vector<Tooltip> WaveDataTreePanel::Tooltips () const {
3844 return std::vector<Tooltip>{{" S" , " set scope for source" }};
3945}
4046
41- std::optional<const WaveData::SignalScope *>
42- WaveDataTreePanel::ScopeForSignals () {
47+ std::optional<const WaveData::SignalScope *> WaveDataTreePanel::ScopeForSignals () {
4348 if (scope_for_signals_ == nullptr ) return std::nullopt ;
4449 auto ptr = scope_for_signals_;
4550 scope_for_signals_ = nullptr ;
0 commit comments