From 64a9ea3106f3b8bdcd2f494345e1da54a7ee3e45 Mon Sep 17 00:00:00 2001 From: Michael Weghorn Date: Wed, 24 Apr 2019 15:06:04 +0200 Subject: tdf#124598 gtk3_kde5: Link gtk3 side against kf5 libs The separate filepicker executable 'lo_kde5filepicker' used by the gtk3_kde5 VCL plugin needs the KF5 libraries (in particular the 'KFileWidget' class) in order to provide custom controls in the Plasma-native QFileDialog. The gtk3 side ('lo_kde5filepicker') itself doesn't use any functionality from KF5 libraries itself and therefore didn't link against those. When determining which VCL plugin to use on LibreOffice start, a 'dlopen()' is used on the libraries of the potential VCL plugins, which fails if linked libraries are not available, so unsuitable VCL plugin are skipped. This mechanism didn't work for the gtk3_kde5 VCL plugin if KF5 libraries were not installed, since the 'dlopen()' on 'libvclplug_gtk3_kde5lo.so' would succeed, but starting the 'lo_kde5filepicker' process would later fail at runtime due to the missing libraries. To avoid this, make 'libvclplug_gtk3_kde5lo.so' link against KF5 libraries as well to prevent gtk3_kde5 from being used unless all required libraries are actually present. Add a dummy KFileWidget use in Gtk3KDE5FilePicker to prevent smart linkers from not linking unused libraries despite linker flags. While this is a hack, it seems to be acceptable, in particular since gtk3_kde5 is more meant as a temporary solution supposed to be dropped at a later point in time in favor of the pure kde5 VCL plugin. Reviewed-on: https://gerrit.libreoffice.org/71237 Reviewed-by: Katarina Behrens Tested-by: Jenkins (cherry picked from commit 1674c6964b585d944bcb34be1d937e7558a97453) Change-Id: I3a37daaeb1307b4f24f6fd75d7b6ec5ffaade0fd Reviewed-on: https://gerrit.libreoffice.org/71374 Tested-by: Jenkins Reviewed-by: Thorsten Behrens --- vcl/unx/gtk3_kde5/gtk3_kde5_filepicker.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'vcl/unx') diff --git a/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker.cxx b/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker.cxx index 8006bc37c7dc..94eca472a7e7 100644 --- a/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker.cxx +++ b/vcl/unx/gtk3_kde5/gtk3_kde5_filepicker.cxx @@ -17,6 +17,9 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include +#include + #include "gtk3_kde5_filepicker.hxx" #include @@ -71,6 +74,11 @@ Gtk3KDE5FilePicker::Gtk3KDE5FilePicker(const uno::Reference