From ecce8e81c8482a36db92290a546c536e8824f8a9 Mon Sep 17 00:00:00 2001 From: mitaclaw <140017135+mitaclaw@users.noreply.github.com> Date: Fri, 24 May 2024 15:42:04 -0700 Subject: [PATCH 1/3] BranchWatchDialog: Case-Insensitive Sorting --- Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp b/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp index f68b6d5bbf..a5b6358e04 100644 --- a/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp +++ b/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp @@ -216,6 +216,7 @@ BranchWatchDialog::BranchWatchDialog(Core::System& system, Core::BranchWatch& br m_table_proxy->setSourceModel( m_table_model = new BranchWatchTableModel(m_system, m_branch_watch, ppc_symbol_db)); m_table_proxy->setSortRole(UserRole::SortRole); + m_table_proxy->setSortCaseSensitivity(Qt::CaseInsensitive); m_table_model->setFont(ui_settings.GetDebugFont()); connect(&ui_settings, &Settings::DebugFontChanged, m_table_model, From 4a2ec86a9a5bfaeefa2bb108c8d3fd7158f22d69 Mon Sep 17 00:00:00 2001 From: mitaclaw <140017135+mitaclaw@users.noreply.github.com> Date: Fri, 24 May 2024 15:44:49 -0700 Subject: [PATCH 2/3] Branch Watch Tool: Add Rule Of 5 And Remove Unnecessary Include --- Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp | 6 ++++++ Source/Core/DolphinQt/Debugger/BranchWatchDialog.h | 8 ++++++-- Source/Core/DolphinQt/Debugger/BranchWatchTableModel.h | 7 +++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp b/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp index a5b6358e04..e35259d2d2 100644 --- a/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp +++ b/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp @@ -57,6 +57,12 @@ public: : QSortFilterProxyModel(parent), m_branch_watch(branch_watch) { } + ~BranchWatchProxyModel() override = default; + + BranchWatchProxyModel(const BranchWatchProxyModel&) = delete; + BranchWatchProxyModel(BranchWatchProxyModel&&) = delete; + BranchWatchProxyModel& operator=(const BranchWatchProxyModel&) = delete; + BranchWatchProxyModel& operator=(BranchWatchProxyModel&&) = delete; BranchWatchTableModel* sourceModel() const { diff --git a/Source/Core/DolphinQt/Debugger/BranchWatchDialog.h b/Source/Core/DolphinQt/Debugger/BranchWatchDialog.h index dfeff8f4b3..b45f4c8563 100644 --- a/Source/Core/DolphinQt/Debugger/BranchWatchDialog.h +++ b/Source/Core/DolphinQt/Debugger/BranchWatchDialog.h @@ -9,12 +9,11 @@ #include #include -#include "Core/Core.h" - namespace Core { class BranchWatch; class CPUThreadGuard; +enum class State; class System; } // namespace Core class PPCSymbolDB; @@ -54,6 +53,11 @@ public: QWidget* parent = nullptr); ~BranchWatchDialog() override; + BranchWatchDialog(const BranchWatchDialog&) = delete; + BranchWatchDialog(BranchWatchDialog&&) = delete; + BranchWatchDialog& operator=(const BranchWatchDialog&) = delete; + BranchWatchDialog& operator=(BranchWatchDialog&&) = delete; + protected: void hideEvent(QHideEvent* event) override; void showEvent(QShowEvent* event) override; diff --git a/Source/Core/DolphinQt/Debugger/BranchWatchTableModel.h b/Source/Core/DolphinQt/Debugger/BranchWatchTableModel.h index b91dba37d2..aad2fd783a 100644 --- a/Source/Core/DolphinQt/Debugger/BranchWatchTableModel.h +++ b/Source/Core/DolphinQt/Debugger/BranchWatchTableModel.h @@ -75,6 +75,13 @@ public: m_ppc_symbol_db(ppc_symbol_db) { } + ~BranchWatchTableModel() override = default; + + BranchWatchTableModel(const BranchWatchTableModel&) = delete; + BranchWatchTableModel(BranchWatchTableModel&&) = delete; + BranchWatchTableModel& operator=(const BranchWatchTableModel&) = delete; + BranchWatchTableModel& operator=(BranchWatchTableModel&&) = delete; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; From 3b214a4978129a96b136aa23ce9ca5843fb3e3f4 Mon Sep 17 00:00:00 2001 From: mitaclaw <140017135+mitaclaw@users.noreply.github.com> Date: Fri, 24 May 2024 16:44:43 -0700 Subject: [PATCH 3/3] BranchWatchDialog: Resolve Linux FIXME This stopped being an issue for me with a recent package update, so I guess Qt6 was fixed upstream? --- .../DolphinQt/Debugger/BranchWatchDialog.cpp | 16 +++++----------- Source/Core/DolphinQt/Debugger/CodeWidget.cpp | 1 + 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp b/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp index e35259d2d2..c20b2e3c2d 100644 --- a/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp +++ b/Source/Core/DolphinQt/Debugger/BranchWatchDialog.cpp @@ -207,7 +207,6 @@ BranchWatchDialog::BranchWatchDialog(Core::System& system, Core::BranchWatch& br { setWindowTitle(tr("Branch Watch Tool")); setWindowFlags((windowFlags() | Qt::WindowMinMaxButtonsHint) & ~Qt::WindowContextHelpButtonHint); - SetQWidgetWindowDecorations(this); setLayout([this, &ppc_symbol_db]() { auto* main_layout = new QVBoxLayout; @@ -241,6 +240,11 @@ BranchWatchDialog::BranchWatchDialog(Core::System& system, Core::BranchWatch& br table_view->setEditTriggers(QAbstractItemView::NoEditTriggers); table_view->setCornerButtonEnabled(false); table_view->verticalHeader()->hide(); + table_view->setColumnWidth(Column::Instruction, 50); + table_view->setColumnWidth(Column::Condition, 50); + table_view->setColumnWidth(Column::OriginSymbol, 250); + table_view->setColumnWidth(Column::DestinSymbol, 250); + // The default column width (100 units) is fine for the rest. QHeaderView* const horizontal_header = table_view->horizontalHeader(); horizontal_header->restoreState( // Restore column visibility state. @@ -502,16 +506,6 @@ BranchWatchDialog::BranchWatchDialog(Core::System& system, Core::BranchWatch& br return main_layout; }()); - // FIXME: On Linux, Qt6 has recently been resetting column widths to their defaults in many - // unexpected ways. This affects all kinds of QTables in Dolphin's GUI, so to avoid it in - // this QTableView, I have deferred this operation. Any earlier, and this would be undone. - // SetQWidgetWindowDecorations was moved to before these operations for the same reason. - m_table_view->setColumnWidth(Column::Instruction, 50); - m_table_view->setColumnWidth(Column::Condition, 50); - m_table_view->setColumnWidth(Column::OriginSymbol, 250); - m_table_view->setColumnWidth(Column::DestinSymbol, 250); - // The default column width (100 units) is fine for the rest. - const auto& settings = Settings::GetQSettings(); restoreGeometry(settings.value(QStringLiteral("branchwatchdialog/geometry")).toByteArray()); } diff --git a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp index 15683c973d..e5dd96014b 100644 --- a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp @@ -206,6 +206,7 @@ void CodeWidget::OnBranchWatchDialog() m_branch_watch_dialog = new BranchWatchDialog(m_system, m_system.GetPowerPC().GetBranchWatch(), m_ppc_symbol_db, this, this); } + SetQWidgetWindowDecorations(m_branch_watch_dialog); m_branch_watch_dialog->show(); m_branch_watch_dialog->raise(); m_branch_watch_dialog->activateWindow();