summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
diff options
context:
space:
mode:
authorTryTwo <taolas@gmail.com>2025-05-19 23:30:20 -0700
committerTryTwo <taolas@gmail.com>2025-06-19 17:55:45 -0700
commit78065359bbcd3196273956ac9c014ec5ae200a53 (patch)
tree37aa6bf4e27855f8c3045be76f53b555e9fd9add /Source/Core/DolphinQt/Debugger/CodeWidget.cpp
parent040d9a43367f4e2a3aa57ddb47c41d5d13b5b39e (diff)
Debugger CodeWidget : Add search box for notes.
Diffstat (limited to 'Source/Core/DolphinQt/Debugger/CodeWidget.cpp')
-rw-r--r--Source/Core/DolphinQt/Debugger/CodeWidget.cpp49
1 files changed, 46 insertions, 3 deletions
diff --git a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
index e44477aa88..f650f5496f 100644
--- a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
+++ b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
@@ -16,7 +16,9 @@
#include <QPushButton>
#include <QSplitter>
#include <QStyleHints>
+#include <QTabWidget>
#include <QTableWidget>
+#include <QVBoxLayout>
#include <QWidget>
#include "Common/Event.h"
@@ -120,7 +122,7 @@ void CodeWidget::CreateWidgets()
m_box_splitter = new QSplitter(Qt::Vertical);
m_box_splitter->setStyleSheet(BOX_SPLITTER_STYLESHEET);
- auto add_search_line_edit = [this](const QString& name, QListWidget* list_widget) {
+ auto add_search_line_edit = [this](const QString& name, QWidget* list_widget) {
auto* widget = new QWidget;
auto* line_layout = new QGridLayout;
auto* label = new QLabel(name);
@@ -139,8 +141,12 @@ void CodeWidget::CreateWidgets()
m_search_callstack = add_search_line_edit(tr("Callstack"), m_callstack_list);
// Symbols
+ auto* symbols_tab = new QTabWidget;
m_symbols_list = new QListWidget;
- m_search_symbols = add_search_line_edit(tr("Symbols"), m_symbols_list);
+ m_note_list = new QListWidget;
+ symbols_tab->addTab(m_symbols_list, tr("Symbols"));
+ symbols_tab->addTab(m_note_list, tr("Notes"));
+ m_search_symbols = add_search_line_edit(tr("Symbols"), symbols_tab);
// Function calls
m_function_calls_list = new QListWidget;
@@ -198,7 +204,7 @@ void CodeWidget::ConnectWidgets()
connect(m_search_callstack, &QLineEdit::textChanged, this, &CodeWidget::UpdateCallstack);
connect(m_branch_watch, &QPushButton::clicked, this, &CodeWidget::OnBranchWatchDialog);
-
+ connect(m_note_list, &QListWidget::itemPressed, this, &CodeWidget::OnSelectNote);
connect(m_symbols_list, &QListWidget::itemPressed, this, &CodeWidget::OnSelectSymbol);
connect(m_callstack_list, &QListWidget::itemPressed, this, &CodeWidget::OnSelectCallstack);
connect(m_function_calls_list, &QListWidget::itemPressed, this,
@@ -236,6 +242,7 @@ void CodeWidget::OnSetCodeAddress(u32 address)
void CodeWidget::OnPPCSymbolsChanged()
{
UpdateSymbols();
+ UpdateNotes();
UpdateCallstack();
if (const Common::Symbol* symbol = m_ppc_symbol_db.GetSymbolFromAddr(m_code_view->GetAddress()))
{
@@ -279,6 +286,7 @@ void CodeWidget::OnSearchSymbols()
{
m_symbol_filter = m_search_symbols->text();
UpdateSymbols();
+ UpdateNotes();
}
void CodeWidget::OnSelectSymbol()
@@ -298,6 +306,17 @@ void CodeWidget::OnSelectSymbol()
m_code_view->setFocus();
}
+void CodeWidget::OnSelectNote()
+{
+ const auto items = m_note_list->selectedItems();
+ if (items.isEmpty())
+ return;
+
+ const u32 address = items[0]->data(Qt::UserRole).toUInt();
+
+ m_code_view->SetAddress(address, CodeViewWidget::SetAddressUpdate::WithUpdate);
+}
+
void CodeWidget::OnSelectCallstack()
{
const auto items = m_callstack_list->selectedItems();
@@ -426,6 +445,30 @@ void CodeWidget::UpdateSymbols()
m_symbols_list->sortItems();
}
+void CodeWidget::UpdateNotes()
+{
+ const QString selection = m_note_list->selectedItems().isEmpty() ?
+ QStringLiteral("") :
+ m_note_list->selectedItems()[0]->text();
+ m_note_list->clear();
+
+ for (const auto& note : m_ppc_symbol_db.Notes())
+ {
+ const QString name = QString::fromStdString(note.second.name);
+
+ auto* item = new QListWidgetItem(name);
+ if (name == selection)
+ item->setSelected(true);
+
+ item->setData(Qt::UserRole, note.second.address);
+
+ if (name.toUpper().indexOf(m_symbol_filter.toUpper()) != -1)
+ m_note_list->addItem(item);
+ }
+
+ m_note_list->sortItems();
+}
+
void CodeWidget::UpdateFunctionCalls(const Common::Symbol* symbol)
{
m_function_calls_list->clear();