CodeViewWidget: Add WithDetailedUpdate to update CodeWidget

This used to also update the function calls and callers.
This commit is contained in:
Sepalani 2021-02-14 16:01:32 +04:00
parent 2f85b80b7b
commit 5f629abd8b
4 changed files with 21 additions and 7 deletions

View File

@ -442,8 +442,19 @@ void CodeViewWidget::SetAddress(u32 address, SetAddressUpdate update)
return; return;
m_address = address; m_address = address;
if (update == SetAddressUpdate::WithUpdate) switch (update)
{
case SetAddressUpdate::WithoutUpdate:
return;
case SetAddressUpdate::WithUpdate:
// Update the CodeViewWidget
Update(); Update();
break;
case SetAddressUpdate::WithDetailedUpdate:
// Update the CodeWidget's views (code view, function calls/callers, ...)
emit UpdateCodeWidget();
break;
}
} }
void CodeViewWidget::ReplaceAddress(u32 address, ReplaceWith replace) void CodeViewWidget::ReplaceAddress(u32 address, ReplaceWith replace)
@ -611,7 +622,7 @@ void CodeViewWidget::OnFollowBranch()
if (!branch_addr) if (!branch_addr)
return; return;
SetAddress(branch_addr, SetAddressUpdate::WithUpdate); SetAddress(branch_addr, SetAddressUpdate::WithDetailedUpdate);
} }
void CodeViewWidget::OnRenameSymbol() void CodeViewWidget::OnRenameSymbol()
@ -785,7 +796,7 @@ void CodeViewWidget::mousePressEvent(QMouseEvent* event)
if (column(item) == CODE_VIEW_COLUMN_BREAKPOINT) if (column(item) == CODE_VIEW_COLUMN_BREAKPOINT)
ToggleBreakpoint(); ToggleBreakpoint();
else else
SetAddress(addr, SetAddressUpdate::WithUpdate); SetAddress(addr, SetAddressUpdate::WithDetailedUpdate);
Update(); Update();
break; break;

View File

@ -25,7 +25,8 @@ public:
enum class SetAddressUpdate enum class SetAddressUpdate
{ {
WithUpdate, WithUpdate,
WithoutUpdate WithoutUpdate,
WithDetailedUpdate
}; };
explicit CodeViewWidget(); explicit CodeViewWidget();
@ -49,6 +50,7 @@ signals:
void ShowMemory(u32 address); void ShowMemory(u32 address);
void SymbolsChanged(); void SymbolsChanged();
void BreakpointsChanged(); void BreakpointsChanged();
void UpdateCodeWidget();
private: private:
enum class ReplaceWith enum class ReplaceWith

View File

@ -170,6 +170,7 @@ void CodeWidget::ConnectWidgets()
connect(m_code_view, &CodeViewWidget::SymbolsChanged, this, &CodeWidget::UpdateSymbols); connect(m_code_view, &CodeViewWidget::SymbolsChanged, this, &CodeWidget::UpdateSymbols);
connect(m_code_view, &CodeViewWidget::BreakpointsChanged, this, connect(m_code_view, &CodeViewWidget::BreakpointsChanged, this,
[this] { emit BreakpointsChanged(); }); [this] { emit BreakpointsChanged(); });
connect(m_code_view, &CodeViewWidget::UpdateCodeWidget, this, &CodeWidget::Update);
connect(m_code_view, &CodeViewWidget::RequestPPCComparison, this, connect(m_code_view, &CodeViewWidget::RequestPPCComparison, this,
&CodeWidget::RequestPPCComparison); &CodeWidget::RequestPPCComparison);

View File

@ -419,7 +419,7 @@ void MainWindow::CreateComponents()
}; };
const auto request_view_in_memory = [this](u32 addr) { m_memory_widget->SetAddress(addr); }; const auto request_view_in_memory = [this](u32 addr) { m_memory_widget->SetAddress(addr); };
const auto request_view_in_code = [this](u32 addr) { const auto request_view_in_code = [this](u32 addr) {
m_code_widget->SetAddress(addr, CodeViewWidget::SetAddressUpdate::WithUpdate); m_code_widget->SetAddress(addr, CodeViewWidget::SetAddressUpdate::WithDetailedUpdate);
}; };
connect(m_watch_widget, &WatchWidget::RequestMemoryBreakpoint, request_memory_breakpoint); connect(m_watch_widget, &WatchWidget::RequestMemoryBreakpoint, request_memory_breakpoint);
@ -439,7 +439,7 @@ void MainWindow::CreateComponents()
connect(m_memory_widget, &MemoryWidget::BreakpointsChanged, m_breakpoint_widget, connect(m_memory_widget, &MemoryWidget::BreakpointsChanged, m_breakpoint_widget,
&BreakpointWidget::Update); &BreakpointWidget::Update);
connect(m_memory_widget, &MemoryWidget::ShowCode, m_code_widget, [this](u32 address) { connect(m_memory_widget, &MemoryWidget::ShowCode, m_code_widget, [this](u32 address) {
m_code_widget->SetAddress(address, CodeViewWidget::SetAddressUpdate::WithUpdate); m_code_widget->SetAddress(address, CodeViewWidget::SetAddressUpdate::WithDetailedUpdate);
}); });
connect(m_breakpoint_widget, &BreakpointWidget::BreakpointsChanged, m_code_widget, connect(m_breakpoint_widget, &BreakpointWidget::BreakpointsChanged, m_code_widget,
@ -448,7 +448,7 @@ void MainWindow::CreateComponents()
&MemoryWidget::Update); &MemoryWidget::Update);
connect(m_breakpoint_widget, &BreakpointWidget::SelectedBreakpoint, [this](u32 address) { connect(m_breakpoint_widget, &BreakpointWidget::SelectedBreakpoint, [this](u32 address) {
if (Core::GetState() == Core::State::Paused) if (Core::GetState() == Core::State::Paused)
m_code_widget->SetAddress(address, CodeViewWidget::SetAddressUpdate::WithUpdate); m_code_widget->SetAddress(address, CodeViewWidget::SetAddressUpdate::WithDetailedUpdate);
}); });
} }