diff --git a/plugins/mousepad/CMakeLists.txt b/plugins/mousepad/CMakeLists.txt index c01816d0..7f14139e 100644 --- a/plugins/mousepad/CMakeLists.txt +++ b/plugins/mousepad/CMakeLists.txt @@ -1,41 +1,39 @@ -if(NOT WIN32) - find_package(LibFakeKey) +if(UNIX) + find_package(KF5 ${KF5_MIN_VERSION} QUIET COMPONENTS Wayland) + + find_package(LibFakeKey QUIET) set_package_properties(LibFakeKey PROPERTIES DESCRIPTION "fake key events" URL "https://www.yoctoproject.org/tools-resources/projects/matchbox" TYPE OPTIONAL PURPOSE "Needed for the remote mousepad plugin" ) if (LibFakeKey_FOUND) + find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS X11Extras) find_package(XTest REQUIRED) find_package(X11 REQUIRED) - find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS X11Extras) include_directories(${XTEST_INCLUDE_DIRS} ${X11_INCLUDE_DIR} ${LibFakeKey_INCLUDE_DIRS}) endif() - - find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS Wayland) - endif() - set(HAVE_WINDOWS ${WIN32}) set(HAVE_X11 ${LibFakeKey_FOUND}) set(HAVE_WAYLAND ${KF5Wayland_FOUND}) configure_file(config-mousepad.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-mousepad.h ) kdeconnect_add_plugin(kdeconnect_mousepad JSON kdeconnect_mousepad.json SOURCES mousepadplugin.cpp abstractremoteinput.cpp) target_link_libraries(kdeconnect_mousepad kdeconnectcore Qt5::Gui KF5::I18n) if (HAVE_WINDOWS) target_sources(kdeconnect_mousepad PUBLIC windowsremoteinput.cpp) endif() if(HAVE_WAYLAND) target_sources(kdeconnect_mousepad PUBLIC waylandremoteinput.cpp) target_link_libraries(kdeconnect_mousepad KF5::WaylandClient) endif() if(HAVE_X11) target_sources(kdeconnect_mousepad PUBLIC x11remoteinput.cpp) target_link_libraries(kdeconnect_mousepad Qt5::X11Extras ${X11_LIBRARIES} ${XTEST_LIBRARIES} ${LibFakeKey_LIBRARIES}) endif() diff --git a/plugins/mousepad/mousepadplugin.cpp b/plugins/mousepad/mousepadplugin.cpp index 07915b07..a3ea8783 100644 --- a/plugins/mousepad/mousepadplugin.cpp +++ b/plugins/mousepad/mousepadplugin.cpp @@ -1,76 +1,82 @@ /** * Copyright 2018 Albert Vaca Cintora * Copyright 2015 Martin Gräßlin * Copyright 2014 Ahmed I. Khalil * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License or (at your option) version 3 or any later version * accepted by the membership of KDE e.V. (or its successor approved * by the membership of KDE e.V.), which shall act as a proxy * defined in Section 14 of version 3 of the license. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "mousepadplugin.h" #include #include #if HAVE_WINDOWS #include "windowsremoteinput.h" #else - #include #include #if HAVE_X11 #include "x11remoteinput.h" #endif #if HAVE_WAYLAND #include "waylandremoteinput.h" #endif #endif K_PLUGIN_FACTORY_WITH_JSON( KdeConnectPluginFactory, "kdeconnect_mousepad.json", registerPlugin< MousepadPlugin >(); ) MousepadPlugin::MousepadPlugin(QObject* parent, const QVariantList& args) : KdeConnectPlugin(parent, args) + , m_impl(nullptr) { #if HAVE_WINDOWS m_impl = new WindowsRemoteInput(this); #else - if (QX11Info::isPlatformX11()) { #if HAVE_X11 + if (QGuiApplication::platformName() == QLatin1String("xcb")) { m_impl = new X11RemoteInput(this); - #else - qDebug() << "KDE Connect was built without X11 support"; + } #endif - } else { - Q_ASSERT(QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)); + #if HAVE_WAYLAND + if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) { m_impl = new WaylandRemoteInput(this); - #else - qDebug() << "KDE Connect was built without Wayland support"; - #endif } + #endif #endif + + if (!m_impl) { + qDebug() << "KDE Connect was built without" << QGuiApplication::platformName() << "support"; + } + } MousepadPlugin::~MousepadPlugin() { delete m_impl; } bool MousepadPlugin::receivePacket(const NetworkPacket& np) { - return m_impl->handlePacket(np); + if (m_impl) { + return m_impl->handlePacket(np); + } else { + return false; + } } #include "mousepadplugin.moc"