commit:     75a7e9b75c3eb446457b36b06a88ebb8485ea54e
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 10 14:37:01 2021 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Dec 10 14:58:21 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=75a7e9b7

kde-plasma/plasma-desktop: Fix touchpad applet, initial panel sizing

Upstream commit 9f19af95e9699420b057b6ff7e99968faf8948a3
See also: https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/715

Upstream commits:
2131daa05195a2b55f593acf3d323cf4c2a89936
aadab772fb81ff3d97c8b5342a8a018f51b2ef60
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=445982
Package-Manager: Portage-3.0.29, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 ...a-desktop-5.23.4-fix-panel-initial-sizing.patch | 126 ++++++++++++++
 ...-fix-touchpad-applet-popup-close-on-click.patch |  53 ++++++
 ...ktop-5.23.4-fix-touchpad-mousearea-lookup.patch |  35 ++++
 .../plasma-desktop/plasma-desktop-5.23.4-r1.ebuild | 190 +++++++++++++++++++++
 4 files changed, 404 insertions(+)

diff --git 
a/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-panel-initial-sizing.patch
 
b/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-panel-initial-sizing.patch
new file mode 100644
index 000000000000..d77187409738
--- /dev/null
+++ 
b/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-panel-initial-sizing.patch
@@ -0,0 +1,126 @@
+From 9f19af95e9699420b057b6ff7e99968faf8948a3 Mon Sep 17 00:00:00 2001
+From: David Edmundson <k...@davidedmundson.co.uk>
+Date: Fri, 3 Dec 2021 16:34:40 +0000
+Subject: [PATCH] containments/panel: Fix initial sizing
+
+Timers for anything that affect layouts are universally wrong.
+
+Ultimately this breaks layouts internal usage of QQmlParserStatus. For
+runtime changes layout internally most relayouting is buffered
+internally till the polish event which is once per frame.
+
+Removing this makes startup faster, less glitchy and more declarative.
+
+
+(cherry picked from commit b2fd1578a0063938a3eda8d8e41f14394b7635f7)
+---
+ containments/panel/contents/ui/main.qml | 34 ++++++-------------------
+ 1 file changed, 8 insertions(+), 26 deletions(-)
+
+diff --git a/containments/panel/contents/ui/main.qml 
b/containments/panel/contents/ui/main.qml
+index 0a5477476..9b5656acf 100644
+--- a/containments/panel/contents/ui/main.qml
++++ b/containments/panel/contents/ui/main.qml
+@@ -154,14 +154,12 @@ function checkLastSpacer() {
+ 
+ //BEGIN connections
+     Component.onCompleted: {
+-        currentLayout.isLayoutHorizontal = isHorizontal
+         LayoutManager.plasmoid = plasmoid;
+         LayoutManager.root = root;
+         LayoutManager.layout = currentLayout;
+         LayoutManager.lastSpacer = lastSpacer;
+         LayoutManager.marginHighlights = [];
+         LayoutManager.restore();
+-        containmentSizeSyncTimer.restart();
+ 
+         plasmoid.action("configure").visible = Qt.binding(function() {
+             return !plasmoid.immutable;
+@@ -200,7 +198,6 @@ function checkLastSpacer() {
+         event.accept(event.proposedAction);
+         root.fixedWidth = 0;
+         root.fixedHeight = 0;
+-        containmentSizeSyncTimer.restart();
+     }
+ 
+ 
+@@ -215,8 +212,6 @@ function checkLastSpacer() {
+     }
+ 
+     Plasmoid.onUserConfiguringChanged: {
+-        containmentSizeSyncTimer.restart();
+-
+         if (plasmoid.immutable) {
+             if (dragOverlay) {
+                 dragOverlay.destroy();
+@@ -245,11 +240,7 @@ function checkLastSpacer() {
+         }
+     }
+ 
+-    Plasmoid.onFormFactorChanged: containmentSizeSyncTimer.restart();
+-    Containment.onEditModeChanged: containmentSizeSyncTimer.restart();
+-
+     onToolBoxChanged: {
+-        containmentSizeSyncTimer.restart();
+         if (startupTimer.running) {
+             startupTimer.restart();
+         }
+@@ -478,10 +469,16 @@ function checkLastSpacer() {
+ 
+     GridLayout {
+         id: currentLayout
+-        property bool isLayoutHorizontal
++        readonly property bool isLayoutHorizontal: root.isHorizontal
+         rowSpacing: PlasmaCore.Units.smallSpacing
+         columnSpacing: PlasmaCore.Units.smallSpacing
+ 
++        x: (isLayoutHorizontal && root.toolBox && 
Qt.application.layoutDirection === Qt.RightToLeft && plasmoid.editMode) ? 
root.toolBox.width : 0;
++        y: 0
++
++        width: root.width - (isLayoutHorizontal && root.toolBox && 
plasmoid.editMode ? root.toolBox.width : 0)
++        height: root.height - (!isLayoutHorizontal && root.toolBox && 
plasmoid.editMode ? root.toolBox.height : 0)
++
+         Layout.preferredWidth: {
+             var width = 0;
+             for (var i = 0, length = currentLayout.children.length; i < 
length; ++i) {
+@@ -505,36 +502,21 @@ function checkLastSpacer() {
+         rows: 1
+         columns: 1
+         //when horizontal layout top-to-bottom, this way it will obey our 
limit of one row and actually lay out left to right
+-        flow: isHorizontal ? GridLayout.TopToBottom : GridLayout.LeftToRight
++        flow: isLayoutHorizontal ? GridLayout.TopToBottom : 
GridLayout.LeftToRight
+         layoutDirection: Qt.application.layoutDirection
+     }
+ 
+     onWidthChanged: {
+-        containmentSizeSyncTimer.restart()
+         if (startupTimer.running) {
+             startupTimer.restart();
+         }
+     }
+     onHeightChanged: {
+-        containmentSizeSyncTimer.restart()
+         if (startupTimer.running) {
+             startupTimer.restart();
+         }
+     }
+ 
+-    Timer {
+-        id: containmentSizeSyncTimer
+-        interval: 150
+-        onTriggered: {
+-            dndSpacer.parent = root;
+-            currentLayout.x = (isHorizontal && toolBox && 
Qt.application.layoutDirection === Qt.RightToLeft && plasmoid.editMode) ? 
toolBox.width : 0;
+-            currentLayout.y = 0
+-            currentLayout.width = root.width - (isHorizontal && toolBox && 
plasmoid.editMode ? toolBox.width : 0)
+-            currentLayout.height = root.height - (!isHorizontal && toolBox && 
plasmoid.editMode ? toolBox.height : 0)
+-            currentLayout.isLayoutHorizontal = isHorizontal
+-        }
+-    }
+-
+     //FIXME: I don't see other ways at the moment a way to see when the UI is 
REALLY ready
+     Timer {
+         id: startupTimer
+-- 
+GitLab
+

diff --git 
a/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-touchpad-applet-popup-close-on-click.patch
 
b/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-touchpad-applet-popup-close-on-click.patch
new file mode 100644
index 000000000000..1c9a2b79e31e
--- /dev/null
+++ 
b/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-touchpad-applet-popup-close-on-click.patch
@@ -0,0 +1,53 @@
+From 2131daa05195a2b55f593acf3d323cf4c2a89936 Mon Sep 17 00:00:00 2001
+From: Nate Graham <n...@kde.org>
+Date: Thu, 2 Dec 2021 20:13:46 -0700
+Subject: [PATCH] kcms/touchpad/applet: Make the popup close on click
+
+BUG: 445982
+FIXED-IN: 5.23.5
+(cherry picked from commit 4cb2de984ab79bc257af0135bf92ea7390d5617f)
+---
+ .../applet/qml/contents/ui/touchpad.qml       | 23 +++++++++++--------
+ 1 file changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/kcms/touchpad/applet/qml/contents/ui/touchpad.qml 
b/kcms/touchpad/applet/qml/contents/ui/touchpad.qml
+index 3f5eb722f..106859c3a 100644
+--- a/kcms/touchpad/applet/qml/contents/ui/touchpad.qml
++++ b/kcms/touchpad/applet/qml/contents/ui/touchpad.qml
+@@ -56,20 +56,23 @@ Item {
+         connectedSources: dataSource.sources
+     }
+ 
+-    Plasmoid.compactRepresentation: PlasmaCore.ToolTipArea {
+-        id: toolTip
++    Plasmoid.compactRepresentation: PlasmaCore.IconItem {
++        implicitWidth: PlasmaCore.Units.iconSizes.small
++        implicitHeight: PlasmaCore.Units.iconSizes.small
+ 
+-        Layout.minimumWidth: PlasmaCore.Units.iconSizes.small
+-        Layout.minimumHeight: Layout.minimumWidth
++        source: plasmoid.icon
++        active: parent.containsMouse
+ 
+-        mainText: plasmoid.title
+-        subText: plasmoid.toolTipSubText
++        PlasmaCore.ToolTipArea {
++            mainText: plasmoid.title
++            subText: plasmoid.toolTipSubText
++        }
+ 
+-        PlasmaCore.IconItem {
++        MouseArea {
+             anchors.fill: parent
+-            source: plasmoid.icon
+-            active: parent.containsMouse
+-            enabled: root.hasTouchpad
++            onClicked: {
++                plasmoid.expanded = !plasmoid.expanded;
++            }
+         }
+     }
+ 
+-- 
+GitLab
+

diff --git 
a/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-touchpad-mousearea-lookup.patch
 
b/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-touchpad-mousearea-lookup.patch
new file mode 100644
index 000000000000..07d741424005
--- /dev/null
+++ 
b/kde-plasma/plasma-desktop/files/plasma-desktop-5.23.4-fix-touchpad-mousearea-lookup.patch
@@ -0,0 +1,35 @@
+From aadab772fb81ff3d97c8b5342a8a018f51b2ef60 Mon Sep 17 00:00:00 2001
+From: Nate Graham <n...@kde.org>
+Date: Fri, 3 Dec 2021 09:36:47 -0700
+Subject: [PATCH] kcms/touchpad/applet: Fix mousearea lookup
+
+(cherry picked from commit f4060c48b264a5054c2ffa795c208910d42bfd42)
+---
+ kcms/touchpad/applet/qml/contents/ui/touchpad.qml | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/kcms/touchpad/applet/qml/contents/ui/touchpad.qml 
b/kcms/touchpad/applet/qml/contents/ui/touchpad.qml
+index 106859c3a..aa1034e59 100644
+--- a/kcms/touchpad/applet/qml/contents/ui/touchpad.qml
++++ b/kcms/touchpad/applet/qml/contents/ui/touchpad.qml
+@@ -61,7 +61,7 @@ Item {
+         implicitHeight: PlasmaCore.Units.iconSizes.small
+ 
+         source: plasmoid.icon
+-        active: parent.containsMouse
++        active: mousearea.containsMouse
+ 
+         PlasmaCore.ToolTipArea {
+             mainText: plasmoid.title
+@@ -69,6 +69,8 @@ Item {
+         }
+ 
+         MouseArea {
++            id: mousearea
++
+             anchors.fill: parent
+             onClicked: {
+                 plasmoid.expanded = !plasmoid.expanded;
+-- 
+GitLab
+

diff --git a/kde-plasma/plasma-desktop/plasma-desktop-5.23.4-r1.ebuild 
b/kde-plasma/plasma-desktop/plasma-desktop-5.23.4-r1.ebuild
new file mode 100644
index 000000000000..a19fe33aac17
--- /dev/null
+++ b/kde-plasma/plasma-desktop/plasma-desktop-5.23.4-r1.ebuild
@@ -0,0 +1,190 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="forceoptional"
+ECM_TEST="true"
+KFMIN=5.86.0
+PVCUT=$(ver_cut 1-3)
+QTMIN=5.15.2
+VIRTUALX_REQUIRED="test"
+inherit ecm kde.org optfeature
+
+DESCRIPTION="KDE Plasma desktop"
+XORGHDRS="${PN}-override-include-dirs-1"
+SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/${XORGHDRS}.tar.xz";
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="emoji ibus +kaccounts +policykit scim +semantic-desktop telemetry"
+
+COMMON_DEPEND="
+       >=dev-qt/qtconcurrent-${QTMIN}:5
+       >=dev-qt/qtdbus-${QTMIN}:5
+       >=dev-qt/qtdeclarative-${QTMIN}:5
+       >=dev-qt/qtgui-${QTMIN}:5
+       >=dev-qt/qtnetwork-${QTMIN}:5
+       >=dev-qt/qtprintsupport-${QTMIN}:5
+       >=dev-qt/qtsql-${QTMIN}:5
+       >=dev-qt/qtsvg-${QTMIN}:5
+       >=dev-qt/qtwidgets-${QTMIN}:5
+       >=dev-qt/qtx11extras-${QTMIN}:5
+       >=dev-qt/qtxml-${QTMIN}:5
+       >=kde-frameworks/attica-${KFMIN}:5
+       >=kde-frameworks/kactivities-${KFMIN}:5
+       >=kde-frameworks/kactivities-stats-${KFMIN}:5
+       >=kde-frameworks/karchive-${KFMIN}:5
+       >=kde-frameworks/kauth-${KFMIN}:5
+       >=kde-frameworks/kbookmarks-${KFMIN}:5
+       >=kde-frameworks/kcmutils-${KFMIN}:5
+       >=kde-frameworks/kcodecs-${KFMIN}:5
+       >=kde-frameworks/kcompletion-${KFMIN}:5
+       >=kde-frameworks/kconfig-${KFMIN}:5
+       >=kde-frameworks/kconfigwidgets-${KFMIN}:5
+       >=kde-frameworks/kcoreaddons-${KFMIN}:5
+       >=kde-frameworks/kcrash-${KFMIN}:5
+       >=kde-frameworks/kdbusaddons-${KFMIN}:5
+       >=kde-frameworks/kdeclarative-${KFMIN}:5
+       >=kde-frameworks/kded-${KFMIN}:5
+       >=kde-frameworks/kdelibs4support-${KFMIN}:5
+       >=kde-frameworks/kglobalaccel-${KFMIN}:5
+       >=kde-frameworks/kguiaddons-${KFMIN}:5
+       >=kde-frameworks/ki18n-${KFMIN}:5
+       >=kde-frameworks/kiconthemes-${KFMIN}:5
+       >=kde-frameworks/kio-${KFMIN}:5
+       >=kde-frameworks/kitemmodels-${KFMIN}:5
+       >=kde-frameworks/kitemviews-${KFMIN}:5
+       >=kde-frameworks/kjobwidgets-${KFMIN}:5
+       >=kde-frameworks/knewstuff-${KFMIN}:5
+       >=kde-frameworks/knotifications-${KFMIN}:5
+       >=kde-frameworks/knotifyconfig-${KFMIN}:5
+       >=kde-frameworks/kparts-${KFMIN}:5
+       >=kde-frameworks/krunner-${KFMIN}:5
+       >=kde-frameworks/kservice-${KFMIN}:5
+       >=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+       >=kde-frameworks/kwindowsystem-${KFMIN}:5
+       >=kde-frameworks/kxmlgui-${KFMIN}:5
+       >=kde-frameworks/plasma-${KFMIN}:5
+       >=kde-frameworks/solid-${KFMIN}:5
+       >=kde-frameworks/sonnet-${KFMIN}:5
+       >=kde-plasma/kwin-${PVCUT}:5
+       >=kde-plasma/libksysguard-${PVCUT}:5
+       >=kde-plasma/libkworkspace-${PVCUT}:5
+       >=kde-plasma/plasma-workspace-${PVCUT}:5
+       >=media-libs/phonon-4.11.0
+       virtual/libcrypt:=
+       x11-libs/libX11
+       x11-libs/libXfixes
+       x11-libs/libXi
+       x11-libs/libxcb[xkb]
+       x11-libs/libxkbfile
+       emoji? (
+               app-i18n/ibus[emoji]
+               dev-libs/glib:2
+               media-fonts/noto-emoji
+       )
+       ibus? (
+               app-i18n/ibus
+               dev-libs/glib:2
+               >=dev-qt/qtx11extras-${QTMIN}:5
+               x11-libs/libxcb
+               x11-libs/xcb-util-keysyms
+       )
+       kaccounts? (
+               kde-apps/kaccounts-integration:5
+               net-libs/accounts-qt
+       )
+       policykit? ( >=kde-frameworks/kwallet-${KFMIN}:5 )
+       scim? ( app-i18n/scim )
+       semantic-desktop? ( >=kde-frameworks/baloo-${KFMIN}:5 )
+       telemetry? ( dev-libs/kuserfeedback:5 )
+"
+DEPEND="${COMMON_DEPEND}
+       dev-libs/boost
+       x11-base/xorg-proto
+"
+RDEPEND="${COMMON_DEPEND}
+       !kde-plasma/user-manager
+       >=dev-qt/qtgraphicaleffects-${QTMIN}:5
+       >=dev-qt/qtquickcontrols2-${QTMIN}:5
+       >=kde-frameworks/kirigami-${KFMIN}:5
+       >=kde-frameworks/qqc2-desktop-style-${KFMIN}:5
+       >=kde-plasma/kde-cli-tools-${PVCUT}:5
+       >=kde-plasma/oxygen-${PVCUT}:5
+       sys-apps/util-linux
+       x11-apps/setxkbmap
+       x11-misc/xdg-user-dirs
+       kaccounts? ( net-libs/signon-oauth2 )
+       policykit? ( sys-apps/accountsservice )
+"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+       "${WORKDIR}/${XORGHDRS}/override-include-dirs.patch" # downstream patch
+       # 5.23 branch
+       "${FILESDIR}"/${P}-fix-panel-initial-sizing.patch
+       "${FILESDIR}"/${P}-fix-touchpad-applet-popup-close-on-click.patch # 
KDE-bug 445982
+       "${FILESDIR}"/${P}-fix-touchpad-mousearea-lookup.patch
+)
+
+src_prepare() {
+       ecm_src_prepare
+
+       if ! use policykit; then
+               ecm_punt_bogus_dep KF5 Wallet
+               cmake_run_in kcms cmake_comment_add_subdirectory users
+       fi
+
+       if ! use ibus; then
+               sed -e "s/Qt5X11Extras_FOUND AND XCB_XCB_FOUND AND 
XCB_KEYSYMS_FOUND/false/" \
+                       -i applets/kimpanel/backend/ibus/CMakeLists.txt || die
+       fi
+
+       use emoji || cmake_run_in applets/kimpanel/backend/ibus \
+               cmake_comment_add_subdirectory emojier
+
+       # TODO: try to get a build switch upstreamed
+       if ! use scim; then
+               sed -e "s/^pkg_check_modules.*SCIM/#&/" -i CMakeLists.txt || die
+       fi
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_DISABLE_FIND_PACKAGE_PackageKitQt5=ON # not packaged
+               -DEVDEV_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
+               -DXORGLIBINPUT_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
+               -DXORGSERVER_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
+               -DSYNAPTICS_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
+               $(cmake_use_find_package kaccounts AccountsQt5)
+               $(cmake_use_find_package kaccounts KAccounts)
+               $(cmake_use_find_package semantic-desktop KF5Baloo)
+               $(cmake_use_find_package telemetry KUserFeedback)
+       )
+       if ! use emoji && ! use ibus; then
+               mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_GLIB2=ON )
+       fi
+
+       ecm_src_configure
+}
+
+src_test() {
+       # parallel tests fail, foldermodeltest,positionertest hang, bug #646890
+       # test_kio_fonts needs D-Bus, bug #634166
+       # lookandfeel-kcmTest is unreliable for a long time, bug #607918
+       local myctestargs=(
+               -j1
+               -E 
"(foldermodeltest|positionertest|test_kio_fonts|lookandfeel-kcmTest)"
+       )
+
+       ecm_src_test
+}
+
+pkg_postinst() {
+       if [[ -z "${REPLACING_VERSIONS}" ]]; then
+               optfeature "screen reader support" app-accessibility/orca
+       fi
+       ecm_pkg_postinst
+}

Reply via email to