summaryrefslogtreecommitdiff
path: root/kde-plasma/plasma-workspace/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2021-05-11 19:55:43 +0100
committerV3n3RiX <venerix@redcorelinux.org>2021-05-11 19:55:43 +0100
commit185fa19bbf68a4d4dca534d2b46729207a177f16 (patch)
treea8a537b82fda83a0799c2ca9887f212558363aa7 /kde-plasma/plasma-workspace/files
parentc8fd0d84af0bfd1949542adc2cbb735b1d28f9ed (diff)
gentoo resync : 11.05.2021
Diffstat (limited to 'kde-plasma/plasma-workspace/files')
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-dangerous-shortcuts.patch45
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-revert-activate-krunner.patch56
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency-panelConfig.patch27
-rw-r--r--kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency.patch376
4 files changed, 504 insertions, 0 deletions
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-dangerous-shortcuts.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-dangerous-shortcuts.patch
new file mode 100644
index 000000000000..f04bb866d5d3
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-dangerous-shortcuts.patch
@@ -0,0 +1,45 @@
+From e8e17c5ef8734fa56a78405e32277568e4e1095e Mon Sep 17 00:00:00 2001
+From: Nate Graham <nate@kde.org>
+Date: Thu, 22 Apr 2021 08:38:18 -0600
+Subject: [PATCH] [ksmserver] Remove default shortcuts for "Without
+ Confirmation" actions
+
+These actions bypass the user setting for whether or not to show the
+logout screen and always log out/reboot/etc. immediately. Because they
+have default keyboard shortcuts, they can be triggered by accident and
+cause unexpected logouts/reboots/etc.
+
+BUG: 435954
+FIXED-IN: 5.22
+---
+ ksmserver/server.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ksmserver/server.cpp b/ksmserver/server.cpp
+index ac9da9f09..6f3179fb9 100644
+--- a/ksmserver/server.cpp
++++ b/ksmserver/server.cpp
+@@ -880,17 +880,17 @@ void KSMServer::setupShortcuts()
+
+ a = actionCollection->addAction(QStringLiteral("Log Out Without Confirmation"));
+ a->setText(i18n("Log Out Without Confirmation"));
+- KGlobalAccel::self()->setGlobalShortcut(a, QList<QKeySequence>() << Qt::ALT + Qt::CTRL + Qt::SHIFT + Qt::Key_Delete);
++ KGlobalAccel::self()->setGlobalShortcut(a, QKeySequence());
+ connect(a, &QAction::triggered, this, &KSMServer::logoutWithoutConfirmation);
+
+ a = actionCollection->addAction(QStringLiteral("Halt Without Confirmation"));
+ a->setText(i18n("Halt Without Confirmation"));
+- KGlobalAccel::self()->setGlobalShortcut(a, QList<QKeySequence>() << Qt::ALT + Qt::CTRL + Qt::SHIFT + Qt::Key_PageDown);
++ KGlobalAccel::self()->setGlobalShortcut(a, QKeySequence());
+ connect(a, &QAction::triggered, this, &KSMServer::haltWithoutConfirmation);
+
+ a = actionCollection->addAction(QStringLiteral("Reboot Without Confirmation"));
+ a->setText(i18n("Reboot Without Confirmation"));
+- KGlobalAccel::self()->setGlobalShortcut(a, QList<QKeySequence>() << Qt::ALT + Qt::CTRL + Qt::SHIFT + Qt::Key_PageUp);
++ KGlobalAccel::self()->setGlobalShortcut(a, QKeySequence());
+ connect(a, &QAction::triggered, this, &KSMServer::rebootWithoutConfirmation);
+ }
+ }
+--
+GitLab
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-revert-activate-krunner.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-revert-activate-krunner.patch
new file mode 100644
index 000000000000..c2637286da10
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-revert-activate-krunner.patch
@@ -0,0 +1,56 @@
+From 9bdae154bb3711b0220d0a8a685b2329f487d1f2 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Mon, 15 Feb 2021 17:35:19 +0100
+Subject: [PATCH] Revert "Activate KRunner instead of running the binary"
+
+Causes applications to be started with cwd "/".
+
+See also: https://bugs.gentoo.org/767478
+
+This reverts commit 0e575a20ef36532b5b40a40ea30f915976942477.
+---
+ krunner/CMakeLists.txt | 3 ++-
+ krunner/{krunner.desktop => krunner.desktop.cmake} | 4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+ rename krunner/{krunner.desktop => krunner.desktop.cmake} (94%)
+
+diff --git a/krunner/CMakeLists.txt b/krunner/CMakeLists.txt
+index 07d27c1dc..8e1f2e3bd 100644
+--- a/krunner/CMakeLists.txt
++++ b/krunner/CMakeLists.txt
+@@ -31,7 +31,8 @@ target_compile_definitions(krunner PRIVATE -DPROJECT_VERSION="${PROJECT_VERSION}
+ install(TARGETS krunner ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
+ install(FILES ${krunner_dbusAppXML} DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} )
+
+-install(FILES krunner.desktop DESTINATION ${DATA_INSTALL_DIR}/kglobalaccel)
++configure_file(krunner.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/krunner.desktop @ONLY)
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/krunner.desktop DESTINATION ${DATA_INSTALL_DIR}/kglobalaccel)
+
+ set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KRunnerAppDBusInterface")
+ configure_package_config_file(KRunnerAppDBusInterfaceConfig.cmake.in
+diff --git a/krunner/krunner.desktop b/krunner/krunner.desktop.cmake
+similarity index 94%
+rename from krunner/krunner.desktop
+rename to krunner/krunner.desktop.cmake
+index 7a0398696..c4c8c9d92 100644
+--- a/krunner/krunner.desktop
++++ b/krunner/krunner.desktop.cmake
+@@ -1,5 +1,5 @@
+ [Desktop Entry]
+-Exec=dbus-send --type=method_call --dest=org.kde.krunner /App org.kde.krunner.App.toggleDisplay
++Exec=@CMAKE_INSTALL_PREFIX@/bin/krunner
+ Name=KRunner
+ Name[ar]=مشغّل.ك
+ Name[ast]=KRunner
+@@ -60,7 +60,7 @@ Actions=RunClipboard
+ X-KDE-Wayland-Interfaces=org_kde_plasma_window_management
+
+ [Desktop Action RunClipboard]
+-Exec=dbus-send --type=method_call --dest=org.kde.krunner /App org.kde.krunner.App.displayWithClipboardContents
++Exec=krunner -c
+ Name=Run command on clipboard contents
+ Name[az]=Əmri, mübadilə buferindən başlatmaq
+ Name[ca]=Executa una ordre al contingut del porta-retalls
+--
+2.31.1
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency-panelConfig.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency-panelConfig.patch
new file mode 100644
index 000000000000..fb7993e6db72
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency-panelConfig.patch
@@ -0,0 +1,27 @@
+From 1cf02aad96bfe650a1f4d1465ae15234205fb061 Mon Sep 17 00:00:00 2001
+From: Bharadwaj Raju <bharadwaj.raju777@protonmail.com>
+Date: Mon, 26 Apr 2021 18:47:51 +0000
+Subject: [PATCH] Load panelOpacity from config parent, not from config
+
+BUG: 434285
+FIXED-IN: 5.22
+---
+ shell/panelview.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/shell/panelview.cpp b/shell/panelview.cpp
+index 5ed743024..4533e856f 100644
+--- a/shell/panelview.cpp
++++ b/shell/panelview.cpp
+@@ -633,7 +633,7 @@ void PanelView::restore()
+ // the place for this config key is changed in Plasma 5.9
+ // Do NOT use readConfigValueWithFallBack
+ setVisibilityMode((VisibilityMode)panelConfig.parent().readEntry<int>("panelVisibility", panelConfig.readEntry<int>("panelVisibility", (int)NormalPanel)));
+- setOpacityMode((OpacityMode)readConfigValueWithFallBack("panelOpacity", PanelView::OpacityMode::Adaptive));
++ setOpacityMode((OpacityMode)config().parent().readEntry<int>("panelOpacity", configDefaults().parent().readEntry<int>("panelOpacity", PanelView::OpacityMode::Adaptive)));
+ m_initCompleted = true;
+ resizePanel();
+ positionPanel();
+--
+GitLab
+
diff --git a/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency.patch b/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency.patch
new file mode 100644
index 000000000000..1a925a137cef
--- /dev/null
+++ b/kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency.patch
@@ -0,0 +1,376 @@
+From 7db8d5ee551f30576588d31470fe287b6ad2adcd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Niccol=C3=B2=20Venerandi?= <niccolo@venerandi.com>
+Date: Mon, 1 Mar 2021 22:14:43 +0000
+Subject: [PATCH] Add support for adaptive opacity panels
+
+Co-authored-by: Jan Blackquill <uhhadd@gmail.com>
+---
+ libtaskmanager/taskfilterproxymodel.cpp | 26 ++++++++++++++++++
+ libtaskmanager/taskfilterproxymodel.h | 19 ++++++++++++++
+ libtaskmanager/tasksmodel.cpp | 11 ++++++++
+ libtaskmanager/tasksmodel.h | 19 ++++++++++++++
+ shell/panelconfigview.cpp | 11 ++++++++
+ shell/panelconfigview.h | 5 ++++
+ shell/panelview.cpp | 35 +++++++++++++++++++++++++
+ shell/panelview.h | 28 ++++++++++++++++++++
+ 8 files changed, 154 insertions(+)
+
+diff --git a/libtaskmanager/taskfilterproxymodel.cpp b/libtaskmanager/taskfilterproxymodel.cpp
+index 37a3076fd..6bb27537a 100644
+--- a/libtaskmanager/taskfilterproxymodel.cpp
++++ b/libtaskmanager/taskfilterproxymodel.cpp
+@@ -40,6 +40,7 @@ public:
+ bool filterByScreen = false;
+ bool filterByActivity = false;
+ bool filterNotMinimized = false;
++ bool filterNotMaximized = false;
+ bool filterSkipTaskbar = true;
+ bool filterSkipPager = false;
+
+@@ -185,6 +186,22 @@ void TaskFilterProxyModel::setFilterNotMinimized(bool filter)
+ }
+ }
+
++bool TaskFilterProxyModel::filterNotMaximized() const
++{
++ return d->filterNotMaximized;
++}
++
++void TaskFilterProxyModel::setFilterNotMaximized(bool filter)
++{
++ if (d->filterNotMaximized != filter) {
++ d->filterNotMaximized = filter;
++
++ invalidateFilter();
++
++ emit filterNotMaximizedChanged();
++ }
++}
++
+ bool TaskFilterProxyModel::filterSkipTaskbar() const
+ {
+ return d->filterSkipTaskbar;
+@@ -301,6 +318,15 @@ bool TaskFilterProxyModel::acceptsRow(int sourceRow) const
+ }
+ }
+
++ // Filter not maximized.
++ if (d->filterNotMaximized) {
++ bool isMaximized = sourceIdx.data(AbstractTasksModel::IsMaximized).toBool();
++
++ if (!isMaximized) {
++ return false;
++ }
++ }
++
+ return true;
+ }
+
+diff --git a/libtaskmanager/taskfilterproxymodel.h b/libtaskmanager/taskfilterproxymodel.h
+index 7ad2cb9ce..88ba3adab 100644
+--- a/libtaskmanager/taskfilterproxymodel.h
++++ b/libtaskmanager/taskfilterproxymodel.h
+@@ -52,6 +52,7 @@ class TASKMANAGER_EXPORT TaskFilterProxyModel : public QSortFilterProxyModel, pu
+ Q_PROPERTY(bool filterByScreen READ filterByScreen WRITE setFilterByScreen NOTIFY filterByScreenChanged)
+ Q_PROPERTY(bool filterByActivity READ filterByActivity WRITE setFilterByActivity NOTIFY filterByActivityChanged)
+ Q_PROPERTY(bool filterNotMinimized READ filterNotMinimized WRITE setFilterNotMinimized NOTIFY filterNotMinimizedChanged)
++ Q_PROPERTY(bool filterNotMaximized READ filterNotMaximized WRITE setFilterNotMaximized NOTIFY filterNotMaximizedChanged)
+ Q_PROPERTY(bool filterSkipTaskbar READ filterSkipTaskbar WRITE setFilterSkipTaskbar NOTIFY filterSkipTaskbarChanged)
+ Q_PROPERTY(bool filterSkipPager READ filterSkipPager WRITE setFilterSkipPager NOTIFY filterSkipPagerChanged)
+
+@@ -212,6 +213,23 @@ public:
+ **/
+ void setFilterNotMinimized(bool filter);
+
++ /**
++ * Whether non-maximized tasks should be filtered. Defaults to
++ * @c false.
++ *
++ * @see setFilterNotMaximized
++ * @returns @c true if non-maximized tasks should be filtered.
++ **/
++ bool filterNotMaximized() const;
++
++ /**
++ * Set whether non-maximized tasks should be filtered.
++ *
++ * @see filterNotMaximized
++ * @param filter Whether non-maximized tasks should be filtered.
++ **/
++ void setFilterNotMaximized(bool filter);
++
+ /**
+ * Whether tasks which should be omitted from 'task bars' should be
+ * filtered. Defaults to @c true.
+@@ -285,6 +303,7 @@ Q_SIGNALS:
+ void filterByScreenChanged() const;
+ void filterByActivityChanged() const;
+ void filterNotMinimizedChanged() const;
++ void filterNotMaximizedChanged() const;
+ void filterSkipTaskbarChanged() const;
+ void filterSkipPagerChanged() const;
+ void demandingAttentionSkipsFiltersChanged() const;
+diff --git a/libtaskmanager/tasksmodel.cpp b/libtaskmanager/tasksmodel.cpp
+index c6e66926b..11eb53fdf 100644
+--- a/libtaskmanager/tasksmodel.cpp
++++ b/libtaskmanager/tasksmodel.cpp
+@@ -302,6 +302,7 @@ void TasksModel::Private::initModels()
+ QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterByScreenChanged, q, &TasksModel::filterByScreenChanged);
+ QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterByActivityChanged, q, &TasksModel::filterByActivityChanged);
+ QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterNotMinimizedChanged, q, &TasksModel::filterNotMinimizedChanged);
++ QObject::connect(filterProxyModel, &TaskFilterProxyModel::filterNotMaximizedChanged, q, &TasksModel::filterNotMaximizedChanged);
+
+ groupingProxyModel = new TaskGroupingProxyModel(q);
+ groupingProxyModel->setSourceModel(filterProxyModel);
+@@ -1152,6 +1153,16 @@ void TasksModel::setFilterNotMinimized(bool filter)
+ d->filterProxyModel->setFilterNotMinimized(filter);
+ }
+
++bool TasksModel::filterNotMaximized() const
++{
++ return d->filterProxyModel->filterNotMaximized();
++}
++
++void TasksModel::setFilterNotMaximized(bool filter)
++{
++ d->filterProxyModel->setFilterNotMaximized(filter);
++}
++
+ TasksModel::SortMode TasksModel::sortMode() const
+ {
+ return d->sortMode;
+diff --git a/libtaskmanager/tasksmodel.h b/libtaskmanager/tasksmodel.h
+index 18e3d9bb4..8c84012d0 100644
+--- a/libtaskmanager/tasksmodel.h
++++ b/libtaskmanager/tasksmodel.h
+@@ -73,6 +73,7 @@ class TASKMANAGER_EXPORT TasksModel : public QSortFilterProxyModel, public Abstr
+ Q_PROPERTY(bool filterByScreen READ filterByScreen WRITE setFilterByScreen NOTIFY filterByScreenChanged)
+ Q_PROPERTY(bool filterByActivity READ filterByActivity WRITE setFilterByActivity NOTIFY filterByActivityChanged)
+ Q_PROPERTY(bool filterNotMinimized READ filterNotMinimized WRITE setFilterNotMinimized NOTIFY filterNotMinimizedChanged)
++ Q_PROPERTY(bool filterNotMaximized READ filterNotMaximized WRITE setFilterNotMaximized NOTIFY filterNotMaximized)
+
+ Q_PROPERTY(SortMode sortMode READ sortMode WRITE setSortMode NOTIFY sortModeChanged)
+ Q_PROPERTY(bool separateLaunchers READ separateLaunchers WRITE setSeparateLaunchers NOTIFY separateLaunchersChanged)
+@@ -295,6 +296,23 @@ public:
+ **/
+ void setFilterNotMinimized(bool filter);
+
++ /**
++ * Whether non-maximized tasks should be filtered. Defaults to
++ * @c false.
++ *
++ * @see setFilterNotMaximized
++ * @returns @c true if non-maximized tasks should be filtered.
++ **/
++ bool filterNotMaximized() const;
++
++ /**
++ * Set whether non-maximized tasks should be filtered.
++ *
++ * @see filterNotMaximized
++ * @param filter Whether non-maximized tasks should be filtered.
++ **/
++ void setFilterNotMaximized(bool filter);
++
+ /**
+ * The sort mode used in sorting tasks. Defaults to SortAlpha.
+ *
+@@ -848,6 +866,7 @@ Q_SIGNALS:
+ void filterByScreenChanged() const;
+ void filterByActivityChanged() const;
+ void filterNotMinimizedChanged() const;
++ void filterNotMaximizedChanged() const;
+ void sortModeChanged() const;
+ void separateLaunchersChanged() const;
+ void launchInPlaceChanged() const;
+diff --git a/shell/panelconfigview.cpp b/shell/panelconfigview.cpp
+index a331c0bb2..5637f3233 100644
+--- a/shell/panelconfigview.cpp
++++ b/shell/panelconfigview.cpp
+@@ -289,6 +289,17 @@ PanelView::VisibilityMode PanelConfigView::visibilityMode() const
+ return m_panelView->visibilityMode();
+ }
+
++void PanelConfigView::setOpacityMode(PanelView::OpacityMode mode)
++{
++ m_panelView->setOpacityMode(mode);
++ emit opacityModeChanged();
++}
++
++PanelView::OpacityMode PanelConfigView::opacityMode() const
++{
++ return m_panelView->opacityMode();
++}
++
+ Plasma::FrameSvg::EnabledBorders PanelConfigView::enabledBorders() const
+ {
+ return m_enabledBorders;
+diff --git a/shell/panelconfigview.h b/shell/panelconfigview.h
+index 8e0abd314..db2af6bf9 100644
+--- a/shell/panelconfigview.h
++++ b/shell/panelconfigview.h
+@@ -51,6 +51,7 @@ class PanelConfigView : public PlasmaQuick::ConfigView
+ {
+ Q_OBJECT
+ Q_PROPERTY(PanelView::VisibilityMode visibilityMode READ visibilityMode WRITE setVisibilityMode NOTIFY visibilityModeChanged)
++ Q_PROPERTY(PanelView::OpacityMode opacityMode READ opacityMode WRITE setOpacityMode NOTIFY opacityModeChanged)
+ Q_PROPERTY(Plasma::FrameSvg::EnabledBorders enabledBorders READ enabledBorders NOTIFY enabledBordersChanged)
+
+ public:
+@@ -62,6 +63,9 @@ public:
+ PanelView::VisibilityMode visibilityMode() const;
+ void setVisibilityMode(PanelView::VisibilityMode mode);
+
++ PanelView::OpacityMode opacityMode() const;
++ void setOpacityMode(PanelView::OpacityMode mode);
++
+ Plasma::FrameSvg::EnabledBorders enabledBorders() const;
+
+ protected:
+@@ -84,6 +88,7 @@ private Q_SLOTS:
+
+ Q_SIGNALS:
+ void visibilityModeChanged();
++ void opacityModeChanged();
+ void enabledBordersChanged();
+
+ private:
+diff --git a/shell/panelview.cpp b/shell/panelview.cpp
+index 4654a7a72..a699cc84c 100644
+--- a/shell/panelview.cpp
++++ b/shell/panelview.cpp
+@@ -64,6 +64,7 @@ PanelView::PanelView(ShellCorona *corona, QScreen *targetScreen, QWindow *parent
+ , m_alignment(Qt::AlignLeft)
+ , m_corona(corona)
+ , m_visibilityMode(NormalPanel)
++ , m_opacityMode(Adaptive)
+ , m_backgroundHints(Plasma::Types::StandardBackground)
+ , m_shellSurface(nullptr)
+ {
+@@ -76,8 +77,10 @@ PanelView::PanelView(ShellCorona *corona, QScreen *targetScreen, QWindow *parent
+ setClearBeforeRendering(true);
+ setColor(QColor(Qt::transparent));
+ setFlags(Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus);
++ updateAdaptiveOpacityEnabled();
+
+ connect(&m_theme, &Plasma::Theme::themeChanged, this, &PanelView::updateMask);
++ connect(&m_theme, &Plasma::Theme::themeChanged, this, &PanelView::updateAdaptiveOpacityEnabled);
+ connect(this, &PanelView::backgroundHintsChanged, this, &PanelView::updateMask);
+ connect(this, &PanelView::backgroundHintsChanged, this, &PanelView::updateEnabledBorders);
+ // TODO: add finished/componentComplete signal to QuickViewSharedEngine,
+@@ -405,6 +408,37 @@ PanelView::VisibilityMode PanelView::visibilityMode() const
+ return m_visibilityMode;
+ }
+
++PanelView::OpacityMode PanelView::opacityMode() const
++{
++ if (!m_theme.adaptiveTransparencyEnabled()) {
++ return PanelView::Translucent;
++ }
++ return m_opacityMode;
++}
++
++bool PanelView::adaptiveOpacityEnabled()
++{
++ return m_theme.adaptiveTransparencyEnabled();
++}
++
++void PanelView::setOpacityMode(PanelView::OpacityMode mode)
++{
++ if (m_opacityMode != mode) {
++ m_opacityMode = mode;
++ if (config().isValid() && config().parent().isValid()) {
++ config().parent().writeEntry("panelOpacity", (int)mode);
++ m_corona->requestApplicationConfigSync();
++ }
++ emit opacityModeChanged();
++ }
++}
++
++void PanelView::updateAdaptiveOpacityEnabled()
++{
++ emit opacityModeChanged();
++ emit adaptiveOpacityEnabledChanged();
++}
++
+ void PanelView::positionPanel()
+ {
+ if (!containment()) {
+@@ -599,6 +633,7 @@ void PanelView::restore()
+ // the place for this config key is changed in Plasma 5.9
+ // Do NOT use readConfigValueWithFallBack
+ setVisibilityMode((VisibilityMode)panelConfig.parent().readEntry<int>("panelVisibility", panelConfig.readEntry<int>("panelVisibility", (int)NormalPanel)));
++ setOpacityMode((OpacityMode)readConfigValueWithFallBack("panelOpacity", PanelView::OpacityMode::Adaptive));
+ m_initCompleted = true;
+ resizePanel();
+ positionPanel();
+diff --git a/shell/panelview.h b/shell/panelview.h
+index 60e4d446e..c312d4907 100644
+--- a/shell/panelview.h
++++ b/shell/panelview.h
+@@ -100,6 +100,18 @@ class PanelView : public PlasmaQuick::ContainmentView
+ */
+ Q_PROPERTY(VisibilityMode visibilityMode READ visibilityMode WRITE setVisibilityMode NOTIFY visibilityModeChanged)
+
++ /**
++ * Property that determines how a panel's opacity behaves.
++ *
++ * @see OpacityMode
++ */
++ Q_PROPERTY(OpacityMode opacityMode READ opacityMode WRITE setOpacityMode NOTIFY opacityModeChanged)
++
++ /**
++ /* Property that determines whether adaptive opacity is used.
++ */
++ Q_PROPERTY(bool adaptiveOpacityEnabled READ adaptiveOpacityEnabled NOTIFY adaptiveOpacityEnabledChanged)
++
+ public:
+ enum VisibilityMode {
+ NormalPanel = 0, /** default, always visible panel, the windowmanager reserves a places for it */
+@@ -109,6 +121,14 @@ public:
+ };
+ Q_ENUM(VisibilityMode)
+
++ /** Enumeration of possible opacity modes. */
++ enum OpacityMode {
++ Adaptive = 0, /** The panel will change opacity depending on the presence of a maximized window */
++ Opaque, /** The panel will always be opaque */
++ Translucent /** The panel will always be translucent */
++ };
++ Q_ENUM(OpacityMode)
++
+ explicit PanelView(ShellCorona *corona, QScreen *targetScreen = nullptr, QWindow *parent = nullptr);
+ ~PanelView() override;
+
+@@ -147,6 +167,11 @@ public:
+ VisibilityMode visibilityMode() const;
+ void setVisibilityMode(PanelView::VisibilityMode mode);
+
++ PanelView::OpacityMode opacityMode() const;
++ bool adaptiveOpacityEnabled();
++ void setOpacityMode(PanelView::OpacityMode mode);
++ void updateAdaptiveOpacityEnabled();
++
+ /**
+ * @returns the geometry of the panel given a distance
+ */
+@@ -185,6 +210,8 @@ Q_SIGNALS:
+ // QWindow does not have a property for screen. Adding this property requires re-implementing the signal
+ void screenToFollowChanged(QScreen *screen);
+ void visibilityModeChanged();
++ void opacityModeChanged();
++ void adaptiveOpacityEnabledChanged();
+
+ protected Q_SLOTS:
+ /**
+@@ -235,6 +262,7 @@ private:
+ ShellCorona *m_corona;
+ QTimer m_strutsTimer;
+ VisibilityMode m_visibilityMode;
++ OpacityMode m_opacityMode;
+ Plasma::Theme m_theme;
+ QTimer m_positionPaneltimer;
+ QTimer m_unhideTimer;
+--
+GitLab
+