aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/dialogs
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-12-06 11:50:03 -0800
committerGitHub <noreply@github.com>2022-12-06 11:50:03 -0800
commitc6e4fdac7ebe7bde95604968e6058a247df455eb (patch)
tree2d596e3a56ff78792abf9c0438dcf2c080550d0a /launcher/ui/dialogs
parent9669377b06f12093d8b96a6b6d4f570fd5a8a790 (diff)
parentc8c3fe1023439a020d094ab72f19d9ab91118e83 (diff)
downloadPrismLauncher-c6e4fdac7ebe7bde95604968e6058a247df455eb.tar.gz
PrismLauncher-c6e4fdac7ebe7bde95604968e6058a247df455eb.tar.bz2
PrismLauncher-c6e4fdac7ebe7bde95604968e6058a247df455eb.zip
Merge pull request #557 from Scrumplex/fix-fswatcher-segfault
Closes https://github.com/PrismLauncher/PrismLauncher/issues/555
Diffstat (limited to 'launcher/ui/dialogs')
-rw-r--r--launcher/ui/dialogs/BlockedModsDialog.cpp6
-rw-r--r--launcher/ui/dialogs/BlockedModsDialog.h30
2 files changed, 23 insertions, 13 deletions
diff --git a/launcher/ui/dialogs/BlockedModsDialog.cpp b/launcher/ui/dialogs/BlockedModsDialog.cpp
index edb4ff7d..214eeeaa 100644
--- a/launcher/ui/dialogs/BlockedModsDialog.cpp
+++ b/launcher/ui/dialogs/BlockedModsDialog.cpp
@@ -79,6 +79,12 @@ void BlockedModsDialog::dropEvent(QDropEvent* e)
update();
}
+void BlockedModsDialog::done(int r)
+{
+ QDialog::done(r);
+ disconnect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, &BlockedModsDialog::directoryChanged);
+}
+
void BlockedModsDialog::openAll()
{
for (auto& mod : m_mods) {
diff --git a/launcher/ui/dialogs/BlockedModsDialog.h b/launcher/ui/dialogs/BlockedModsDialog.h
index dac43cba..f5aef8bf 100644
--- a/launcher/ui/dialogs/BlockedModsDialog.h
+++ b/launcher/ui/dialogs/BlockedModsDialog.h
@@ -1,8 +1,8 @@
#pragma once
#include <QDialog>
-#include <QString>
#include <QList>
+#include <QString>
#include <QFileSystemWatcher>
@@ -16,28 +16,32 @@ struct BlockedMod {
QString hash;
bool matched;
QString localPath;
-
};
QT_BEGIN_NAMESPACE
-namespace Ui { class BlockedModsDialog; }
+namespace Ui {
+class BlockedModsDialog;
+}
QT_END_NAMESPACE
class BlockedModsDialog : public QDialog {
-Q_OBJECT
+ Q_OBJECT
-public:
- BlockedModsDialog(QWidget *parent, const QString &title, const QString &text, QList<BlockedMod> &mods);
+ public:
+ BlockedModsDialog(QWidget* parent, const QString& title, const QString& text, QList<BlockedMod>& mods);
~BlockedModsDialog() override;
-protected:
- void dragEnterEvent(QDragEnterEvent *event) override;
- void dropEvent(QDropEvent *event) override;
+ protected:
+ void dragEnterEvent(QDragEnterEvent* event) override;
+ void dropEvent(QDropEvent* event) override;
+
+ protected slots:
+ void done(int r) override;
-private:
- Ui::BlockedModsDialog *ui;
- QList<BlockedMod> &m_mods;
+ private:
+ Ui::BlockedModsDialog* ui;
+ QList<BlockedMod>& m_mods;
QFileSystemWatcher m_watcher;
shared_qobject_ptr<ConcurrentTask> m_hashing_task;
QSet<QString> m_pending_hash_paths;
@@ -61,4 +65,4 @@ private:
bool allModsMatched();
};
-QDebug operator<<(QDebug debug, const BlockedMod &m);
+QDebug operator<<(QDebug debug, const BlockedMod& m);