summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMichael Weghorn <m.weghorn@posteo.de>2023-06-22 08:48:05 +0200
committerMichael Weghorn <m.weghorn@posteo.de>2023-06-22 22:16:11 +0200
commit720bf6ac8612c32942bb059f9086ee86c2963bb5 (patch)
treed175788a07888a6f51adb22be1042409a2c29b86 /vcl
parent8b0e1f2a914d672182d585d8cb2d4a815e88977e (diff)
kf6: Add a kf6 VCL plugin
Add a "kf6" VCL plugin that uses the KF6 (KDE Frameworks 6) libraries to provide a native KDE/Plasma file chooser, just like the kf5 VCL plugin does for KF5. Building the plugin is disabled by default and can be enabled by autogen option '--enable-kf6'. Selecting the VCL plugin can be done by starting LO with environment variable 'SAL_USE_VCLPLUGIN=kf6' set. The kf6 VCL plugin reuses the kf5 VCL plugin code. (The kf6 headers and sources for now just `#include` the kf5 ones.) This was quickly tested on KDE Neon unstable, which provides a daily snapshot of Plasma 6 and the KF6 libraries. (Regarding a potential release date, [1] mentions: "Plasma 6 is built on top of Qt 6 and is tentatively planned to be released in late 2023 or early 2024.") [1] https://community.kde.org/Plasma/Plasma_6 Change-Id: I4c2b7e3be8e60f1d8cf60119f6f3f642b71349f5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153438 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/CustomTarget_kf6_moc.mk29
-rw-r--r--vcl/Library_vclplug_kf6.mk86
-rw-r--r--vcl/Module_vcl.mk8
-rw-r--r--vcl/source/app/salplug.cxx4
-rw-r--r--vcl/unx/kf6/KFFilePicker.cxx12
-rw-r--r--vcl/unx/kf6/KFFilePicker.hxx12
-rw-r--r--vcl/unx/kf6/KFSalInstance.cxx12
-rw-r--r--vcl/unx/kf6/KFSalInstance.hxx12
8 files changed, 175 insertions, 0 deletions
diff --git a/vcl/CustomTarget_kf6_moc.mk b/vcl/CustomTarget_kf6_moc.mk
new file mode 100644
index 000000000000..ba0f514cd81a
--- /dev/null
+++ b/vcl/CustomTarget_kf6_moc.mk
@@ -0,0 +1,29 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CustomTarget_CustomTarget,vcl/unx/kf6))
+
+$(call gb_CustomTarget_get_target,vcl/unx/kf6) : \
+ $(call gb_CustomTarget_get_workdir,vcl/unx/kf6)/KFFilePicker.moc
+
+# For now, the headers in vcl/unx/kf6 just '#include' the ones
+# in 'vcl/unx/kf5'.
+# Since moc does not process classes from the included headers,
+# it needs to be run on the headers in the kf5 dir.
+# That will have to be adapted in case the kf6 VCL plugin
+# uses "own" headers
+$(call gb_CustomTarget_get_workdir,vcl/unx/kf6)/%.moc : \
+ $(SRCDIR)/vcl/unx/kf5/%.hxx \
+ | $(call gb_CustomTarget_get_workdir,vcl/unx/kf6)/.dir
+ $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),MOC,1)
+ $(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),MOC)
+ $(MOC6) $< -o $@
+ $(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),MOC)
+
+# vim: set noet sw=4:
diff --git a/vcl/Library_vclplug_kf6.mk b/vcl/Library_vclplug_kf6.mk
new file mode 100644
index 000000000000..1e7ece07037c
--- /dev/null
+++ b/vcl/Library_vclplug_kf6.mk
@@ -0,0 +1,86 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This file incorporates work covered by the following license notice:
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed
+# with this work for additional information regarding copyright
+# ownership. The ASF licenses this file to you under the Apache
+# License, Version 2.0 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.apache.org/licenses/LICENSE-2.0 .
+#
+
+$(eval $(call gb_Library_Library,vclplug_kf6))
+
+$(eval $(call gb_Library_set_plugin_for,vclplug_kf6,vcl))
+
+$(eval $(call gb_Library_use_custom_headers,vclplug_kf6,vcl/unx/kf6))
+
+$(eval $(call gb_Library_set_include,vclplug_kf6,\
+ $$(INCLUDE) \
+ -I$(SRCDIR)/vcl/inc \
+ -I$(SRCDIR)/vcl/inc/qt5 \
+))
+
+$(eval $(call gb_Library_add_defs,vclplug_kf6,\
+ -DVCLPLUG_KF_IMPLEMENTATION \
+))
+
+$(eval $(call gb_Library_use_sdk_api,vclplug_kf6))
+
+$(eval $(call gb_Library_use_libraries,vclplug_kf6,\
+ vclplug_qt6 \
+ tl \
+ utl \
+ sot \
+ ucbhelper \
+ basegfx \
+ comphelper \
+ cppuhelper \
+ i18nlangtag \
+ i18nutil \
+ $(if $(ENABLE_JAVA), \
+ jvmaccess) \
+ cppu \
+ sal \
+))
+
+$(eval $(call gb_Library_use_externals,vclplug_kf6,\
+ boost_headers \
+ cairo \
+ graphite \
+ harfbuzz \
+ icuuc \
+ kf6 \
+ epoxy \
+))
+
+$(eval $(call gb_Library_add_exception_objects,vclplug_kf6,\
+ vcl/unx/kf6/KFFilePicker \
+ vcl/unx/kf6/KFSalInstance \
+))
+
+ifeq ($(OS),LINUX)
+$(eval $(call gb_Library_add_libs,vclplug_kf6,\
+ -lm \
+ -ldl \
+))
+endif
+
+# Workaround for clang+icecream (clang's -frewrite-includes
+# doesn't handle Qt5's QT_HAS_INCLUDE that Qt5 uses for <chrono>),
+# and probably the same is true for Qt6.
+ifeq ($(COM_IS_CLANG),TRUE)
+$(eval $(call gb_Library_add_cxxflags,vclplug_kf6, \
+ -include chrono \
+))
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index 5265cd951243..5c6fbe987430 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -97,6 +97,14 @@ $(eval $(call gb_Module_add_targets,vcl,\
))
endif
+ifneq ($(ENABLE_KF6),)
+$(eval $(call gb_Module_add_targets,vcl,\
+ CustomTarget_kf6_moc \
+ Library_vclplug_kf6 \
+))
+endif
+
+
ifneq ($(ENABLE_QT5),)
$(eval $(call gb_Module_add_targets,vcl,\
CustomTarget_qt5_moc \
diff --git a/vcl/source/app/salplug.cxx b/vcl/source/app/salplug.cxx
index fee5b7e33e6d..7f0ba2e96bb9 100644
--- a/vcl/source/app/salplug.cxx
+++ b/vcl/source/app/salplug.cxx
@@ -137,6 +137,7 @@ SalInstance* tryInstance( const OUString& rModuleBase, bool bForce = false )
*/
if (aUsedModuleBase == "gtk4" || aUsedModuleBase == "gtk3" ||
aUsedModuleBase == "gtk3_kde5" || aUsedModuleBase == "kf5" ||
+ aUsedModuleBase == "kf6" ||
aUsedModuleBase == "qt5" || aUsedModuleBase == "qt6" ||
aUsedModuleBase == "win")
{
@@ -338,6 +339,9 @@ SalInstance *CreateSalInstance()
#if ENABLE_QT5
"qt5",
#endif
+#if ENABLE_KF6
+ "kf6",
+#endif
#if ENABLE_QT6
"qt6",
#endif
diff --git a/vcl/unx/kf6/KFFilePicker.cxx b/vcl/unx/kf6/KFFilePicker.cxx
new file mode 100644
index 000000000000..17672c834506
--- /dev/null
+++ b/vcl/unx/kf6/KFFilePicker.cxx
@@ -0,0 +1,12 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "../kf5/KFFilePicker.cxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/kf6/KFFilePicker.hxx b/vcl/unx/kf6/KFFilePicker.hxx
new file mode 100644
index 000000000000..b0c790552dac
--- /dev/null
+++ b/vcl/unx/kf6/KFFilePicker.hxx
@@ -0,0 +1,12 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "../kf5/KFFilePicker.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/kf6/KFSalInstance.cxx b/vcl/unx/kf6/KFSalInstance.cxx
new file mode 100644
index 000000000000..7595c93bd251
--- /dev/null
+++ b/vcl/unx/kf6/KFSalInstance.cxx
@@ -0,0 +1,12 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "../kf5/KFSalInstance.cxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/kf6/KFSalInstance.hxx b/vcl/unx/kf6/KFSalInstance.hxx
new file mode 100644
index 000000000000..9c648d933672
--- /dev/null
+++ b/vcl/unx/kf6/KFSalInstance.hxx
@@ -0,0 +1,12 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "../kf5/KFSalInstance.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */