#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>
#include <KWindowSystem>
#include <KXMLGUIFactory>
+#include <kwidgetsaddons_version.h>
#include <kio_version.h>
#include <QApplication>
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()
m_backAction->menu()->clear();
for (int i = urlNavigator->historyIndex() + 1; i < urlNavigator->historySize() && entries < MaxNumberOfNavigationentries; ++i, ++entries) {
QAction *action = urlNavigatorHistoryAction(urlNavigator, i, m_backAction->menu());
- action->setData(i);
m_backAction->menu()->addAction(action);
}
}
m_forwardAction->menu()->clear();
for (int i = urlNavigator->historyIndex() - 1; i >= 0 && entries < MaxNumberOfNavigationentries; --i, ++entries) {
QAction *action = urlNavigatorHistoryAction(urlNavigator, i, m_forwardAction->menu());
- action->setData(i);
m_forwardAction->menu()->addAction(action);
}
}
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;
}
}
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,
// except the requestItemInfo so that on hover the information panel can still be updated
connect(oldViewContainer->view(), &DolphinView::requestItemInfo,
this, &DolphinMainWindow::requestItemInfo);
+
+ // Disconnect other slots.
+ disconnect(nullptr, &DolphinViewContainer::selectionModeChanged,
+ actionCollection()->action(QStringLiteral("toggle_selection_mode")), &QAction::setChecked);
}
connectViewSignals(viewContainer);
{
m_actionHandler->updateViewActions();
- QAction *toggleSelectionModeAction = actionCollection()->action(QStringLiteral("toggle_selection_mode"));
- disconnect(nullptr, &DolphinViewContainer::selectionModeChanged,
- toggleSelectionModeAction, &QAction::setChecked);
- toggleSelectionModeAction->setChecked(m_activeViewContainer->isSelectionModeEnabled());
- connect(m_activeViewContainer, &DolphinViewContainer::selectionModeChanged,
- toggleSelectionModeAction, &QAction::setChecked);
-
QAction* toggleFilterBarAction = actionCollection()->action(QStringLiteral("toggle_filter"));
toggleFilterBarAction->setChecked(m_activeViewContainer->isFilterBarVisible());
const QAction* toggleSearchAction = actionCollection()->action(QStringLiteral("toggle_search"));
connect(toggleSearchAction, &QAction::triggered, container, &DolphinViewContainer::setSearchModeEnabled);
+ // Make the toggled state of the selection mode actions visually follow the selection mode state of the view.
+ auto toggleSelectionModeAction = actionCollection()->action(QStringLiteral("toggle_selection_mode"));
+ toggleSelectionModeAction->setChecked(m_activeViewContainer->isSelectionModeEnabled());
+ connect(m_activeViewContainer, &DolphinViewContainer::selectionModeChanged,
+ toggleSelectionModeAction, &QAction::setChecked);
+
const DolphinView* view = container->view();
connect(view, &DolphinView::selectionChanged,
this, &DolphinMainWindow::slotSelectionChanged);
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));
}