diff options
Diffstat (limited to 'app-office/libreoffice/files/libreoffice-7.6.6.1-detect-plasma6.patch')
-rw-r--r-- | app-office/libreoffice/files/libreoffice-7.6.6.1-detect-plasma6.patch | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/app-office/libreoffice/files/libreoffice-7.6.6.1-detect-plasma6.patch b/app-office/libreoffice/files/libreoffice-7.6.6.1-detect-plasma6.patch new file mode 100644 index 000000000000..9a4553db3447 --- /dev/null +++ b/app-office/libreoffice/files/libreoffice-7.6.6.1-detect-plasma6.patch @@ -0,0 +1,153 @@ +From 4c836645eb0556a496c80e4604b63b47085020dd Mon Sep 17 00:00:00 2001 +From: Michael Weghorn <m.weghorn@posteo.de> +Date: Thu, 22 Jun 2023 08:40:56 +0200 +Subject: [PATCH] Detect Plasma 6 desktop + +Add detection for Plasma 6, which is currently in development stage. +With the following plasma-workspace commit [1] in place, +KDE_SESSION_VERSION is set to 6, so use that to detect it: + + commit 4c2242d7dfafac161baec3ec316af24d7b48ef8b + Author: Michael Weghorn <m.weghorn@posteo.de> + Date: Thu Jun 22 07:47:31 2023 +0200 + + Set KDE_SESSION_VERSION to 6 + + Since the master branch is based on Qt6/KF6 and will + become Plasma 6, set KDE_SESSION_VERSION to "6". + + This will allow other applications to detect they're + running in a (preview of a) Plasma 6 session and react + accordingly. + (E.g. LibreOffice can use this to choose to + use its upcoming kf6 integration by default instead of the + kf5 one.) + +[1] https://invent.kde.org/plasma/plasma-workspace/-/commit/4c2242d7dfafac161baec3ec316af24d7b48ef8b + +Change-Id: I5a15ad1fb177721fbfa016139c56a08b228f2e1f +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153437 +Tested-by: Jenkins +Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> +(cherry picked from commit 8b0e1f2a914d672182d585d8cb2d4a815e88977e) +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164700 +Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com> +--- + vcl/inc/unx/desktops.hxx | 1 + + vcl/source/app/IconThemeSelector.cxx | 1 + + vcl/source/app/salplug.cxx | 4 ++-- + vcl/unx/generic/desktopdetect/desktopdetector.cxx | 11 +++++++++++ + vcl/unx/kf5/KF5SalInstance.cxx | 8 +++++--- + 5 files changed, 20 insertions(+), 5 deletions(-) + +diff --git a/vcl/inc/unx/desktops.hxx b/vcl/inc/unx/desktops.hxx +index 0abb6aa71339..2056c2c37928 100644 +--- a/vcl/inc/unx/desktops.hxx ++++ b/vcl/inc/unx/desktops.hxx +@@ -33,6 +33,7 @@ enum SAL_DLLPUBLIC_RTTI DesktopType + DESKTOP_XFCE, + DESKTOP_MATE, + DESKTOP_PLASMA5, ++ DESKTOP_PLASMA6, + DESKTOP_LXQT + }; // keep in sync with desktop_strings[] in salplug.cxx + +diff --git a/vcl/source/app/IconThemeSelector.cxx b/vcl/source/app/IconThemeSelector.cxx +index 6b8dfc0f42c7..15eb4b7768fc 100644 +--- a/vcl/source/app/IconThemeSelector.cxx ++++ b/vcl/source/app/IconThemeSelector.cxx +@@ -70,6 +70,7 @@ IconThemeSelector::GetIconThemeForDesktopEnvironment(const OUString& desktopEnvi + #else + OUString r; + if ( desktopEnvironment.equalsIgnoreAsciiCase("plasma5") || ++ desktopEnvironment.equalsIgnoreAsciiCase("plasma6") || + desktopEnvironment.equalsIgnoreAsciiCase("lxqt") ) { + if (!bPreferDarkIconTheme) + r = "breeze"; +diff --git a/vcl/source/app/salplug.cxx b/vcl/source/app/salplug.cxx +index e51375b94ae5..fee5b7e33e6d 100644 +--- a/vcl/source/app/salplug.cxx ++++ b/vcl/source/app/salplug.cxx +@@ -249,7 +249,7 @@ const char* const* autodetect_plugin_list() + desktop == DESKTOP_XFCE || + desktop == DESKTOP_MATE ) + pList = pStandardFallbackList; +- else if (desktop == DESKTOP_PLASMA5 || desktop == DESKTOP_LXQT) ++ else if (desktop == DESKTOP_PLASMA5 || desktop == DESKTOP_PLASMA6 || desktop == DESKTOP_LXQT) + pList = pKDEFallbackList; + + return pList; +@@ -426,7 +426,7 @@ const OUString& SalGetDesktopEnvironment() + // Order to match desktops.hxx' DesktopType + static const char * const desktop_strings[] = { + "none", "unknown", "GNOME", "UNITY", +- "XFCE", "MATE", "PLASMA5", "LXQT" }; ++ "XFCE", "MATE", "PLASMA5", "PLASMA6", "LXQT" }; + static OUString aDesktopEnvironment; + if( aDesktopEnvironment.isEmpty()) + { +diff --git a/vcl/unx/generic/desktopdetect/desktopdetector.cxx b/vcl/unx/generic/desktopdetect/desktopdetector.cxx +index bad134fbdafd..8baeb303feed 100644 +--- a/vcl/unx/generic/desktopdetect/desktopdetector.cxx ++++ b/vcl/unx/generic/desktopdetect/desktopdetector.cxx +@@ -117,6 +117,13 @@ static bool is_plasma5_desktop() + return pFullVersion && pSessionVersion && (0 == strcmp(pSessionVersion, "5")); + } + ++static bool is_plasma6_desktop() ++{ ++ static const char* pFullVersion = getenv("KDE_FULL_SESSION"); ++ static const char* pSessionVersion = getenv("KDE_SESSION_VERSION"); ++ return pFullVersion && pSessionVersion && (0 == strcmp(pSessionVersion, "6")); ++} ++ + extern "C" + { + +@@ -132,6 +139,8 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment() + return DESKTOP_LXQT; + if (aOver.equalsIgnoreAsciiCase("plasma5") || aOver.equalsIgnoreAsciiCase("plasma")) + return DESKTOP_PLASMA5; ++ if (aOver.equalsIgnoreAsciiCase("plasma6")) ++ return DESKTOP_PLASMA6; + if ( aOver.equalsIgnoreAsciiCase( "gnome" ) ) + return DESKTOP_GNOME; + if ( aOver.equalsIgnoreAsciiCase( "gnome-wayland" ) ) +@@ -190,6 +199,8 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment() + + if (is_plasma5_desktop()) + return DESKTOP_PLASMA5; ++ if (is_plasma6_desktop()) ++ return DESKTOP_PLASMA6; + + // tdf#121275 if we still can't tell, and WAYLAND_DISPLAY + // is set, default to gtk3 +diff --git a/vcl/unx/kf5/KF5SalInstance.cxx b/vcl/unx/kf5/KF5SalInstance.cxx +index df5108e147a1..05f555f356f5 100644 +--- a/vcl/unx/kf5/KF5SalInstance.cxx ++++ b/vcl/unx/kf5/KF5SalInstance.cxx +@@ -41,7 +41,8 @@ KF5SalInstance::KF5SalInstance(std::unique_ptr<QApplication>& pQApp, bool bUseCa + + bool KF5SalInstance::hasNativeFileSelection() const + { +- if (Application::GetDesktopEnvironment() == "PLASMA5") ++ const OUString sDesktop = Application::GetDesktopEnvironment(); ++ if (sDesktop == "PLASMA5" || sDesktop == "PLASMA6") + return true; + return QtInstance::hasNativeFileSelection(); + } +@@ -61,8 +62,9 @@ KF5SalInstance::createPicker(css::uno::Reference<css::uno::XComponentContext> co + + // In order to insert custom controls, KF5FilePicker currently relies on KFileWidget + // being used in the native file picker, which is only the case for KDE Plasma. +- // Therefore, return the plain qt5 one in order to not lose custom controls. +- if (Application::GetDesktopEnvironment() == "PLASMA5") ++ // Therefore, return the plain qt5/qt6 one in order to not lose custom controls otherwise. ++ const OUString sDesktop = Application::GetDesktopEnvironment(); ++ if (sDesktop == "PLASMA5" || sDesktop == "PLASMA6") + return new KF5FilePicker(context, eMode); + return QtInstance::createPicker(context, eMode); + } +-- +2.44.0 + |