diff --git a/src/gui/dialogs/formmain.cpp b/src/gui/dialogs/formmain.cpp index a921cbf02..772f55b5d 100755 --- a/src/gui/dialogs/formmain.cpp +++ b/src/gui/dialogs/formmain.cpp @@ -492,6 +492,10 @@ void FormMain::backupDatabaseSettings() { void FormMain::restoreDatabaseSettings() { QScopedPointer form(new FormRestoreDatabaseSettings(this)); form->exec(); + + if (form->shouldRestart()) { + qApp->restart(); + } } void FormMain::changeEvent(QEvent *event) { diff --git a/src/gui/dialogs/formrestoredatabasesettings.cpp b/src/gui/dialogs/formrestoredatabasesettings.cpp index 43bc8a3d6..354f99691 100755 --- a/src/gui/dialogs/formrestoredatabasesettings.cpp +++ b/src/gui/dialogs/formrestoredatabasesettings.cpp @@ -26,7 +26,7 @@ FormRestoreDatabaseSettings::FormRestoreDatabaseSettings(QWidget *parent) - : QDialog(parent), m_ui(new Ui::FormRestoreDatabaseSettings) { + : QDialog(parent), m_ui(new Ui::FormRestoreDatabaseSettings), m_shouldRestart(false) { m_ui->setupUi(this); m_btnRestart = m_ui->m_buttonBox->addButton(tr("Restart"), QDialogButtonBox::ActionRole); @@ -35,7 +35,10 @@ FormRestoreDatabaseSettings::FormRestoreDatabaseSettings(QWidget *parent) setWindowIcon(qApp->icons()->fromTheme(QSL("document-import"))); setWindowFlags(Qt::MSWindowsFixedSizeDialogHint | Qt::Dialog | Qt::WindowSystemMenuHint); - connect(m_btnRestart, SIGNAL(clicked()), qApp, SLOT(restart())); + connect(m_btnRestart, &QPushButton::clicked, this, [=]() { + m_shouldRestart = true; + close(); + }); connect(m_ui->m_btnSelectFolder, SIGNAL(clicked()), this, SLOT(selectFolder())); connect(m_ui->m_groupDatabase, SIGNAL(toggled(bool)), this, SLOT(checkOkButton())); connect(m_ui->m_groupSettings, SIGNAL(toggled(bool)), this, SLOT(checkOkButton())); @@ -93,11 +96,13 @@ void FormRestoreDatabaseSettings::selectFolder(QString folder) { } const QDir selected_folder(folder); - const QFileInfoList available_databases = selected_folder.entryInfoList(QStringList() << QString("*") + BACKUP_SUFFIX_DATABASE , + const QFileInfoList available_databases = selected_folder.entryInfoList(QStringList() + << QString("*") + BACKUP_SUFFIX_DATABASE , QDir::Files | QDir::NoDotAndDotDot | QDir::Readable | QDir::CaseSensitive | QDir::NoSymLinks, QDir::Name); - const QFileInfoList available_settings = selected_folder.entryInfoList(QStringList() << QString("*") + BACKUP_SUFFIX_SETTINGS , + const QFileInfoList available_settings = selected_folder.entryInfoList(QStringList() + << QString("*") + BACKUP_SUFFIX_SETTINGS , QDir::Files | QDir::NoDotAndDotDot | QDir::Readable | QDir::CaseSensitive | QDir::NoSymLinks, QDir::Name); diff --git a/src/gui/dialogs/formrestoredatabasesettings.h b/src/gui/dialogs/formrestoredatabasesettings.h index 88bc8f3f4..93cf608f9 100755 --- a/src/gui/dialogs/formrestoredatabasesettings.h +++ b/src/gui/dialogs/formrestoredatabasesettings.h @@ -35,6 +35,10 @@ class FormRestoreDatabaseSettings : public QDialog { explicit FormRestoreDatabaseSettings(QWidget *parent = 0); virtual ~FormRestoreDatabaseSettings(); + bool shouldRestart() const { + return m_shouldRestart; + } + private slots: void performRestoration(); void checkOkButton(); @@ -43,6 +47,8 @@ class FormRestoreDatabaseSettings : public QDialog { private: QScopedPointer m_ui; QPushButton *m_btnRestart; + + bool m_shouldRestart; }; #endif // FORMRESTOREDATABASESETTINGS_H diff --git a/src/gui/systemtrayicon.cpp b/src/gui/systemtrayicon.cpp index 70967e459..d3f07612f 100755 --- a/src/gui/systemtrayicon.cpp +++ b/src/gui/systemtrayicon.cpp @@ -35,7 +35,7 @@ TrayIconMenu::~TrayIconMenu() { } bool TrayIconMenu::event(QEvent *event) { - if (Application::activeModalWidget() != NULL && event->type() == QEvent::Show) { + if (event->type() == QEvent::Show && Application::activeModalWidget() != NULL) { QTimer::singleShot(0, this, SLOT(hide())); qApp->showGuiMessage(QSL(APP_LONG_NAME), tr("Close opened modal dialogs first."),