Qt: Fix remove game directory button being enabled w/o selection

This commit is contained in:
Stenzek 2024-05-07 01:50:24 +10:00 committed by Connor McLaughlin
parent 1881139b0a
commit 7bc5427908
6 changed files with 35 additions and 16 deletions

View File

@ -40,7 +40,7 @@
static std::recursive_mutex s_exception_handler_mutex; static std::recursive_mutex s_exception_handler_mutex;
static bool s_in_exception_handler = false; static bool s_in_exception_handler = false;
static bool s_exception_handler_installed = true; static bool s_exception_handler_installed = false;
#ifdef __APPLE__ #ifdef __APPLE__
#include <mach/task.h> #include <mach/task.h>

View File

@ -19,7 +19,7 @@
static std::recursive_mutex s_exception_handler_mutex; static std::recursive_mutex s_exception_handler_mutex;
static bool s_in_exception_handler = false; static bool s_in_exception_handler = false;
static bool s_exception_handler_installed = true; static bool s_exception_handler_installed = false;
long __stdcall SysPageFaultExceptionFilter(EXCEPTION_POINTERS* eps) long __stdcall SysPageFaultExceptionFilter(EXCEPTION_POINTERS* eps)
{ {

View File

@ -40,16 +40,14 @@ GameListSettingsWidget::GameListSettingsWidget(SettingsWindow* dialog, QWidget*
m_ui.searchDirectoryList->setCurrentIndex({}); m_ui.searchDirectoryList->setCurrentIndex({});
m_ui.searchDirectoryList->setContextMenuPolicy(Qt::ContextMenuPolicy::CustomContextMenu); m_ui.searchDirectoryList->setContextMenuPolicy(Qt::ContextMenuPolicy::CustomContextMenu);
connect(m_ui.searchDirectoryList, &QTableWidget::customContextMenuRequested, this, connect(m_ui.searchDirectoryList, &QTableWidget::customContextMenuRequested, this, &GameListSettingsWidget::onDirectoryListContextMenuRequested);
&GameListSettingsWidget::onDirectoryListContextMenuRequested); connect(m_ui.searchDirectoryList, &QTableWidget::itemSelectionChanged, this, &GameListSettingsWidget::onDirectoryListSelectionChanged);
connect(m_ui.addSearchDirectoryButton, &QPushButton::clicked, this, connect(m_ui.addSearchDirectoryButton, &QPushButton::clicked, this, &GameListSettingsWidget::onAddSearchDirectoryButtonClicked);
&GameListSettingsWidget::onAddSearchDirectoryButtonClicked); connect(m_ui.removeSearchDirectoryButton, &QPushButton::clicked, this, &GameListSettingsWidget::onRemoveSearchDirectoryButtonClicked);
connect(m_ui.removeSearchDirectoryButton, &QPushButton::clicked, this,
&GameListSettingsWidget::onRemoveSearchDirectoryButtonClicked);
connect(m_ui.addExcludedFile, &QPushButton::clicked, this, &GameListSettingsWidget::onAddExcludedFileButtonClicked); connect(m_ui.addExcludedFile, &QPushButton::clicked, this, &GameListSettingsWidget::onAddExcludedFileButtonClicked);
connect(m_ui.addExcludedPath, &QPushButton::clicked, this, &GameListSettingsWidget::onAddExcludedPathButtonClicked); connect(m_ui.addExcludedPath, &QPushButton::clicked, this, &GameListSettingsWidget::onAddExcludedPathButtonClicked);
connect(m_ui.removeExcludedPath, &QPushButton::clicked, this, connect(m_ui.removeExcludedPath, &QPushButton::clicked, this, &GameListSettingsWidget::onRemoveExcludedPathButtonClicked);
&GameListSettingsWidget::onRemoveExcludedPathButtonClicked); connect(m_ui.excludedPaths, &QListWidget::itemSelectionChanged, this, &GameListSettingsWidget::onExcludedPathsSelectionChanged);
connect(m_ui.rescanAllGames, &QPushButton::clicked, this, &GameListSettingsWidget::onRescanAllGamesClicked); connect(m_ui.rescanAllGames, &QPushButton::clicked, this, &GameListSettingsWidget::onRescanAllGamesClicked);
connect(m_ui.scanForNewGames, &QPushButton::clicked, this, &GameListSettingsWidget::onScanForNewGamesClicked); connect(m_ui.scanForNewGames, &QPushButton::clicked, this, &GameListSettingsWidget::onScanForNewGamesClicked);
@ -77,6 +75,8 @@ void GameListSettingsWidget::refreshExclusionList()
const std::vector<std::string> paths(Host::GetBaseStringListSetting("GameList", "ExcludedPaths")); const std::vector<std::string> paths(Host::GetBaseStringListSetting("GameList", "ExcludedPaths"));
for (const std::string& path : paths) for (const std::string& path : paths)
m_ui.excludedPaths->addItem(QString::fromStdString(path)); m_ui.excludedPaths->addItem(QString::fromStdString(path));
m_ui.removeExcludedPath->setEnabled(false);
} }
bool GameListSettingsWidget::event(QEvent* event) bool GameListSettingsWidget::event(QEvent* event)
@ -142,6 +142,8 @@ void GameListSettingsWidget::refreshDirectoryList()
addPathToTable(entry, true); addPathToTable(entry, true);
m_ui.searchDirectoryList->sortByColumn(0, Qt::AscendingOrder); m_ui.searchDirectoryList->sortByColumn(0, Qt::AscendingOrder);
m_ui.removeSearchDirectoryButton->setEnabled(false);
} }
void GameListSettingsWidget::addSearchDirectory(const QString& path, bool recursive) void GameListSettingsWidget::addSearchDirectory(const QString& path, bool recursive)
@ -185,6 +187,11 @@ void GameListSettingsWidget::onDirectoryListContextMenuRequested(const QPoint& p
menu.exec(m_ui.searchDirectoryList->mapToGlobal(point)); menu.exec(m_ui.searchDirectoryList->mapToGlobal(point));
} }
void GameListSettingsWidget::onDirectoryListSelectionChanged()
{
m_ui.removeSearchDirectoryButton->setEnabled(m_ui.searchDirectoryList->selectionModel()->hasSelection());
}
void GameListSettingsWidget::addSearchDirectory(QWidget* parent_widget) void GameListSettingsWidget::addSearchDirectory(QWidget* parent_widget)
{ {
QString dir = QString dir =
@ -258,6 +265,11 @@ void GameListSettingsWidget::onRemoveExcludedPathButtonClicked()
g_main_window->refreshGameList(false); g_main_window->refreshGameList(false);
} }
void GameListSettingsWidget::onExcludedPathsSelectionChanged()
{
m_ui.removeExcludedPath->setEnabled(!m_ui.excludedPaths->selectedItems().isEmpty());
}
void GameListSettingsWidget::onRescanAllGamesClicked() void GameListSettingsWidget::onRescanAllGamesClicked()
{ {
g_main_window->refreshGameList(true); g_main_window->refreshGameList(true);

View File

@ -28,11 +28,13 @@ public Q_SLOTS:
private Q_SLOTS: private Q_SLOTS:
void onDirectoryListContextMenuRequested(const QPoint& point); void onDirectoryListContextMenuRequested(const QPoint& point);
void onDirectoryListSelectionChanged();
void onAddSearchDirectoryButtonClicked(); void onAddSearchDirectoryButtonClicked();
void onRemoveSearchDirectoryButtonClicked(); void onRemoveSearchDirectoryButtonClicked();
void onAddExcludedFileButtonClicked(); void onAddExcludedFileButtonClicked();
void onAddExcludedPathButtonClicked(); void onAddExcludedPathButtonClicked();
void onRemoveExcludedPathButtonClicked(); void onRemoveExcludedPathButtonClicked();
void onExcludedPathsSelectionChanged();
void onScanForNewGamesClicked(); void onScanForNewGamesClicked();
void onRescanAllGamesClicked(); void onRescanAllGamesClicked();

View File

@ -237,12 +237,10 @@ void SetupWizardDialog::setupGameListPage()
m_ui.searchDirectoryList->setCurrentIndex({}); m_ui.searchDirectoryList->setCurrentIndex({});
m_ui.searchDirectoryList->setContextMenuPolicy(Qt::ContextMenuPolicy::CustomContextMenu); m_ui.searchDirectoryList->setContextMenuPolicy(Qt::ContextMenuPolicy::CustomContextMenu);
connect(m_ui.searchDirectoryList, &QTableWidget::customContextMenuRequested, this, connect(m_ui.searchDirectoryList, &QTableWidget::customContextMenuRequested, this, &SetupWizardDialog::onDirectoryListContextMenuRequested);
&SetupWizardDialog::onDirectoryListContextMenuRequested); connect(m_ui.searchDirectoryList, &QTableWidget::itemSelectionChanged, this, &SetupWizardDialog::onDirectoryListSelectionChanged);
connect(m_ui.addSearchDirectoryButton, &QPushButton::clicked, this, connect(m_ui.addSearchDirectoryButton, &QPushButton::clicked, this, &SetupWizardDialog::onAddSearchDirectoryButtonClicked);
&SetupWizardDialog::onAddSearchDirectoryButtonClicked); connect(m_ui.removeSearchDirectoryButton, &QPushButton::clicked, this, &SetupWizardDialog::onRemoveSearchDirectoryButtonClicked);
connect(m_ui.removeSearchDirectoryButton, &QPushButton::clicked, this,
&SetupWizardDialog::onRemoveSearchDirectoryButtonClicked);
refreshDirectoryList(); refreshDirectoryList();
} }
@ -263,6 +261,11 @@ void SetupWizardDialog::onDirectoryListContextMenuRequested(const QPoint& point)
menu.exec(m_ui.searchDirectoryList->mapToGlobal(point)); menu.exec(m_ui.searchDirectoryList->mapToGlobal(point));
} }
void SetupWizardDialog::onDirectoryListSelectionChanged()
{
m_ui.removeSearchDirectoryButton->setEnabled(!m_ui.searchDirectoryList->selectedItems().isEmpty());
}
void SetupWizardDialog::onAddSearchDirectoryButtonClicked() void SetupWizardDialog::onAddSearchDirectoryButtonClicked()
{ {
QString dir = QDir::toNativeSeparators(QFileDialog::getExistingDirectory(this, tr("Select Search Directory"))); QString dir = QDir::toNativeSeparators(QFileDialog::getExistingDirectory(this, tr("Select Search Directory")));
@ -349,6 +352,7 @@ void SetupWizardDialog::refreshDirectoryList()
addPathToTable(entry, true); addPathToTable(entry, true);
m_ui.searchDirectoryList->sortByColumn(0, Qt::AscendingOrder); m_ui.searchDirectoryList->sortByColumn(0, Qt::AscendingOrder);
m_ui.removeSearchDirectoryButton->setEnabled(false);
} }
void SetupWizardDialog::resizeDirectoryListColumns() void SetupWizardDialog::resizeDirectoryListColumns()

View File

@ -33,6 +33,7 @@ private Q_SLOTS:
void biosListItemChanged(const QTreeWidgetItem* current, const QTreeWidgetItem* previous); void biosListItemChanged(const QTreeWidgetItem* current, const QTreeWidgetItem* previous);
void onDirectoryListContextMenuRequested(const QPoint& point); void onDirectoryListContextMenuRequested(const QPoint& point);
void onDirectoryListSelectionChanged();
void onAddSearchDirectoryButtonClicked(); void onAddSearchDirectoryButtonClicked();
void onRemoveSearchDirectoryButtonClicked(); void onRemoveSearchDirectoryButtonClicked();
void refreshDirectoryList(); void refreshDirectoryList();