summaryrefslogtreecommitdiff
path: root/app-office/libreoffice/files/libreoffice-7.6.6.1-detect-plasma6.patch
blob: 9a4553db3447be2fcc17ba969adc195a1640e3e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
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