diff options
author | flow <flowlnlnln@gmail.com> | 2022-12-06 11:50:03 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-06 11:50:03 -0800 |
commit | c6e4fdac7ebe7bde95604968e6058a247df455eb (patch) | |
tree | 2d596e3a56ff78792abf9c0438dcf2c080550d0a /launcher/ui/dialogs | |
parent | 9669377b06f12093d8b96a6b6d4f570fd5a8a790 (diff) | |
parent | c8c3fe1023439a020d094ab72f19d9ab91118e83 (diff) | |
download | PrismLauncher-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.cpp | 6 | ||||
-rw-r--r-- | launcher/ui/dialogs/BlockedModsDialog.h | 30 |
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); |