summaryrefslogtreecommitdiff
path: root/app-office/libreoffice/files/libreoffice-7.6.6.1-detect-plasma6.patch
diff options
context:
space:
mode:
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.patch153
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
+