fix(screenlocker): port screen locker to Qt6

main
reionwong 4 weeks ago
parent 291ea20f2f
commit 129c45a990

@ -6,6 +6,7 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/compat")
# set(CMAKE_AUTOUIC ON)
# set(CMAKE_AUTOMOC ON)
@ -18,7 +19,7 @@ include(CheckIncludeFiles)
include(CheckSymbolExists)
include(FeatureSummary)
find_package(Qt5 COMPONENTS Core DBus Widgets X11Extras Quick LinguistTools REQUIRED)
find_package(Qt6 COMPONENTS Core DBus Widgets Quick LinguistTools REQUIRED)
find_package(X11)
# ----------- Check --------------------
@ -66,13 +67,9 @@ add_subdirectory(checkpass)
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
# Get the installation directory from qmake
get_target_property(QT_QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION)
if(NOT QT_QMAKE_EXECUTABLE)
message(FATAL_ERROR "qmake is not found.")
endif()
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_QML
# Get the installation directory from qtpaths
find_program(QT_PATHS_EXECUTABLE NAMES qtpaths6 REQUIRED)
execute_process(COMMAND ${QT_PATHS_EXECUTABLE} -query QT_INSTALL_QML
OUTPUT_VARIABLE INSTALL_QMLDIR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
@ -84,7 +81,7 @@ endif()
# Install translations
file(GLOB TS_FILES translations/*.ts)
qt5_add_translation(QM_FILES ${TS_FILES})
qt6_add_translation(QM_FILES ${TS_FILES})
add_custom_target(translations DEPENDS ${QM_FILES} SOURCES ${TS_FILES})
add_dependencies(cutefish-screenlocker translations)
install(FILES ${QM_FILES} DESTINATION /usr/share/cutefish-screenlocker/translations)

@ -0,0 +1,36 @@
/* Qt 6 compatibility layer for the legacy QX11Info API. */
#ifndef CUTEFISH_QX11INFO_COMPAT
#define CUTEFISH_QX11INFO_COMPAT
#include <QGuiApplication>
#include <QtGui/qguiapplication_platform.h>
#include <xcb/xcb.h>
class QX11Info
{
public:
static bool isPlatformX11()
{
return nativeInterface() != nullptr;
}
static xcb_connection_t *connection()
{
const auto native = nativeInterface();
return native ? native->connection() : nullptr;
}
static Display *display()
{
const auto native = nativeInterface();
return native ? native->display() : nullptr;
}
private:
static QNativeInterface::QX11Application *nativeInterface()
{
return qGuiApp ? qGuiApp->nativeInterface<QNativeInterface::QX11Application>() : nullptr;
}
};
#endif

@ -17,11 +17,10 @@ add_executable(cutefish-screenlocker
target_link_libraries(cutefish-screenlocker
PRIVATE
Qt5::Core
Qt5::DBus
Qt5::Widgets
Qt5::X11Extras
Qt5::Quick
Qt6::Core
Qt6::DBus
Qt6::Widgets
Qt6::Quick
${X11_LIBRARIES}
)

@ -46,7 +46,7 @@
class FocusOutEventFilter : public QAbstractNativeEventFilter
{
public:
bool nativeEventFilter(const QByteArray &eventType, void *message, long int *result) override {
bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override {
Q_UNUSED(result)
if (qstrcmp(eventType, "xcb_generic_event_t") != 0) {
return false;

@ -19,6 +19,7 @@
#include "application.h"
#include <QDBusConnection>
#include <QFile>
#include <QTranslator>
#include <QLocale>

@ -21,7 +21,7 @@ import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import Cutefish.Accounts 1.0 as Accounts
import Cutefish.System 1.0 as System

@ -20,7 +20,7 @@
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import QtGraphicalEffects 1.0
import Qt5Compat.GraphicalEffects
import FishUI 1.0 as FishUI
import Cutefish.Mpris 1.0

Loading…
Cancel
Save