From 6785285f319b8f0d7949116c1983f303f5fee09e Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 11 Jan 2025 23:29:40 +1000 Subject: [PATCH] Qt: Fix game list toolbar/view menu desync --- src/duckstation-qt/gamelistwidget.cpp | 8 ++++---- src/duckstation-qt/gamelistwidget.h | 2 +- src/duckstation-qt/mainwindow.cpp | 26 +++++++++++++++++++++----- src/duckstation-qt/mainwindow.h | 1 + 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/duckstation-qt/gamelistwidget.cpp b/src/duckstation-qt/gamelistwidget.cpp index b912c9529..aca21d9c1 100644 --- a/src/duckstation-qt/gamelistwidget.cpp +++ b/src/duckstation-qt/gamelistwidget.cpp @@ -511,7 +511,7 @@ void GameListWidget::showGameList() setFocusProxy(m_table_view); resizeTableViewColumnsToFit(); updateToolbar(); - emit layoutChange(); + emit layoutChanged(); } void GameListWidget::showGameGrid() @@ -527,7 +527,7 @@ void GameListWidget::showGameGrid() m_ui.stack->setCurrentIndex(1); setFocusProxy(m_list_view); updateToolbar(); - emit layoutChange(); + emit layoutChanged(); } void GameListWidget::setShowCoverTitles(bool enabled) @@ -544,7 +544,7 @@ void GameListWidget::setShowCoverTitles(bool enabled) if (isShowingGameGrid()) m_model->refresh(); updateToolbar(); - emit layoutChange(); + emit layoutChanged(); } void GameListWidget::setMergeDiscSets(bool enabled) @@ -559,7 +559,7 @@ void GameListWidget::setMergeDiscSets(bool enabled) Host::CommitBaseSettingChanges(); m_sort_model->setMergeDiscSets(enabled); updateToolbar(); - emit layoutChange(); + emit layoutChanged(); } void GameListWidget::setShowGameIcons(bool enabled) diff --git a/src/duckstation-qt/gamelistwidget.h b/src/duckstation-qt/gamelistwidget.h index 02ef50783..8d671d0d2 100644 --- a/src/duckstation-qt/gamelistwidget.h +++ b/src/duckstation-qt/gamelistwidget.h @@ -66,7 +66,7 @@ Q_SIGNALS: void entryContextMenuRequested(const QPoint& point); void addGameDirectoryRequested(); - void layoutChange(); + void layoutChanged(); private Q_SLOTS: void onRefreshProgress(const QString& status, int current, int total, float time); diff --git a/src/duckstation-qt/mainwindow.cpp b/src/duckstation-qt/mainwindow.cpp index 892ce6eb1..c8b0729e9 100644 --- a/src/duckstation-qt/mainwindow.cpp +++ b/src/duckstation-qt/mainwindow.cpp @@ -1370,6 +1370,25 @@ void MainWindow::onGameListRefreshComplete() clearProgressBar(); } +void MainWindow::onGameListLayoutChanged() +{ + // re-sync with menu + { + QSignalBlocker sb(m_ui.actionGridViewShowTitles); + m_ui.actionGridViewShowTitles->setChecked(m_game_list_widget->isShowingGridCoverTitles()); + } + + { + QSignalBlocker sb(m_ui.actionMergeDiscSets); + m_ui.actionMergeDiscSets->setChecked(m_game_list_widget->isMergingDiscSets()); + } + + { + QSignalBlocker sb(m_ui.actionShowGameIcons); + m_ui.actionShowGameIcons->setChecked(m_game_list_widget->isShowingGameIcons()); + } +} + void MainWindow::onGameListSelectionChanged() { auto lock = GameList::GetLock(); @@ -1621,9 +1640,6 @@ void MainWindow::setupAdditionalUi() m_game_list_widget = new GameListWidget(getContentParent()); m_game_list_widget->initialize(); - m_ui.actionGridViewShowTitles->setChecked(m_game_list_widget->isShowingGridCoverTitles()); - m_ui.actionMergeDiscSets->setChecked(m_game_list_widget->isMergingDiscSets()); - m_ui.actionShowGameIcons->setChecked(m_game_list_widget->isShowingGameIcons()); if (s_use_central_widget) { m_ui.mainContainer = nullptr; // setCentralWidget() will delete this @@ -1663,14 +1679,13 @@ void MainWindow::setupAdditionalUi() m_settings_toolbar_menu->addAction(m_ui.actionSettings); m_settings_toolbar_menu->addAction(m_ui.actionViewGameProperties); - m_ui.actionGridViewShowTitles->setChecked(m_game_list_widget->isShowingGridCoverTitles()); - for (u32 scale = 1; scale <= 10; scale++) { QAction* action = m_ui.menuWindowSize->addAction(tr("%1x Scale").arg(scale)); connect(action, &QAction::triggered, [scale]() { g_emu_thread->requestDisplaySize(scale); }); } + onGameListLayoutChanged(); updateDebugMenuVisibility(); m_shortcuts.open_file = @@ -2091,6 +2106,7 @@ void MainWindow::connectSignals() // These need to be queued connections to stop crashing due to menus opening/closing and switching focus. connect(m_game_list_widget, &GameListWidget::refreshProgress, this, &MainWindow::onGameListRefreshProgress); connect(m_game_list_widget, &GameListWidget::refreshComplete, this, &MainWindow::onGameListRefreshComplete); + connect(m_game_list_widget, &GameListWidget::layoutChanged, this, &MainWindow::onGameListLayoutChanged); connect(m_game_list_widget, &GameListWidget::selectionChanged, this, &MainWindow::onGameListSelectionChanged, Qt::QueuedConnection); connect(m_game_list_widget, &GameListWidget::entryActivated, this, &MainWindow::onGameListEntryActivated, diff --git a/src/duckstation-qt/mainwindow.h b/src/duckstation-qt/mainwindow.h index 49b890d57..ba41bbb73 100644 --- a/src/duckstation-qt/mainwindow.h +++ b/src/duckstation-qt/mainwindow.h @@ -196,6 +196,7 @@ private Q_SLOTS: void onGameListRefreshComplete(); void onGameListRefreshProgress(const QString& status, int current, int total); + void onGameListLayoutChanged(); void onGameListSelectionChanged(); void onGameListEntryActivated(); void onGameListEntryContextMenuRequested(const QPoint& point);