]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
Properly use X11 startup ids
[dolphin.git] / src / dolphinmainwindow.cpp
index 305c7f2821b8366182aca1665adcd9ef1532c2cf..f3ec70753ca4f502b10fda1a3ea2915602cbd460 100644 (file)
@@ -70,6 +70,7 @@
 #include <KWindowSystem>
 #include <KXMLGUIFactory>
 
+#include <kwidgetsaddons_version.h>
 #include <kio_version.h>
 
 #include <QApplication>
@@ -281,11 +282,17 @@ void DolphinMainWindow::openFiles(const QStringList& files, bool splitView)
     openFiles(QUrl::fromStringList(files), splitView);
 }
 
-void DolphinMainWindow::activateWindow()
+void DolphinMainWindow::activateWindow(const QString &activationToken)
 {
     window()->setAttribute(Qt::WA_NativeWindow, true);
-    KStartupInfo::setNewStartupId(window()->windowHandle(), KStartupInfo::startupId());
-    KWindowSystem::activateWindow(window()->effectiveWinId());
+
+    if (KWindowSystem::isPlatformWayland()) {
+        KWindowSystem::setCurrentXdgActivationToken(activationToken);
+    } else {
+        KStartupInfo::setNewStartupId(window()->windowHandle(), activationToken.toUtf8());
+    }
+
+    KWindowSystem::activateWindow(window()->windowHandle());
 }
 
 bool DolphinMainWindow::isActiveWindow()
@@ -1171,11 +1178,19 @@ void DolphinMainWindow::openTerminalHere()
     if (urls.count() > 5) {
         QString question = i18np("Are you sure you want to open 1 terminal window?",
                                  "Are you sure you want to open %1 terminal windows?", urls.count());
+#if KWIDGETSADDONS_VERSION >= QT_VERSION_CHECK(5, 100, 0)
+        const int answer = KMessageBox::warningTwoActions(this, question, {},
+#else
         const int answer = KMessageBox::warningYesNo(this, question, {},
+#endif
                                                      KGuiItem(i18ncp("@action:button", "Open %1 Terminal", "Open %1 Terminals", urls.count()),
                                                               QStringLiteral("utilities-terminal")),
                                                      KStandardGuiItem::cancel());
+#if KWIDGETSADDONS_VERSION >= QT_VERSION_CHECK(5, 100, 0)
+        if (answer != KMessageBox::PrimaryAction) {
+#else
         if (answer != KMessageBox::Yes) {
+#endif
             return;
         }
     }