mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-06-13 13:47:46 +02:00
Only fire apply event when settings are actually applied
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
@ -1564,9 +1564,9 @@ void Application::ShowGlobalSettings(class QWidget* parent, QString open_page)
|
||||
{
|
||||
SettingsObject::Lock lock(APPLICATION->settings());
|
||||
PageDialog dlg(m_globalSettingsProvider.get(), open_page, parent);
|
||||
connect(&dlg, &PageDialog::applied, this, &Application::globalSettingsApplied);
|
||||
dlg.exec();
|
||||
}
|
||||
emit globalSettingsClosed();
|
||||
}
|
||||
|
||||
MainWindow* Application::showMainWindow(bool minimized)
|
||||
|
@ -197,7 +197,7 @@ class Application : public QApplication {
|
||||
signals:
|
||||
void updateAllowedChanged(bool status);
|
||||
void globalSettingsAboutToOpen();
|
||||
void globalSettingsClosed();
|
||||
void globalSettingsApplied();
|
||||
int currentCatChanged(int index);
|
||||
|
||||
void oauthReplyRecieved(QVariantMap);
|
||||
|
@ -111,7 +111,7 @@ InstanceWindow::InstanceWindow(InstancePtr instance, QWidget* parent) : QMainWin
|
||||
m_container->addButtons(horizontalLayout);
|
||||
|
||||
connect(m_instance.get(), &BaseInstance::profilerChanged, this, &InstanceWindow::updateButtons);
|
||||
connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceWindow::updateButtons);
|
||||
connect(APPLICATION, &Application::globalSettingsApplied, this, &InstanceWindow::updateButtons);
|
||||
}
|
||||
|
||||
// restore window state
|
||||
|
@ -351,7 +351,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
|
||||
connect(APPLICATION->instances().get(), &InstanceList::instanceSelectRequest, this, &MainWindow::instanceSelectRequest);
|
||||
|
||||
// When the global settings page closes, we want to know about it and update our state
|
||||
connect(APPLICATION, &Application::globalSettingsClosed, this, &MainWindow::globalSettingsClosed);
|
||||
connect(APPLICATION, &Application::globalSettingsApplied, this, &MainWindow::globalSettingsClosed);
|
||||
|
||||
m_statusLeft = new QLabel(tr("No instance selected"), this);
|
||||
m_statusCenter = new QLabel(tr("Total playtime: 0s"), this);
|
||||
|
@ -43,20 +43,26 @@ PageDialog::PageDialog(BasePageProvider* pageProvider, QString defaultId, QWidge
|
||||
buttons->setContentsMargins(6, 0, 6, 0);
|
||||
m_container->addButtons(buttons);
|
||||
|
||||
connect(buttons->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &PageDialog::applyAndClose);
|
||||
connect(buttons->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &PageDialog::accept);
|
||||
connect(buttons->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &PageDialog::reject);
|
||||
connect(buttons->button(QDialogButtonBox::Help), &QPushButton::clicked, m_container, &PageContainer::help);
|
||||
|
||||
connect(this, &QDialog::accepted, this, &PageDialog::onAccepted);
|
||||
connect(this, &QDialog::rejected, this, &PageDialog::storeGeometry);
|
||||
|
||||
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("PagedGeometry").toByteArray()));
|
||||
}
|
||||
void PageDialog::applyAndClose()
|
||||
void PageDialog::onAccepted()
|
||||
{
|
||||
qDebug() << "Paged dialog apply and close requested";
|
||||
qDebug() << "Paged dialog accepted";
|
||||
if (m_container->prepareToClose()) {
|
||||
qDebug() << "Paged dialog close approved";
|
||||
APPLICATION->settings()->set("PagedGeometry", saveGeometry().toBase64());
|
||||
qDebug() << "Paged dialog geometry saved";
|
||||
close();
|
||||
emit applied();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void PageDialog::storeGeometry()
|
||||
{
|
||||
APPLICATION->settings()->set("PagedGeometry", saveGeometry().toBase64());
|
||||
qDebug() << "Paged dialog geometry saved";
|
||||
}
|
||||
|
@ -25,8 +25,14 @@ class PageDialog : public QDialog {
|
||||
explicit PageDialog(BasePageProvider* pageProvider, QString defaultId = QString(), QWidget* parent = 0);
|
||||
virtual ~PageDialog() {}
|
||||
|
||||
private:
|
||||
void applyAndClose();
|
||||
signals:
|
||||
void applied();
|
||||
|
||||
|
||||
private slots:
|
||||
void onAccepted();
|
||||
void storeGeometry();
|
||||
|
||||
private:
|
||||
PageContainer* m_container;
|
||||
};
|
||||
|
@ -48,7 +48,7 @@ class InstanceSettingsPage : public MinecraftSettingsWidget, public BasePage {
|
||||
explicit InstanceSettingsPage(MinecraftInstancePtr instance, QWidget* parent = nullptr) : MinecraftSettingsWidget(std::move(instance), parent)
|
||||
{
|
||||
connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::saveSettings);
|
||||
connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings);
|
||||
connect(APPLICATION, &Application::globalSettingsApplied, this, &InstanceSettingsPage::loadSettings);
|
||||
}
|
||||
~InstanceSettingsPage() override {}
|
||||
QString displayName() const override { return tr("Settings"); }
|
||||
|
Reference in New Issue
Block a user