]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
dolphinview: Fix right click broken on placeholderLabel
[dolphin.git] / src / dolphinmainwindow.cpp
index 496dad6c092e145e3875ae268a31e55042b006bf..d69514b7a36a767c00b1825518d09b7a7406437a 100644 (file)
 #include <KDualAction>
 #include <KFileItemListProperties>
 #include <KIO/CommandLauncherJob>
+#include <kio_version.h>
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
+#include <KIO/JobUiDelegateFactory>
+#else
 #include <KIO/JobUiDelegate>
+#endif
 #include <KIO/OpenFileManagerWindowJob>
 #include <KIO/OpenUrlJob>
 #include <KJobWidgets>
@@ -65,6 +70,7 @@
 #include <KWindowSystem>
 #include <KXMLGUIFactory>
 
+#include <kwidgetsaddons_version.h>
 #include <kio_version.h>
 
 #include <QApplication>
@@ -276,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()
@@ -1166,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;
         }
     }
@@ -1241,7 +1261,11 @@ void DolphinMainWindow::handleUrl(const QUrl& url)
         activeViewContainer()->setUrl(url);
     } else {
         m_lastHandleUrlOpenJob = new KIO::OpenUrlJob(url);
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 98, 0)
+        m_lastHandleUrlOpenJob->setUiDelegate(KIO::createDefaultJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
+#else
         m_lastHandleUrlOpenJob->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
+#endif
         m_lastHandleUrlOpenJob->setShowOpenOrExecuteDialog(true);
 
         connect(m_lastHandleUrlOpenJob, &KIO::OpenUrlJob::mimeTypeFound, this,
@@ -1390,6 +1414,8 @@ void DolphinMainWindow::slotPlaceActivated(const QUrl& url)
     DolphinViewContainer* view = activeViewContainer();
 
     if (view->url() == url) {
+        view->clearFilterBar(); // Fixes bug 259382.
+
         // We can end up here if the user clicked a device in the Places Panel
         // which had been unmounted earlier, see https://bugs.kde.org/show_bug.cgi?id=161385.
         reloadView();
@@ -1681,7 +1707,6 @@ void DolphinMainWindow::setupActions()
         "</para>"));
     toggleSelectionModeAction->setIcon(QIcon::fromTheme(QStringLiteral("quickwizard")));
     toggleSelectionModeAction->setCheckable(true);
-    actionCollection()->setDefaultShortcut(toggleSelectionModeAction, Qt::Key_Space );
     connect(toggleSelectionModeAction, &QAction::triggered, this, &DolphinMainWindow::toggleSelectionMode);
 
     // A special version of the toggleSelectionModeAction for the toolbar that also contains a menu
@@ -2319,6 +2344,8 @@ void DolphinMainWindow::refreshViews()
         updateWindowTitle();
     }
 
+    updateSplitAction();
+
     Q_EMIT settingsChanged();
 }
 
@@ -2671,7 +2698,7 @@ bool DolphinMainWindow::isUrlOpen(const QString &url)
     return m_tabWidget->isUrlOpen(QUrl::fromUserInput(url));
 }
 
-bool DolphinMainWindow::isUrlOrParentOpen(const QString &url)
+bool DolphinMainWindow::isItemVisibleInAnyView(const QString &urlOfItem)
 {
-    return m_tabWidget->isUrlOrParentOpen(QUrl::fromUserInput(url));
+    return m_tabWidget->isItemVisibleInAnyView(QUrl::fromUserInput(urlOfItem));
 }