diff options
| author | TryTwo <taolas@gmail.com> | 2025-05-19 23:30:20 -0700 |
|---|---|---|
| committer | TryTwo <taolas@gmail.com> | 2025-06-19 17:55:45 -0700 |
| commit | 78065359bbcd3196273956ac9c014ec5ae200a53 (patch) | |
| tree | 37aa6bf4e27855f8c3045be76f53b555e9fd9add /Source/Core/DolphinQt/Debugger/CodeWidget.cpp | |
| parent | 040d9a43367f4e2a3aa57ddb47c41d5d13b5b39e (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.cpp | 49 |
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(); |
