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(-)

New commits:
commit 4c836645eb0556a496c80e4604b63b47085020dd
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Thu Jun 22 08:40:56 2023 +0200
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Tue Mar 12 11:31:36 2024 +0100

    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.wegh...@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.wegh...@posteo.de>
    (cherry picked from commit 8b0e1f2a914d672182d585d8cb2d4a815e88977e)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164700
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

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);
 }

Reply via email to