From 6cd2d37aef9a8974b31772a99496f0905e25c64b Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Mon, 15 Nov 2021 15:38:30 +0100 Subject: kde-frameworks/plasma: Visual fixes Make the OSD an actual wayland OSD KDE-bug: https://bugs.kde.org/show_bug.cgi?id=428859 Upstream commit 2ba1b0b642d540f74f0e21e7aaa272644ea4eda5 Fixed a visual glitch with Plasma tooltips flickering KDE-bug: https://bugs.kde.org/show_bug.cgi?id=305247 Upstream commit 6176d8ef8f36290075c5bd8932d623e68468a1cd Fix centered icons and text in Plasma applet tabs KDE-bug: https://bugs.kde.org/show_bug.cgi?id=442830 Upstream commit 92ac1038cff333d70a71331b2a5fa0b9d91bc39d Package-Manager: Portage-3.0.28, Repoman-3.0.3 Signed-off-by: Andreas Sturmlechner --- .../files/plasma-5.88.0-fix-centered-text.patch | 121 +++++++++++++++++++++ ....88.0-fix-misrenderings-with-transparency.patch | 34 ++++++ ...sma-5.88.0-make-OSD-an-actual-wayland-OSD.patch | 34 ++++++ kde-frameworks/plasma/plasma-5.88.0-r1.ebuild | 79 ++++++++++++++ 4 files changed, 268 insertions(+) create mode 100644 kde-frameworks/plasma/files/plasma-5.88.0-fix-centered-text.patch create mode 100644 kde-frameworks/plasma/files/plasma-5.88.0-fix-misrenderings-with-transparency.patch create mode 100644 kde-frameworks/plasma/files/plasma-5.88.0-make-OSD-an-actual-wayland-OSD.patch create mode 100644 kde-frameworks/plasma/plasma-5.88.0-r1.ebuild (limited to 'kde-frameworks') diff --git a/kde-frameworks/plasma/files/plasma-5.88.0-fix-centered-text.patch b/kde-frameworks/plasma/files/plasma-5.88.0-fix-centered-text.patch new file mode 100644 index 000000000000..8fb393a568d6 --- /dev/null +++ b/kde-frameworks/plasma/files/plasma-5.88.0-fix-centered-text.patch @@ -0,0 +1,121 @@ +From 92ac1038cff333d70a71331b2a5fa0b9d91bc39d Mon Sep 17 00:00:00 2001 +From: Eugene Popov +Date: Fri, 19 Nov 2021 11:13:03 +0000 +Subject: [PATCH] Fix IconLabel + +--- + .../plasmacomponents3/private/IconLabel.qml | 97 +++++++++++-------- + 1 file changed, 55 insertions(+), 42 deletions(-) + +diff --git a/src/declarativeimports/plasmacomponents3/private/IconLabel.qml b/src/declarativeimports/plasmacomponents3/private/IconLabel.qml +index 467c2f54b..74a8ff3a5 100644 +--- a/src/declarativeimports/plasmacomponents3/private/IconLabel.qml ++++ b/src/declarativeimports/plasmacomponents3/private/IconLabel.qml +@@ -24,49 +24,62 @@ T.Control { + PlasmaCore.ColorScope.inherit: true + implicitWidth: implicitContentWidth + leftPadding + rightPadding + implicitHeight: implicitContentHeight + topPadding + bottomPadding +- contentItem: GridLayout { +- rowSpacing: root.spacing +- columnSpacing: root.spacing +- flow: root.display === T.AbstractButton.TextUnderIcon ? GridLayout.TopToBottom : GridLayout.LeftToRight +- PlasmaCore.IconItem { +- id: iconItem +- visible: valid && width > 0 && height > 0 && root.display !== T.AbstractButton.TextOnly +- colorGroup: root.PlasmaCore.ColorScope.colorGroup +- implicitWidth: PlasmaCore.Units.iconSizes.sizeForLabels +- implicitHeight: PlasmaCore.Units.iconSizes.sizeForLabels +- Layout.fillWidth: true +- Layout.fillHeight: true +- Layout.maximumWidth: implicitWidth > 0 ? implicitWidth : Number.POSITIVE_INFINITY +- Layout.maximumHeight: implicitHeight > 0 ? implicitHeight : Number.POSITIVE_INFINITY +- Layout.alignment: if (root.textBesideIcon) { +- Qt.AlignRight | Qt.AlignVCenter +- } else if (root.textUnderIcon) { +- Qt.AlignHCenter | Qt.AlignBottom +- } else { +- Qt.AlignCenter ++ contentItem: Item { ++ implicitWidth: gridLayout.implicitWidth ++ implicitHeight: gridLayout.implicitHeight ++ GridLayout { ++ id: gridLayout ++ rowSpacing: root.spacing ++ columnSpacing: root.spacing ++ flow: root.display === T.AbstractButton.TextUnderIcon ? GridLayout.TopToBottom : GridLayout.LeftToRight ++ x: { ++ if (root.alignment & Qt.AlignLeft) { ++ return 0; ++ } ++ if (root.alignment & Qt.AlignRight) { ++ return parent.width - width; ++ } ++ return Math.round((parent.width - width) / 2); + } +- } +- T.Label { +- id: label +- visible: text.length > 0 && root.display !== T.AbstractButton.IconOnly +- palette: root.palette +- font: root.font +- horizontalAlignment: root.alignment & Qt.AlignHorizontal_Mask || Text.AlignHCenter +- verticalAlignment: root.alignment & Qt.AlignVertical_Mask || Text.AlignVCenter +- // Work around Qt bug where NativeRendering breaks for non-integer scale factors +- // https://bugreports.qt.io/browse/QTBUG-70481 +- renderType: Screen.devicePixelRatio % 1 !== 0 ? Text.QtRendering : Text.NativeRendering +- color: PlasmaCore.ColorScope.textColor +- linkColor: PlasmaCore.Theme.linkColor +- elide: Text.ElideRight +- Layout.fillWidth: root.alignment & Qt.AlignHorizontal_Mask +- Layout.fillHeight: root.alignment & Qt.AlignVertical_Mask +- Layout.alignment: if (root.textBesideIcon) { +- Qt.AlignLeft | Qt.AlignVCenter +- } else if (root.textUnderIcon) { +- Qt.AlignHCenter | Qt.AlignTop +- } else { +- Qt.AlignCenter ++ y: { ++ if (root.alignment & Qt.AlignTop) { ++ return 0; ++ } ++ if (root.alignment & Qt.AlignBottom) { ++ return parent.height - height; ++ } ++ return Math.round((parent.height - height) / 2); ++ } ++ width: Math.min(parent.width, implicitWidth) ++ height: Math.min(parent.height, implicitHeight) ++ PlasmaCore.IconItem { ++ id: iconItem ++ visible: valid && width > 0 && height > 0 && root.display !== T.AbstractButton.TextOnly ++ colorGroup: root.PlasmaCore.ColorScope.colorGroup ++ implicitWidth: PlasmaCore.Units.iconSizes.sizeForLabels ++ implicitHeight: PlasmaCore.Units.iconSizes.sizeForLabels ++ Layout.alignment: Qt.AlignCenter ++ Layout.maximumWidth: implicitWidth > 0 ? implicitWidth : Number.POSITIVE_INFINITY ++ Layout.maximumHeight: implicitHeight > 0 ? implicitHeight : Number.POSITIVE_INFINITY ++ } ++ T.Label { ++ id: label ++ visible: text.length > 0 && root.display !== T.AbstractButton.IconOnly ++ palette: root.palette ++ font: root.font ++ // Work around Qt bug where NativeRendering breaks for non-integer scale factors ++ // https://bugreports.qt.io/browse/QTBUG-70481 ++ renderType: Screen.devicePixelRatio % 1 !== 0 ? Text.QtRendering : Text.NativeRendering ++ color: PlasmaCore.ColorScope.textColor ++ linkColor: PlasmaCore.Theme.linkColor ++ elide: Text.ElideRight ++ Layout.alignment: Qt.AlignCenter ++ Layout.fillWidth: { ++ if (!iconItem.visible || parent.flow === GridLayout.TopToBottom) { ++ return implicitWidth > parent.width; ++ } ++ return iconItem.implicitWidth + parent.columnSpacing + implicitWidth > parent.width; ++ } + } + } + } +-- +GitLab + diff --git a/kde-frameworks/plasma/files/plasma-5.88.0-fix-misrenderings-with-transparency.patch b/kde-frameworks/plasma/files/plasma-5.88.0-fix-misrenderings-with-transparency.patch new file mode 100644 index 000000000000..d1e6f37d8a2b --- /dev/null +++ b/kde-frameworks/plasma/files/plasma-5.88.0-fix-misrenderings-with-transparency.patch @@ -0,0 +1,34 @@ +From 6176d8ef8f36290075c5bd8932d623e68468a1cd Mon Sep 17 00:00:00 2001 +From: Marco Martin +Date: Tue, 16 Nov 2021 11:05:17 +0100 +Subject: [PATCH] Do updateTheme after QQuickWindow::event + +doing updatetheme there will ensure that the window size is correct, +so then when the surface commit will happen, we'll have the blur +and contrast regions wit hthe proper geometry + +BUG:305247 +--- + src/plasmaquick/dialog.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/plasmaquick/dialog.cpp b/src/plasmaquick/dialog.cpp +index eac7d432a..343bfe4c0 100644 +--- a/src/plasmaquick/dialog.cpp ++++ b/src/plasmaquick/dialog.cpp +@@ -1243,10 +1243,12 @@ bool Dialog::event(QEvent *event) + // sometimes non null regions arrive even for non visible windows + // for which surface creation would fail + if (!d->shellSurface && isVisible()) { ++ const bool ret = QQuickWindow::event(event); + KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager | NET::SkipSwitcher); + d->setupWaylandIntegration(); + d->updateVisibility(true); + d->updateTheme(); ++ return ret; + } + #endif + } else if (event->type() == QEvent::PlatformSurface) { +-- +GitLab + diff --git a/kde-frameworks/plasma/files/plasma-5.88.0-make-OSD-an-actual-wayland-OSD.patch b/kde-frameworks/plasma/files/plasma-5.88.0-make-OSD-an-actual-wayland-OSD.patch new file mode 100644 index 000000000000..0631155c89bf --- /dev/null +++ b/kde-frameworks/plasma/files/plasma-5.88.0-make-OSD-an-actual-wayland-OSD.patch @@ -0,0 +1,34 @@ +From 2ba1b0b642d540f74f0e21e7aaa272644ea4eda5 Mon Sep 17 00:00:00 2001 +From: Marco Martin +Date: Mon, 8 Nov 2021 16:12:38 +0000 +Subject: [PATCH] make the OSD an actual wayland OSD + +when the OnScreenDisplay type is set, set it on the plasma shell surface +so KWin can actually treat it as such + +CCBUG:428859 +--- + src/plasmaquick/dialog.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/plasmaquick/dialog.cpp b/src/plasmaquick/dialog.cpp +index 4cea3a28e..3254b8320 100644 +--- a/src/plasmaquick/dialog.cpp ++++ b/src/plasmaquick/dialog.cpp +@@ -736,6 +736,13 @@ void DialogPrivate::applyType() + if (!wmType) { + KWindowSystem::setType(q->winId(), static_cast(type)); + } ++#if HAVE_KWAYLAND ++ if (type == Dialog::OnScreenDisplay) { ++ if (shellSurface) { ++ shellSurface->setRole(KWayland::Client::PlasmaShellSurface::Role::OnScreenDisplay); ++ } ++ } ++#endif + } else { + q->setFlags(Qt::FramelessWindowHint | q->flags()); + +-- +GitLab + diff --git a/kde-frameworks/plasma/plasma-5.88.0-r1.ebuild b/kde-frameworks/plasma/plasma-5.88.0-r1.ebuild new file mode 100644 index 000000000000..5a0e6848003e --- /dev/null +++ b/kde-frameworks/plasma/plasma-5.88.0-r1.ebuild @@ -0,0 +1,79 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KDE_ORG_NAME="${PN}-framework" +PVCUT=$(ver_cut 1-2) +QTMIN=5.15.2 +VIRTUALX_REQUIRED="test" +inherit ecm kde.org + +DESCRIPTION="Plasma framework" + +LICENSE="LGPL-2+" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" +IUSE="gles2-only man wayland X" + +RESTRICT="test" + +RDEPEND=" + >=dev-qt/qtdbus-${QTMIN}:5 + >=dev-qt/qtdeclarative-${QTMIN}:5 + >=dev-qt/qtgui-${QTMIN}:5[gles2-only=,X=] + >=dev-qt/qtquickcontrols-${QTMIN}:5 + >=dev-qt/qtsql-${QTMIN}:5 + >=dev-qt/qtsvg-${QTMIN}:5 + >=dev-qt/qtwidgets-${QTMIN}:5 + =kde-frameworks/kactivities-${PVCUT}*:5 + =kde-frameworks/karchive-${PVCUT}*:5 + =kde-frameworks/kconfig-${PVCUT}*:5 + =kde-frameworks/kconfigwidgets-${PVCUT}*:5 + =kde-frameworks/kcoreaddons-${PVCUT}*:5 + =kde-frameworks/kdeclarative-${PVCUT}*:5 + =kde-frameworks/kglobalaccel-${PVCUT}*:5 + =kde-frameworks/kguiaddons-${PVCUT}*:5 + =kde-frameworks/ki18n-${PVCUT}*:5 + =kde-frameworks/kiconthemes-${PVCUT}*:5 + =kde-frameworks/kio-${PVCUT}*:5 + =kde-frameworks/kirigami-${PVCUT}*:5 + =kde-frameworks/knotifications-${PVCUT}*:5 + =kde-frameworks/kpackage-${PVCUT}*:5 + =kde-frameworks/kservice-${PVCUT}*:5 + =kde-frameworks/kwidgetsaddons-${PVCUT}*:5 + =kde-frameworks/kwindowsystem-${PVCUT}*:5 + =kde-frameworks/kxmlgui-${PVCUT}*:5 + !gles2-only? ( media-libs/libglvnd[X?] ) + wayland? ( + =kde-frameworks/kwayland-${PVCUT}*:5 + media-libs/libglvnd + ) + X? ( + >=dev-qt/qtx11extras-${QTMIN}:5 + x11-libs/libX11 + x11-libs/libxcb + ) +" +DEPEND="${RDEPEND} + X? ( x11-base/xorg-proto ) +" +BDEPEND="man? ( >=kde-frameworks/kdoctools-${PVCUT}:5 )" + +PATCHES=( + "${FILESDIR}"/${P}-make-OSD-an-actual-wayland-OSD.patch + "${FILESDIR}"/${P}-fix-misrenderings-with-transparency.patch # KDE-bug 305247 + "${FILESDIR}"/${P}-fix-centered-text.patch # KDE-bug 442830 +) + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package !gles2-only OpenGL) + $(cmake_use_find_package man KF5DocTools) + $(cmake_use_find_package wayland EGL) + $(cmake_use_find_package wayland KF5Wayland) + $(cmake_use_find_package X X11) + $(cmake_use_find_package X XCB) + ) + + ecm_src_configure +} -- cgit v1.2.3-65-gdbad