From 1b87ea83e6064d534c3ba71d036f05ff4ffd5ec6 Mon Sep 17 00:00:00 2001 From: Nitch2024 Date: Sat, 29 Mar 2025 12:43:15 -0700 Subject: [PATCH] [Debugger] CTRL+G support in code and memory view --- Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp | 5 +++++ Source/Core/DolphinQt/Debugger/CodeViewWidget.h | 1 + Source/Core/DolphinQt/Debugger/CodeWidget.cpp | 7 +++++++ Source/Core/DolphinQt/Debugger/CodeWidget.h | 1 + Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp | 10 ++++++++++ Source/Core/DolphinQt/Debugger/MemoryViewWidget.h | 2 ++ Source/Core/DolphinQt/Debugger/MemoryWidget.cpp | 8 ++++++++ Source/Core/DolphinQt/Debugger/MemoryWidget.h | 1 + 8 files changed, 35 insertions(+) diff --git a/Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp b/Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp index 696ff60d47..1f5de76ff0 100644 --- a/Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/CodeViewWidget.cpp @@ -1085,6 +1085,11 @@ void CodeViewWidget::keyPressEvent(QKeyEvent* event) m_address += rowCount() * sizeof(u32); Update(); return; + case Qt::Key_G: + if (event->modifiers() == Qt::ControlModifier) + { + emit ActivateSearch(); + } default: QWidget::keyPressEvent(event); break; diff --git a/Source/Core/DolphinQt/Debugger/CodeViewWidget.h b/Source/Core/DolphinQt/Debugger/CodeViewWidget.h index 3fc78489ba..b59bd27277 100644 --- a/Source/Core/DolphinQt/Debugger/CodeViewWidget.h +++ b/Source/Core/DolphinQt/Debugger/CodeViewWidget.h @@ -58,6 +58,7 @@ signals: void RequestPPCComparison(u32 address, bool translate_address); void ShowMemory(u32 address); void UpdateCodeWidget(); + void ActivateSearch(); private: enum class ReplaceWith diff --git a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp index eedf70a192..526165ee5c 100644 --- a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp @@ -212,6 +212,7 @@ void CodeWidget::ConnectWidgets() connect(m_code_view, &CodeViewWidget::RequestPPCComparison, this, &CodeWidget::RequestPPCComparison); connect(m_code_view, &CodeViewWidget::ShowMemory, this, &CodeWidget::ShowMemory); + connect(m_code_view, &CodeViewWidget::ActivateSearch, this, &CodeWidget::ActivateSearchAddress); } void CodeWidget::OnBranchWatchDialog() @@ -243,6 +244,12 @@ void CodeWidget::OnPPCSymbolsChanged() } } +void CodeWidget::ActivateSearchAddress() +{ + m_search_address->setFocus(); + m_search_address->selectAll(); +} + void CodeWidget::OnSearchAddress() { bool good = true; diff --git a/Source/Core/DolphinQt/Debugger/CodeWidget.h b/Source/Core/DolphinQt/Debugger/CodeWidget.h index bf51db9d59..62f2642222 100644 --- a/Source/Core/DolphinQt/Debugger/CodeWidget.h +++ b/Source/Core/DolphinQt/Debugger/CodeWidget.h @@ -50,6 +50,7 @@ public: void Update(); void UpdateSymbols(); + void ActivateSearchAddress(); signals: void RequestPPCComparison(u32 address, bool translate_address); void ShowMemory(u32 address); diff --git a/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp b/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp index 75cafdd814..ef39421294 100644 --- a/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/MemoryViewWidget.cpp @@ -123,6 +123,11 @@ public: case Qt::Key_PageDown: m_view->m_address += this->rowCount() * m_view->m_bytes_per_row; break; + case Qt::Key_G: + if (event->modifiers() == Qt::ControlModifier) + { + m_view->TriggerActivateSearch(); + } default: QWidget::keyPressEvent(event); return; @@ -252,6 +257,11 @@ void MemoryViewWidget::UpdateFont(const QFont& font) UpdateDispatcher(UpdateType::Full); } +void MemoryViewWidget::TriggerActivateSearch() +{ + emit ActivateSearch(); +} + constexpr int GetTypeSize(MemoryViewWidget::Type type) { switch (type) diff --git a/Source/Core/DolphinQt/Debugger/MemoryViewWidget.h b/Source/Core/DolphinQt/Debugger/MemoryViewWidget.h index 29d006f7db..46643e39a4 100644 --- a/Source/Core/DolphinQt/Debugger/MemoryViewWidget.h +++ b/Source/Core/DolphinQt/Debugger/MemoryViewWidget.h @@ -105,12 +105,14 @@ signals: void AutoUpdate(); void ShowCode(u32 address); void RequestWatch(QString name, u32 address); + void ActivateSearch(); private: void OnContextMenu(const QPoint& pos); void OnCopyAddress(u32 addr); void OnCopyHex(u32 addr); void UpdateBreakpointTags(); + void TriggerActivateSearch(); void UpdateColumns(); void ScrollbarActionTriggered(int action); void ScrollbarSliderReleased(); diff --git a/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp b/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp index 4d06e74b10..4c15e92a03 100644 --- a/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/MemoryWidget.cpp @@ -361,6 +361,8 @@ void MemoryWidget::ConnectWidgets() connect(m_bp_log_check, &QCheckBox::toggled, this, &MemoryWidget::OnBPLogChanged); connect(m_memory_view, &MemoryViewWidget::ShowCode, this, &MemoryWidget::ShowCode); connect(m_memory_view, &MemoryViewWidget::RequestWatch, this, &MemoryWidget::RequestWatch); + connect(m_memory_view, &MemoryViewWidget::ActivateSearch, this, + &MemoryWidget::ActivateSearchAddress); } void MemoryWidget::closeEvent(QCloseEvent*) @@ -565,6 +567,12 @@ void MemoryWidget::SetAddress(u32 address) m_memory_view->setFocus(); } +void MemoryWidget::ActivateSearchAddress() +{ + m_search_address->setFocus(); + m_search_address->lineEdit()->selectAll(); +} + void MemoryWidget::OnSearchAddress() { const auto target_addr = GetTargetAddress(); diff --git a/Source/Core/DolphinQt/Debugger/MemoryWidget.h b/Source/Core/DolphinQt/Debugger/MemoryWidget.h index 9104e0516c..fad91e0626 100644 --- a/Source/Core/DolphinQt/Debugger/MemoryWidget.h +++ b/Source/Core/DolphinQt/Debugger/MemoryWidget.h @@ -82,6 +82,7 @@ private: void RegisterAfterFrameEventCallback(); void RemoveAfterFrameEventCallback(); void AutoUpdateTable(); + void ActivateSearchAddress(); Core::System& m_system;