diff --git a/src/crypto/gui/decryptverifyfilesdialog.cpp b/src/crypto/gui/decryptverifyfilesdialog.cpp --- a/src/crypto/gui/decryptverifyfilesdialog.cpp +++ b/src/crypto/gui/decryptverifyfilesdialog.cpp @@ -42,6 +42,7 @@ #include +#include #include #include #include @@ -54,6 +55,7 @@ #include #include #include +#include using namespace Kleo; using namespace Kleo::Crypto; @@ -243,18 +245,24 @@ void DecryptVerifyFilesDialog::readConfig() { + winId(); // ensure there's a window created + + // set default window size + windowHandle()->resize(640, 480); + + // restore size from config file KConfigGroup cfgGroup(KSharedConfig::openConfig(), "DecryptVerifyFilesDialog"); - const QByteArray geom = cfgGroup.readEntry("geometry", QByteArray()); - if (!geom.isEmpty()) { - restoreGeometry(geom); - return; - } - resize(QSize(640, 480)); + KWindowConfig::restoreWindowSize(windowHandle(), cfgGroup); + + // NOTICE: QWindow::setGeometry() does NOT impact the backing QWidget geometry even if the platform + // window was created -> QTBUG-40584. We therefore copy the size here. + // TODO: remove once this was resolved in QWidget QPA + resize(windowHandle()->size()); } void DecryptVerifyFilesDialog::writeConfig() { KConfigGroup cfgGroup(KSharedConfig::openConfig(), "DecryptVerifyFilesDialog"); - cfgGroup.writeEntry("geometry", saveGeometry()); + KWindowConfig::saveWindowSize(windowHandle(), cfgGroup); cfgGroup.sync(); } diff --git a/src/crypto/gui/signencryptfileswizard.h b/src/crypto/gui/signencryptfileswizard.h --- a/src/crypto/gui/signencryptfileswizard.h +++ b/src/crypto/gui/signencryptfileswizard.h @@ -104,6 +104,10 @@ void setLabelText(const QString &label) const; +protected: + void readConfig(); + void writeConfig(); + Q_SIGNALS: void operationPrepared(); diff --git a/src/crypto/gui/signencryptfileswizard.cpp b/src/crypto/gui/signencryptfileswizard.cpp --- a/src/crypto/gui/signencryptfileswizard.cpp +++ b/src/crypto/gui/signencryptfileswizard.cpp @@ -42,13 +42,15 @@ #include #include #include +#include #include #include "kleopatra_debug.h" #include #include +#include #include #include #include @@ -393,6 +395,8 @@ , mSigningUserMutable(true) , mEncryptionUserMutable(true) { + readConfig(); + bool de_vs = Kleo::gpgComplianceP("de-vs"); #ifdef Q_OS_WIN // Enforce modern style to avoid vista style ugliness. @@ -421,13 +425,6 @@ } else { mLabel = nullptr; } - - KConfigGroup cfgGroup(KSharedConfig::openConfig(), "SignEncryptFilesWizard"); - const QByteArray geom = cfgGroup.readEntry("geometry", QByteArray()); - if (!geom.isEmpty()) { - restoreGeometry(geom); - return; - } } void SignEncryptFilesWizard::setLabelText(const QString &label) const @@ -447,9 +444,7 @@ SignEncryptFilesWizard::~SignEncryptFilesWizard() { qCDebug(KLEOPATRA_LOG); - KConfigGroup cfgGroup(KSharedConfig::openConfig(), "SignEncryptFilesWizard"); - cfgGroup.writeEntry("geometry", saveGeometry()); - cfgGroup.sync(); + writeConfig(); } void SignEncryptFilesWizard::setSigningPreset(bool preset) @@ -518,4 +513,29 @@ return mSigEncPage->encryptSymmetric(); } +void SignEncryptFilesWizard::readConfig() +{ + winId(); // ensure there's a window created + + // set default window size + windowHandle()->resize(640, 480); + + // restore size from config file + KConfigGroup cfgGroup(KSharedConfig::openConfig(), "SignEncryptFilesWizard"); + KWindowConfig::restoreWindowSize(windowHandle(), cfgGroup); + + // NOTICE: QWindow::setGeometry() does NOT impact the backing QWidget geometry even if the platform + // window was created -> QTBUG-40584. We therefore copy the size here. + // TODO: remove once this was resolved in QWidget QPA + resize(windowHandle()->size()); +} + +void SignEncryptFilesWizard::writeConfig() +{ + KConfigGroup cfgGroup(KSharedConfig::openConfig(), "SignEncryptFilesWizard"); + KWindowConfig::saveWindowSize(windowHandle(), cfgGroup); + cfgGroup.sync(); +} + + #include "signencryptfileswizard.moc" diff --git a/src/kleopatraapplication.cpp b/src/kleopatraapplication.cpp --- a/src/kleopatraapplication.cpp +++ b/src/kleopatraapplication.cpp @@ -222,6 +222,10 @@ KleopatraApplication::~KleopatraApplication() { + // main window doesn't receive "close" signal and cannot + // save settings before app exit + delete d->mainWindow; + // work around kdelibs bug https://bugs.kde.org/show_bug.cgi?id=162514 KSharedConfig::openConfig()->sync(); } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -59,6 +59,7 @@ #include #include +#include #include #include #include @@ -398,18 +399,19 @@ q->setAcceptDrops(true); + // set default window size + q->resize(QSize(1024, 500)); q->setAutoSaveSettings(); + updateSearchBarClickMessage(); updateStatusBar(); } MainWindow::Private::~Private() {} MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags flags) : KXmlGuiWindow(parent, flags), d(new Private(this)) -{ - resize(1024, 500); -} +{} MainWindow::~MainWindow() {} @@ -682,26 +684,14 @@ { qCDebug(KLEOPATRA_LOG); KXmlGuiWindow::readProperties(cg); - savedGeometry = cg.readEntry("savedGeometry", QByteArray()); - if (!savedGeometry.isEmpty()) { - restoreGeometry(savedGeometry); - } - - if (! cg.readEntry("hidden", false)) { - show(); - } + setHidden(cg.readEntry("hidden", false)); } void MainWindow::saveProperties(KConfigGroup &cg) { qCDebug(KLEOPATRA_LOG); KXmlGuiWindow::saveProperties(cg); cg.writeEntry("hidden", isHidden()); - if (isHidden()) { - cg.writeEntry("savedGeometry", savedGeometry); - } else { - cg.writeEntry("savedGeometry", saveGeometry()); - } } #include "moc_mainwindow.cpp"