[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [konversation] src: Fix parsing of command line options when already running
From:       Peter Simonsson <peter.simonsson () gmail ! com>
Date:       2016-10-29 16:47:01
Message-ID: E1c0Wmb-0002EB-L0 () code ! kde ! org
[Download RAW message or body]

Git commit 5a4dbac366164db548cc755fa1bedc6c89a44b93 by Peter Simonsson.
Committed on 29/10/2016 at 16:46.
Pushed by psn into branch 'master'.

Fix parsing of command line options when already running

Make sure the command line options get parsed if konversation is already
running and it's started again.

BUG: 371464

M  +12   -0    src/application.cpp
M  +8    -0    src/application.h
M  +3    -2    src/main.cpp

http://commits.kde.org/konversation/5a4dbac366164db548cc755fa1bedc6c89a44b93

diff --git a/src/application.cpp b/src/application.cpp
index 0a3fe97..afe1339 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -49,6 +49,8 @@
 #include <kwallet.h>
 #include <KTextEdit>
 #include <KSharedConfig>
+#include <KStartupInfo>
+#include <KWindowSystem>
 
 
 using namespace Konversation;
@@ -1391,6 +1393,16 @@ void Application::closeWallet()
     m_wallet = NULL;
 }
 
+void Application::handleActivate(const QStringList& arguments)
+{
+    m_commandLineParser->parse(arguments);
+
+    newInstance(m_commandLineParser);
+
+    KStartupInfo::setNewStartupId(mainWindow, KStartupInfo::startupId());
+    KWindowSystem::forceActiveWindow(mainWindow->winId());
+}
+
 
 
 // kate: space-indent on; tab-width 4; indent-width 4; mixed-indent off; \
                replace-tabs on;
diff --git a/src/application.h b/src/application.h
index b1ac182..e87f98d 100644
--- a/src/application.h
+++ b/src/application.h
@@ -135,6 +135,10 @@ class Application : public QApplication
 
         void abortScheduledRestart() { m_restartScheduled = false; }
 
+        /// The command line parser is needed for handling parsing arguments on new \
activations. +        void setCommandLineParser(QCommandLineParser *parser) { \
m_commandLineParser = parser; } +        QCommandLineParser *commandLineParser() \
const { return m_commandLineParser; } +
     Q_SIGNALS:
         void serverGroupsChanged(const Konversation::ServerGroupSettingsPtr \
                serverGroup);
         void appearanceChanged(); // FIXME TODO: Rather than relying on this \
catch-all, consumers should be rewritten to catch appropriate QEvents. @@ -154,6 \
+158,8 @@ class Application : public QApplication  
         void storeUrl(const QString& origin, const QString& newUrl, const QDateTime& \
dateTime);  
+        void handleActivate(const QStringList& arguments);
+
     protected Q_SLOTS:
         void openQuickConnectDialog();
 
@@ -191,6 +197,8 @@ class Application : public QApplication
         KWallet::Wallet* m_wallet;
 
         QNetworkConfigurationManager* m_networkConfigurationManager;
+
+        QCommandLineParser *m_commandLineParser;
 };
 
 #endif
diff --git a/src/main.cpp b/src/main.cpp
index 35f68be..23ef640 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -154,10 +154,11 @@ int main(int argc, char* argv[])
 
     aboutData.processCommandLine(&cmdLineParser);
     app.newInstance(&cmdLineParser);
+    app.setCommandLineParser(&cmdLineParser);
 
     QObject::connect(&dbusService, &KDBusService::activateRequested,
-        app.instance()->getMainWindow(), &MainWindow::activateAndRaiseWindow,
-        Qt::DirectConnection);
+                     &app, &Application::handleActivate,
+                     Qt::DirectConnection);
 
     return app.exec();
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic