diff --git a/CMakeLists.txt b/CMakeLists.txt index 6dedb48..4eb54c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,9 @@ find_package(Qt5DBus ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) find_package(Qt5X11Extras ${REQUIRED_QT_VERSION} NO_MODULE) +find_package(KF5WindowSystem ${KF5_DEP_VERSION} REQUIRED) + + include(GenerateExportHeader) include(CMakePackageConfigHelpers) include(ECMSetupVersion) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c1683c9..dbb0dba 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -48,7 +48,7 @@ ecm_generate_export_header(KF5DBusAddons add_library(KF5::DBusAddons ALIAS KF5DBusAddons) -target_link_libraries(KF5DBusAddons PUBLIC Qt5::DBus PRIVATE ${qtx11extras}) +target_link_libraries(KF5DBusAddons PUBLIC Qt5::DBus PRIVATE ${qtx11extras} KF5::WindowSystem) target_include_directories(KF5DBusAddons INTERFACE "$") diff --git a/src/kdbusservice.cpp b/src/kdbusservice.cpp index b853523..7cd2b2f 100644 --- a/src/kdbusservice.cpp +++ b/src/kdbusservice.cpp @@ -26,6 +26,8 @@ #include #endif +#include + #include "kdbusservice_adaptor.h" #include "kdbusserviceextensions_adaptor.h" @@ -176,6 +178,7 @@ public: }); } + d->registered = (bus->registerService(d->serviceName, queueOption) == QDBusConnectionInterface::ServiceRegistered); @@ -193,7 +196,8 @@ public: } else if (options & KDBusService::Unique) { // Already running so it's ok! QVariantMap platform_data; - platform_data.insert(QStringLiteral("desktop-startup-id"), QString::fromUtf8(qgetenv("DESKTOP_STARTUP_ID"))); + platform_data.insert(QStringLiteral("desktop-startup-id"), QString::fromLatin1(QX11Info::nextStartupId())); + if (QCoreApplication::arguments().count() > 1) { OrgKdeKDBusServiceInterface iface(d->serviceName, objectPath, QDBusConnection::sessionBus()); iface.setTimeout(5 * 60 * 1000); // Application can take time to answer @@ -291,15 +295,22 @@ void KDBusService::unregister() void KDBusService::Activate(const QVariantMap &platform_data) { - Q_UNUSED(platform_data); +// Q_UNUSED(platform_data); #if HAVE_X11 if (QX11Info::isPlatformX11()) { - QX11Info::setAppTime(QX11Info::getTimestamp()); + // noooo +// QX11Info::setAppTime(QX11Info::getTimestamp()); } #endif - // TODO QX11Info::setNextStartupId(platform_data.value("desktop-startup-id")) + + QByteArray desktopStartupId = platform_data.value(QStringLiteral("desktop-startup-id")).toByteArray(); + KStartupInfo::setStartupId(desktopStartupId); + + qDebug() << desktopStartupId; +// QX11Info::setNextStartupId(desktopStartupId); emit activateRequested(QStringList(), QString()); - // TODO (via hook) KStartupInfo::appStarted(platform_data.value("desktop-startup-id")) + // TODO (via hook) + KStartupInfo::appStarted(desktopStartupId); // ^^ same discussion as below }