diff --git a/src/main.cpp b/src/main.cpp index b80b1981..aa1bb080 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,127 +1,124 @@ /* This file is part of Akregator. Copyright (C) 2004 Stanislav Karchebny This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. As a special exception, permission is given to link this program with any edition of Qt, and distribute the resulting executable, without including the source code for Qt in the source distribution. */ #include "aboutdata.h" #include "mainwindow.h" #include "akregator_options.h" #include "utils.h" #include "akregator_debug.h" #include "akregratormigrateapplication.h" #include #include #include #include namespace Akregator { class Application : public KontactInterface::PimUniqueApplication { public: Application(int &argc, char **argv[]) : KontactInterface::PimUniqueApplication(argc, argv) , mMainWindow(0) { } ~Application() { } int activate(const QStringList &args, const QString &workingDir) override; private: Akregator::MainWindow *mMainWindow; }; int Application::activate(const QStringList &args, const QString &workingDir) { if (!isSessionRestored()) { QDBusInterface akr(QStringLiteral("org.kde.akregator"), QStringLiteral("/Akregator"), QStringLiteral("org.kde.akregator.part")); QCommandLineParser *parser = cmdArgs(); parser->process(args); if (!mMainWindow) { mMainWindow = new Akregator::MainWindow(); mMainWindow->loadPart(); mMainWindow->setupProgressWidgets(); if (!parser->isSet(QStringLiteral("hide-mainwindow"))) { mMainWindow->show(); } akr.call(QStringLiteral("openStandardFeedList")); } akr.call(QStringLiteral("handleCommandLine"), args); } return PimUniqueApplication::activate(args, workingDir); } } // namespace Akregator int main(int argc, char **argv) { //Fix QtWebEngine + wayland #if defined(Q_OS_UNIX) && QT_VERSION < QT_VERSION_CHECK(5, 9, 0) qputenv("QT_QPA_PLATFORM", "xcb"); #endif QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); Akregator::Application app(argc, &argv); KLocalizedString::setApplicationDomain("akregator"); KCrash::initialize(); app.setAttribute(Qt::AA_UseHighDpiPixmaps, true); app.setDesktopFileName(QStringLiteral("org.kde.akregator")); Akregator::AboutData about; app.setAboutData(about); QCommandLineParser *cmdArgs = app.cmdArgs(); Akregator::akregator_options(cmdArgs); const QStringList args = QCoreApplication::arguments(); cmdArgs->process(args); about.processCommandLine(cmdArgs); if (!Akregator::Application::start(args)) { qCWarning(AKREGATOR_LOG) << "akregator is already running, exiting."; exit(0); } AkregratorMigrateApplication migrate; migrate.migrate(); // start knotifyclient if not already started. makes it work for people who doesn't use full kde, according to kmail devels //KNotifyClient::startDaemon(); // see if we are starting with session management if (app.isSessionRestored()) { -#undef RESTORE -#define RESTORE(type) { int n = 1; \ - while (KMainWindow::canBeRestored(n)) { \ - (new type)->restore(n, false); \ - n++;} \ -} - - RESTORE(Akregator::MainWindow); + auto mainWindow = new Akregator::MainWindow(); + mainWindow->loadPart(); + if (KMainWindow::canBeRestored(1)) { + mainWindow->restore(1, false); + } } return app.exec(); }