]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
Merge remote-tracking branch 'origin/master' into kf6
[dolphin.git] / src / dolphinmainwindow.cpp
index 744ad8f0aa980d6ea00ef5a09421efdff0194aa5..a88e1a594af3207580f73134d71e32692b66bdba 100644 (file)
@@ -54,7 +54,6 @@
 #include <KShell>
 #include <KShortcutsDialog>
 #include <KStandardAction>
-#include <KStartupInfo>
 #include <KSycoca>
 #include <KTerminalLauncherJob>
 #include <KToggleAction>
@@ -64,7 +63,8 @@
 #include <KUrlNavigator>
 #include <KWindowSystem>
 #include <KXMLGUIFactory>
-#include <kio_version.h>
+
+#include <kwidgetsaddons_version.h>
 
 #include <QApplication>
 #include <QClipboard>
 
 #include <algorithm>
 
+#if HAVE_X11
+#include <KStartupInfo>
+#endif
+
 namespace
 {
 // Used for GeneralSettings::version() to determine whether
@@ -158,6 +162,9 @@ DolphinMainWindow::DolphinMainWindow()
     connect(m_actionHandler, &DolphinViewActionHandler::createDirectoryTriggered, this, &DolphinMainWindow::createDirectory);
     connect(m_actionHandler, &DolphinViewActionHandler::selectionModeChangeTriggered, this, &DolphinMainWindow::slotSetSelectionMode);
 
+    Q_CHECK_PTR(actionCollection()->action(QStringLiteral("create_dir")));
+    m_newFileMenu->setNewFolderShortcutAction(actionCollection()->action(QStringLiteral("create_dir")));
+
     m_remoteEncoding = new DolphinRemoteEncoding(this, m_actionHandler);
     connect(this, &DolphinMainWindow::urlChanged, m_remoteEncoding, &DolphinRemoteEncoding::slotAboutToOpenUrl);
 
@@ -276,8 +283,10 @@ void DolphinMainWindow::activateWindow(const QString &activationToken)
 
     if (KWindowSystem::isPlatformWayland()) {
         KWindowSystem::setCurrentXdgActivationToken(activationToken);
-    } else {
+    } else if (KWindowSystem::isPlatformX11()) {
+#if HAVE_X11
         KStartupInfo::setNewStartupId(window()->windowHandle(), activationToken.toUtf8());
+#endif
     }
 
     KWindowSystem::activateWindow(window()->windowHandle());
@@ -528,7 +537,7 @@ void DolphinMainWindow::showTarget()
     const KFileItem link = m_activeViewContainer->view()->selectedItems().at(0);
     const QUrl destinationUrl = link.url().resolved(QUrl(link.linkDest()));
 
-    auto job = KIO::statDetails(destinationUrl, KIO::StatJob::SourceSide, KIO::StatNoDetails);
+    auto job = KIO::stat(destinationUrl, KIO::StatJob::SourceSide, KIO::StatNoDetails);
 
     connect(job, &KJob::finished, this, [this, destinationUrl](KJob *job) {
         KIO::StatJob *statJob = static_cast<KIO::StatJob *>(job);
@@ -835,10 +844,11 @@ void DolphinMainWindow::slotAboutToShowBackPopupMenu()
 {
     const KUrlNavigator *urlNavigator = m_activeViewContainer->urlNavigatorInternalWithHistory();
     int entries = 0;
-    m_backAction->menu()->clear();
+    QMenu *menu = m_backAction->popupMenu();
+    menu->clear();
     for (int i = urlNavigator->historyIndex() + 1; i < urlNavigator->historySize() && entries < MaxNumberOfNavigationentries; ++i, ++entries) {
-        QAction *action = urlNavigatorHistoryAction(urlNavigator, i, m_backAction->menu());
-        m_backAction->menu()->addAction(action);
+        QAction *action = urlNavigatorHistoryAction(urlNavigator, i, menu);
+        menu->addAction(action);
     }
 }
 
@@ -863,10 +873,10 @@ void DolphinMainWindow::slotAboutToShowForwardPopupMenu()
 {
     const KUrlNavigator *urlNavigator = m_activeViewContainer->urlNavigatorInternalWithHistory();
     int entries = 0;
-    m_forwardAction->menu()->clear();
+    QMenu *menu = m_forwardAction->popupMenu();
     for (int i = urlNavigator->historyIndex() - 1; i >= 0 && entries < MaxNumberOfNavigationentries; --i, ++entries) {
-        QAction *action = urlNavigatorHistoryAction(urlNavigator, i, m_forwardAction->menu());
-        m_forwardAction->menu()->addAction(action);
+        QAction *action = urlNavigatorHistoryAction(urlNavigator, i, menu);
+        menu->addAction(action);
     }
 }
 
@@ -1539,7 +1549,8 @@ void DolphinMainWindow::setupActions()
     auto hamburgerMenuAction = KStandardAction::hamburgerMenu(nullptr, nullptr, actionCollection());
 
     // setup 'File' menu
-    m_newFileMenu = new DolphinNewFileMenu(actionCollection(), this);
+    m_newFileMenu = new DolphinNewFileMenu(nullptr, this);
+    actionCollection()->addAction(QStringLiteral("new_menu"), m_newFileMenu);
     QMenu *menu = m_newFileMenu->menu();
     menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New"));
     menu->setIcon(QIcon::fromTheme(QStringLiteral("list-add")));
@@ -1718,7 +1729,7 @@ void DolphinMainWindow::setupActions()
     toggleSelectionModeToolBarAction->setWhatsThis(toggleSelectionModeAction->whatsThis());
     actionCollection()->addAction(QStringLiteral("toggle_selection_mode_tool_bar"), toggleSelectionModeToolBarAction);
     toggleSelectionModeToolBarAction->setCheckable(true);
-    toggleSelectionModeToolBarAction->setPopupMode(QToolButton::DelayedPopup);
+    toggleSelectionModeToolBarAction->setPopupMode(KToolBarPopupAction::DelayedPopup);
     connect(toggleSelectionModeToolBarAction, &QAction::triggered, toggleSelectionModeAction, &QAction::trigger);
     connect(toggleSelectionModeAction, &QAction::toggled, toggleSelectionModeToolBarAction, &QAction::setChecked);
 
@@ -1807,10 +1818,10 @@ void DolphinMainWindow::setupActions()
         m_backAction->setObjectName(backAction->objectName());
         m_backAction->setShortcuts(backAction->shortcuts());
     }
-    m_backAction->setPopupMode(QToolButton::DelayedPopup);
+    m_backAction->setPopupMode(KToolBarPopupAction::DelayedPopup);
     connect(m_backAction, &QAction::triggered, this, &DolphinMainWindow::goBack);
-    connect(m_backAction->menu(), &QMenu::aboutToShow, this, &DolphinMainWindow::slotAboutToShowBackPopupMenu);
-    connect(m_backAction->menu(), &QMenu::triggered, this, &DolphinMainWindow::slotGoBack);
+    connect(m_backAction->popupMenu(), &QMenu::aboutToShow, this, &DolphinMainWindow::slotAboutToShowBackPopupMenu);
+    connect(m_backAction->popupMenu(), &QMenu::triggered, this, &DolphinMainWindow::slotGoBack);
     actionCollection()->addAction(m_backAction->objectName(), m_backAction);
 
     auto backShortcuts = m_backAction->shortcuts();
@@ -1848,18 +1859,18 @@ void DolphinMainWindow::setupActions()
         m_forwardAction->setObjectName(forwardAction->objectName());
         m_forwardAction->setShortcuts(forwardAction->shortcuts());
     }
-    m_forwardAction->setPopupMode(QToolButton::DelayedPopup);
+    m_forwardAction->setPopupMode(KToolBarPopupAction::DelayedPopup);
     connect(m_forwardAction, &QAction::triggered, this, &DolphinMainWindow::goForward);
-    connect(m_forwardAction->menu(), &QMenu::aboutToShow, this, &DolphinMainWindow::slotAboutToShowForwardPopupMenu);
-    connect(m_forwardAction->menu(), &QMenu::triggered, this, &DolphinMainWindow::slotGoForward);
+    connect(m_forwardAction->popupMenu(), &QMenu::aboutToShow, this, &DolphinMainWindow::slotAboutToShowForwardPopupMenu);
+    connect(m_forwardAction->popupMenu(), &QMenu::triggered, this, &DolphinMainWindow::slotGoForward);
     actionCollection()->addAction(m_forwardAction->objectName(), m_forwardAction);
     actionCollection()->setDefaultShortcuts(m_forwardAction, m_forwardAction->shortcuts());
 
     // enable middle-click to open in a new tab
     auto *middleClickEventFilter = new MiddleClickActionEventFilter(this);
     connect(middleClickEventFilter, &MiddleClickActionEventFilter::actionMiddleClicked, this, &DolphinMainWindow::slotBackForwardActionMiddleClicked);
-    m_backAction->menu()->installEventFilter(middleClickEventFilter);
-    m_forwardAction->menu()->installEventFilter(middleClickEventFilter);
+    m_backAction->popupMenu()->installEventFilter(middleClickEventFilter);
+    m_forwardAction->popupMenu()->installEventFilter(middleClickEventFilter);
     KStandardAction::up(this, &DolphinMainWindow::goUp, actionCollection());
     QAction *homeAction = KStandardAction::home(this, &DolphinMainWindow::goHome, actionCollection());
     homeAction->setWhatsThis(xi18nc("@info:whatsthis",
@@ -2486,6 +2497,7 @@ void DolphinMainWindow::createPanelAction(const QIcon &icon, const QKeySequence
     panelAction->setText(dockAction->text());
     panelAction->setIcon(icon);
     dockAction->setIcon(icon);
+    dockAction->setEnabled(true);
     actionCollection()->setDefaultShortcut(panelAction, shortcut);
 
     connect(panelAction, &QAction::triggered, dockAction, &QAction::trigger);