From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 9DE541382C5 for ; Tue, 4 May 2021 21:12:24 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 25659E088A; Tue, 4 May 2021 21:12:21 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id F332CE088A for ; Tue, 4 May 2021 21:12:20 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id B7834340D39 for ; Tue, 4 May 2021 21:12:19 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id D7BA877E for ; Tue, 4 May 2021 21:12:15 +0000 (UTC) From: "Andreas Sturmlechner" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Andreas Sturmlechner" Message-ID: <1620159469.421fd89da5df5796db415c3eb4a294b18fca1277.asturm@gentoo> Subject: [gentoo-commits] proj/kde:master commit in: kde-plasma/plasma-workspace/files/, kde-plasma/plasma-workspace/ X-VCS-Repository: proj/kde X-VCS-Files: kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency-panelConfig.patch kde-plasma/plasma-workspace/files/plasma-workspace-5.21.5-transparency.patch kde-plasma/plasma-workspace/plasma-workspace-5.21.5.ebuild X-VCS-Directories: kde-plasma/plasma-workspace/files/ kde-plasma/plasma-workspace/ X-VCS-Committer: asturm X-VCS-Committer-Name: Andreas Sturmlechner X-VCS-Revision: 421fd89da5df5796db415c3eb4a294b18fca1277 X-VCS-Branch: master Date: Tue, 4 May 2021 21:12:15 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: ae8d59d5-79b0-4ab8-8987-9140e27d12f2 X-Archives-Hash: db4f6a5d095ffd07089c8203a52b2bb3 commit: 421fd89da5df5796db415c3eb4a294b18fca1277 Author: Andreas Sturmlechner gentoo org> AuthorDate: Tue May 4 20:00:23 2021 +0000 Commit: Andreas Sturmlechner gentoo org> CommitDate: Tue May 4 20:17:49 2021 +0000 URL: https://gitweb.gentoo.org/proj/kde.git/commit/?id=421fd89d kde-plasma/plasma-workspace: Backport 5.22 adaptive opacity feature This raises the minimum required KDE Frameworks version to 5.82.0 which is carrying the necessary backport in kde-frameworks/plasma. KDE-bug: https://bugs.kde.org/show_bug.cgi?id=434202 KDe-bug: https://bugs.kde.org/show_bug.cgi?id=434285 Package-Manager: Portage-3.0.18, Repoman-3.0.3 Signed-off-by: Andreas Sturmlechner gentoo.org> ...workspace-5.21.5-transparency-panelConfig.patch | 27 ++ .../plasma-workspace-5.21.5-transparency.patch | 376 +++++++++++++++++++++ .../plasma-workspace-5.21.5.ebuild | 6 +- 3 files changed, 408 insertions(+), 1 deletion(-) 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 0000000000..fb7993e6db --- /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 +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("panelVisibility", panelConfig.readEntry("panelVisibility", (int)NormalPanel))); +- setOpacityMode((OpacityMode)readConfigValueWithFallBack("panelOpacity", PanelView::OpacityMode::Adaptive)); ++ setOpacityMode((OpacityMode)config().parent().readEntry("panelOpacity", configDefaults().parent().readEntry("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 0000000000..1a925a137c --- /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?= +Date: Mon, 1 Mar 2021 22:14:43 +0000 +Subject: [PATCH] Add support for adaptive opacity panels + +Co-authored-by: Jan Blackquill +--- + 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("panelVisibility", panelConfig.readEntry("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 + diff --git a/kde-plasma/plasma-workspace/plasma-workspace-5.21.5.ebuild b/kde-plasma/plasma-workspace/plasma-workspace-5.21.5.ebuild index 711dd242a8..31b3b92188 100644 --- a/kde-plasma/plasma-workspace/plasma-workspace-5.21.5.ebuild +++ b/kde-plasma/plasma-workspace/plasma-workspace-5.21.5.ebuild @@ -143,7 +143,11 @@ PDEPEND=" >=kde-plasma/kde-cli-tools-${PVCUT}:5 " -PATCHES=( "${FILESDIR}/${PN}-5.14.2-split-libkworkspace.patch" ) +PATCHES=( + "${FILESDIR}/${PN}-5.14.2-split-libkworkspace.patch" + "${FILESDIR}/${P}-transparency.patch" # KDE-bug 434202 + "${FILESDIR}/${P}-transparency-panelConfig.patch" # KDE-bug 434285 +) src_prepare() { ecm_src_prepare