diff options
author | Michael Weghorn <m.weghorn@posteo.de> | 2023-06-22 08:40:56 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2024-03-15 10:59:09 +0100 |
commit | 626a2cd3b644a7c841cee7a6ad43dc7a6956369d (patch) | |
tree | aa68ebcff00e4c1f7defa26c4b145e990643a046 | |
parent | bump product version to 7.6.6.1.0+ (diff) | |
download | core-626a2cd3b644a7c841cee7a6ad43dc7a6956369d.tar.gz core-626a2cd3b644a7c841cee7a6ad43dc7a6956369d.zip |
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>
(cherry picked from commit 4c836645eb0556a496c80e4604b63b47085020dd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164739
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Michael Stahl <michael.stahl@allotropia.de>
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
-rw-r--r-- | vcl/inc/unx/desktops.hxx | 1 | ||||
-rw-r--r-- | vcl/source/app/IconThemeSelector.cxx | 1 | ||||
-rw-r--r-- | vcl/source/app/salplug.cxx | 4 | ||||
-rw-r--r-- | vcl/unx/generic/desktopdetect/desktopdetector.cxx | 11 | ||||
-rw-r--r-- | 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); } |