From c837d9c91c7dea5d34d2b5598e3307230456cd85 Mon Sep 17 00:00:00 2001 From: chaoticgd <43898262+chaoticgd@users.noreply.github.com> Date: Wed, 26 Mar 2025 01:19:19 +0000 Subject: [PATCH] Qt: Fix custom scan range settings and make sure to save symbol sources --- .../Settings/DebugAnalysisSettingsWidget.cpp | 60 ++++++++++++------- .../Settings/DebugAnalysisSettingsWidget.h | 2 +- 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/pcsx2-qt/Settings/DebugAnalysisSettingsWidget.cpp b/pcsx2-qt/Settings/DebugAnalysisSettingsWidget.cpp index 7be804cf50..5d430047ab 100644 --- a/pcsx2-qt/Settings/DebugAnalysisSettingsWidget.cpp +++ b/pcsx2-qt/Settings/DebugAnalysisSettingsWidget.cpp @@ -19,10 +19,14 @@ DebugAnalysisSettingsWidget::DebugAnalysisSettingsWidget(QWidget* parent) setupSymbolSourceGrid(); - m_ui.importFromElf->setChecked(Host::GetBoolSettingValue("Debugger/Analysis", "ImportSymbolsFromELF", true)); - m_ui.importSymFileFromDefaultLocation->setChecked(Host::GetBoolSettingValue("Debugger/Analysis", "ImportSymFileFromDefaultLocation", true)); - m_ui.demangleSymbols->setChecked(Host::GetBoolSettingValue("Debugger/Analysis", "DemangleSymbols", true)); - m_ui.demangleParameters->setChecked(Host::GetBoolSettingValue("Debugger/Analysis", "DemangleParameters", true)); + m_ui.importFromElf->setChecked( + Host::GetBoolSettingValue("Debugger/Analysis", "ImportSymbolsFromELF", true)); + m_ui.importSymFileFromDefaultLocation->setChecked( + Host::GetBoolSettingValue("Debugger/Analysis", "ImportSymFileFromDefaultLocation", true)); + m_ui.demangleSymbols->setChecked( + Host::GetBoolSettingValue("Debugger/Analysis", "DemangleSymbols", true)); + m_ui.demangleParameters->setChecked( + Host::GetBoolSettingValue("Debugger/Analysis", "DemangleParameters", true)); setupSymbolFileList(); @@ -36,15 +40,22 @@ DebugAnalysisSettingsWidget::DebugAnalysisSettingsWidget(QWidget* parent) m_ui.functionScanMode->setCurrentIndex(i); } - m_ui.customAddressRange->setChecked(Host::GetBoolSettingValue("Debugger/Analysis", "CustomFunctionScanRange", false)); - m_ui.addressRangeStart->setText(QString::fromStdString(Host::GetStringSettingValue("Debugger/Analysis", "FunctionScanStartAddress", ""))); - m_ui.addressRangeEnd->setText(QString::fromStdString(Host::GetStringSettingValue("Debugger/Analysis", "FunctionScanEndAddress", ""))); + m_ui.customAddressRange->setChecked( + Host::GetBoolSettingValue("Debugger/Analysis", "CustomFunctionScanRange", false)); + m_ui.addressRangeStart->setText(QString::fromStdString( + Host::GetStringSettingValue("Debugger/Analysis", "FunctionScanStartAddress", ""))); + m_ui.addressRangeEnd->setText(QString::fromStdString( + Host::GetStringSettingValue("Debugger/Analysis", "FunctionScanEndAddress", ""))); - m_ui.grayOutOverwrittenFunctions->setChecked(Host::GetBoolSettingValue("Debugger/Analysis", "GenerateFunctionHashes", true)); + m_ui.grayOutOverwrittenFunctions->setChecked( + Host::GetBoolSettingValue("Debugger/Analysis", "GenerateFunctionHashes", true)); - connect(m_ui.automaticallyClearSymbols, &QCheckBox::checkStateChanged, this, &DebugAnalysisSettingsWidget::updateEnabledStates); - connect(m_ui.demangleSymbols, &QCheckBox::checkStateChanged, this, &DebugAnalysisSettingsWidget::updateEnabledStates); - connect(m_ui.customAddressRange, &QCheckBox::checkStateChanged, this, &DebugAnalysisSettingsWidget::updateEnabledStates); + connect(m_ui.automaticallyClearSymbols, &QCheckBox::checkStateChanged, + this, &DebugAnalysisSettingsWidget::updateEnabledStates); + connect(m_ui.demangleSymbols, &QCheckBox::checkStateChanged, + this, &DebugAnalysisSettingsWidget::updateEnabledStates); + connect(m_ui.customAddressRange, &QCheckBox::checkStateChanged, + this, &DebugAnalysisSettingsWidget::updateEnabledStates); updateEnabledStates(); } @@ -122,8 +133,16 @@ DebugAnalysisSettingsWidget::DebugAnalysisSettingsWidget(SettingsWindow* dialog, { SettingWidgetBinder::BindWidgetToBoolSetting( sif, m_ui.customAddressRange, "Debugger/Analysis", "CustomFunctionScanRange", false); - connect(m_ui.addressRangeStart, &QLineEdit::textChanged, this, &DebugAnalysisSettingsWidget::functionScanRangeChanged); - connect(m_ui.addressRangeEnd, &QLineEdit::textChanged, this, &DebugAnalysisSettingsWidget::functionScanRangeChanged); + + m_ui.addressRangeStart->setText(QString::fromStdString( + getStringSettingValue("Debugger/Analysis", "FunctionScanStartAddress", ""))); + m_ui.addressRangeEnd->setText(QString::fromStdString( + getStringSettingValue("Debugger/Analysis", "FunctionScanEndAddress", ""))); + + connect(m_ui.addressRangeStart, &QLineEdit::textChanged, + this, &DebugAnalysisSettingsWidget::saveFunctionScanRange); + connect(m_ui.addressRangeEnd, &QLineEdit::textChanged, + this, &DebugAnalysisSettingsWidget::saveFunctionScanRange); m_dialog->registerWidgetHelp(m_ui.customAddressRange, tr("Custom Address Range"), tr("Unchecked"), tr("Whether to look for functions from the address range specified (Checked), or from the ELF segment " @@ -302,6 +321,9 @@ void DebugAnalysisSettingsWidget::saveSymbolSources() i++; } + + QtHost::SaveGameSettings(sif, true); + g_emu_thread->reloadGameSettings(); } void DebugAnalysisSettingsWidget::setupSymbolFileList() @@ -445,7 +467,7 @@ void DebugAnalysisSettingsWidget::saveSymbolFiles() g_emu_thread->reloadGameSettings(); } -void DebugAnalysisSettingsWidget::functionScanRangeChanged() +void DebugAnalysisSettingsWidget::saveFunctionScanRange() { if (!m_dialog) return; @@ -457,13 +479,11 @@ void DebugAnalysisSettingsWidget::functionScanRangeChanged() QString start_address = m_ui.addressRangeStart->text(); QString end_address = m_ui.addressRangeEnd->text(); - bool ok; + sif->SetStringValue("Debugger/Analysis", "FunctionScanStartAddress", start_address.toStdString().c_str()); + sif->SetStringValue("Debugger/Analysis", "FunctionScanEndAddress", end_address.toStdString().c_str()); - if (start_address.toUInt(&ok, 16), ok) - sif->SetStringValue("Debugger/Analysis", "FunctionScanStartAddress", start_address.toStdString().c_str()); - - if (end_address.toUInt(&ok, 16), ok) - sif->SetStringValue("Debugger/Analysis", "FunctionScanEndAddress", end_address.toStdString().c_str()); + QtHost::SaveGameSettings(sif, true); + g_emu_thread->reloadGameSettings(); } void DebugAnalysisSettingsWidget::updateEnabledStates() diff --git a/pcsx2-qt/Settings/DebugAnalysisSettingsWidget.h b/pcsx2-qt/Settings/DebugAnalysisSettingsWidget.h index cce32395b3..018430d517 100644 --- a/pcsx2-qt/Settings/DebugAnalysisSettingsWidget.h +++ b/pcsx2-qt/Settings/DebugAnalysisSettingsWidget.h @@ -38,7 +38,7 @@ protected: void removeSymbolFile(); void saveSymbolFiles(); - void functionScanRangeChanged(); + void saveFunctionScanRange(); void updateEnabledStates();