mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
Revert "Restrict attaching instances to those on the same activity or same virtual desktop"
This reverts commit b99f6f50ee
.
BUG: 408919
Reintroduces:
CCBUG: 408919
This commit is contained in:
parent
b01329bf36
commit
ee8b71e556
3 changed files with 11 additions and 61 deletions
|
@ -277,31 +277,6 @@ void DolphinMainWindow::openFiles(const QStringList &files, bool splitView)
|
||||||
openFiles(QUrl::fromStringList(files), splitView);
|
openFiles(QUrl::fromStringList(files), splitView);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DolphinMainWindow::isOnCurrentDesktop() const
|
|
||||||
{
|
|
||||||
#if HAVE_X11
|
|
||||||
if (KWindowSystem::isPlatformX11()) {
|
|
||||||
const NET::Properties properties = NET::WMDesktop;
|
|
||||||
KWindowInfo info(this->winId(), properties);
|
|
||||||
return info.isOnCurrentDesktop();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DolphinMainWindow::isOnActivity(const QString &activityId) const
|
|
||||||
{
|
|
||||||
#if HAVE_X11 && HAVE_KACTIVITIES
|
|
||||||
if (KWindowSystem::isPlatformX11()) {
|
|
||||||
const NET::Properties properties = NET::Supported;
|
|
||||||
const NET::Properties2 properties2 = NET::WM2Activities;
|
|
||||||
KWindowInfo info(this->winId(), properties, properties2);
|
|
||||||
return info.activities().contains(activityId);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DolphinMainWindow::activateWindow(const QString &activationToken)
|
void DolphinMainWindow::activateWindow(const QString &activationToken)
|
||||||
{
|
{
|
||||||
window()->setAttribute(Qt::WA_NativeWindow, true);
|
window()->setAttribute(Qt::WA_NativeWindow, true);
|
||||||
|
|
|
@ -204,9 +204,6 @@ public Q_SLOTS:
|
||||||
/** @see GeneralSettings::splitViewChanged() */
|
/** @see GeneralSettings::splitViewChanged() */
|
||||||
void slotSplitViewChanged();
|
void slotSplitViewChanged();
|
||||||
|
|
||||||
bool isOnActivity(const QString &activityId) const;
|
|
||||||
bool isOnCurrentDesktop() const;
|
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
/**
|
/**
|
||||||
* Is sent if the selection of the currently active view has
|
* Is sent if the selection of the currently active view has
|
||||||
|
|
|
@ -16,9 +16,6 @@
|
||||||
#include <KIO/ApplicationLauncherJob>
|
#include <KIO/ApplicationLauncherJob>
|
||||||
#include <KService>
|
#include <KService>
|
||||||
#include <KWindowSystem>
|
#include <KWindowSystem>
|
||||||
#if HAVE_KACTIVITIES
|
|
||||||
#include <KActivities/Consumer>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
|
||||||
|
@ -143,37 +140,13 @@ bool Dolphin::attachToExistingInstance(const QList<QUrl> &inputUrls,
|
||||||
|
|
||||||
QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> Dolphin::dolphinGuiInstances(const QString &preferredService)
|
QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> Dolphin::dolphinGuiInstances(const QString &preferredService)
|
||||||
{
|
{
|
||||||
#if HAVE_KACTIVITIES
|
|
||||||
static std::once_flag one_consumer;
|
|
||||||
static KActivities::Consumer *consumer;
|
|
||||||
std::call_once(one_consumer, []() {
|
|
||||||
consumer = new KActivities::Consumer();
|
|
||||||
// ensures the consumer is ready for query
|
|
||||||
QEventLoop loop;
|
|
||||||
QObject::connect(consumer, &KActivities::Consumer::serviceStatusChanged, &loop, &QEventLoop::quit);
|
|
||||||
loop.exec();
|
|
||||||
});
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> dolphinInterfaces;
|
QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> dolphinInterfaces;
|
||||||
const auto tryAppendInterface = [&dolphinInterfaces](const QString &service) {
|
|
||||||
// Check if instance can handle our URLs
|
|
||||||
QSharedPointer<OrgKdeDolphinMainWindowInterface> interface(
|
|
||||||
new OrgKdeDolphinMainWindowInterface(service, QStringLiteral("/dolphin/Dolphin_1"), QDBusConnection::sessionBus()));
|
|
||||||
if (interface->isValid() && !interface->lastError().isValid()) {
|
|
||||||
#if HAVE_KACTIVITIES
|
|
||||||
const auto currentActivity = consumer->currentActivity();
|
|
||||||
if (currentActivity.isEmpty() || currentActivity == QStringLiteral("00000000-0000-0000-0000-000000000000")
|
|
||||||
|| interface->isOnActivity(consumer->currentActivity()))
|
|
||||||
#endif
|
|
||||||
if (interface->isOnCurrentDesktop()) {
|
|
||||||
dolphinInterfaces.append(qMakePair(interface, QStringList()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!preferredService.isEmpty()) {
|
if (!preferredService.isEmpty()) {
|
||||||
tryAppendInterface(preferredService);
|
QSharedPointer<OrgKdeDolphinMainWindowInterface> preferredInterface(
|
||||||
|
new OrgKdeDolphinMainWindowInterface(preferredService, QStringLiteral("/dolphin/Dolphin_1"), QDBusConnection::sessionBus()));
|
||||||
|
if (preferredInterface->isValid() && !preferredInterface->lastError().isValid()) {
|
||||||
|
dolphinInterfaces.append(qMakePair(preferredInterface, QStringList()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Look for dolphin instances among all available dbus services.
|
// Look for dolphin instances among all available dbus services.
|
||||||
|
@ -185,7 +158,12 @@ QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> Do
|
||||||
const QString myPid = QLatin1Char('-') + QString::number(QCoreApplication::applicationPid());
|
const QString myPid = QLatin1Char('-') + QString::number(QCoreApplication::applicationPid());
|
||||||
for (const QString &service : dbusServices) {
|
for (const QString &service : dbusServices) {
|
||||||
if (service.startsWith(pattern) && !service.endsWith(myPid)) {
|
if (service.startsWith(pattern) && !service.endsWith(myPid)) {
|
||||||
tryAppendInterface(service);
|
// Check if instance can handle our URLs
|
||||||
|
QSharedPointer<OrgKdeDolphinMainWindowInterface> interface(
|
||||||
|
new OrgKdeDolphinMainWindowInterface(service, QStringLiteral("/dolphin/Dolphin_1"), QDBusConnection::sessionBus()));
|
||||||
|
if (interface->isValid() && !interface->lastError().isValid()) {
|
||||||
|
dolphinInterfaces.append(qMakePair(interface, QStringList()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue