From 09792fde70d5c0ae0386b2d9dc0b82825bc37de6 Mon Sep 17 00:00:00 2001 From: aldelaro5 Date: Sat, 5 May 2018 22:55:10 -0400 Subject: [PATCH] Qt/debugger: recenter the code widget when selecting a breakpoint --- Source/Core/DolphinQt2/Debugger/BreakpointWidget.cpp | 9 +++++++++ Source/Core/DolphinQt2/Debugger/BreakpointWidget.h | 1 + Source/Core/DolphinQt2/MainWindow.cpp | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/Source/Core/DolphinQt2/Debugger/BreakpointWidget.cpp b/Source/Core/DolphinQt2/Debugger/BreakpointWidget.cpp index cc5bd73b72..1eebcfbff7 100644 --- a/Source/Core/DolphinQt2/Debugger/BreakpointWidget.cpp +++ b/Source/Core/DolphinQt2/Debugger/BreakpointWidget.cpp @@ -80,6 +80,15 @@ void BreakpointWidget::CreateWidgets() m_table->setEditTriggers(QAbstractItemView::NoEditTriggers); m_table->verticalHeader()->hide(); + connect(m_table, &QTableWidget::itemClicked, [this](QTableWidgetItem* item) { + if (m_table->selectedItems()[0]->row() == item->row() && + Core::GetState() == Core::State::Paused) + { + auto address = m_table->selectedItems()[0]->data(Qt::UserRole).toUInt(); + emit SelectedBreakpoint(address); + } + }); + auto* layout = new QVBoxLayout; layout->addWidget(m_toolbar); diff --git a/Source/Core/DolphinQt2/Debugger/BreakpointWidget.h b/Source/Core/DolphinQt2/Debugger/BreakpointWidget.h index e7c5c93226..ed93890670 100644 --- a/Source/Core/DolphinQt2/Debugger/BreakpointWidget.h +++ b/Source/Core/DolphinQt2/Debugger/BreakpointWidget.h @@ -29,6 +29,7 @@ public: signals: void BreakpointsChanged(); + void SelectedBreakpoint(u32 address); protected: void closeEvent(QCloseEvent*) override; diff --git a/Source/Core/DolphinQt2/MainWindow.cpp b/Source/Core/DolphinQt2/MainWindow.cpp index 114cabf0d1..c6949ee5cf 100644 --- a/Source/Core/DolphinQt2/MainWindow.cpp +++ b/Source/Core/DolphinQt2/MainWindow.cpp @@ -54,6 +54,7 @@ #include "DolphinQt2/Config/Mapping/MappingWindow.h" #include "DolphinQt2/Config/SettingsWindow.h" #include "DolphinQt2/Debugger/BreakpointWidget.h" +#include "DolphinQt2/Debugger/CodeViewWidget.h" #include "DolphinQt2/Debugger/CodeWidget.h" #include "DolphinQt2/Debugger/JITWidget.h" #include "DolphinQt2/Debugger/MemoryWidget.h" @@ -245,6 +246,10 @@ void MainWindow::CreateComponents() &CodeWidget::Update); connect(m_breakpoint_widget, &BreakpointWidget::BreakpointsChanged, m_memory_widget, &MemoryWidget::Update); + connect(m_breakpoint_widget, &BreakpointWidget::SelectedBreakpoint, [this](u32 address) { + if (Core::GetState() == Core::State::Paused) + m_code_widget->SetAddress(address, CodeViewWidget::SetAddressUpdate::WithUpdate); + }); #if defined(HAVE_XRANDR) && HAVE_XRANDR m_xrr_config = std::make_unique(