diff --git a/src/qt/qt_settings.cpp b/src/qt/qt_settings.cpp index 312b48996..d1c25a014 100644 --- a/src/qt/qt_settings.cpp +++ b/src/qt/qt_settings.cpp @@ -44,6 +44,9 @@ extern "C" { #include #include +#include +#include + class SettingsModel : public QAbstractListModel { public: SettingsModel(QObject *parent) @@ -236,5 +239,36 @@ Settings::accept() return; } } + QDialog::accept(); } + +static int +plat_path_is_empty(char *path) +{ + int n = 0; + DIR *dir = opendir(path); + struct dirent *d; + + if (dir == NULL) + /* Not a directory or doesn't exist. */ + return 1; + + while ((d = readdir(dir)) != NULL) { + if (++n > 2) + break; + } + + closedir(dir); + + return (n <= 2); +} + +void +Settings::reject() +{ + if (plat_path_is_empty(usr_path)) + rmdir(usr_path); + + QDialog::reject(); +}