commit:     eaf0f401e8941f9444f428a758491537a16ac3f0
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 11 16:32:10 2023 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Nov 12 09:18:13 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=eaf0f401

kde-plasma/plasma-desktop: foldermodel: lift screen add/remove handling

... out of screenmapper.
- KDE-bug: https://bugs.kde.org/show_bug.cgi?id=467951
- KDE-bug: https://bugs.kde.org/show_bug.cgi?id=467092

Respin override-include-dirs-3 tarball, updating libinput header.

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 kde-plasma/plasma-desktop/Manifest                 |   1 +
 ....9-foldermodel-screen-add-remove-handling.patch |  95 +++++++++++
 .../plasma-desktop/plasma-desktop-5.27.9-r1.ebuild | 180 +++++++++++++++++++++
 3 files changed, 276 insertions(+)

diff --git a/kde-plasma/plasma-desktop/Manifest 
b/kde-plasma/plasma-desktop/Manifest
index 65d5febe98ec..464e9ae430dc 100644
--- a/kde-plasma/plasma-desktop/Manifest
+++ b/kde-plasma/plasma-desktop/Manifest
@@ -1,3 +1,4 @@
 DIST plasma-desktop-5.27.8.tar.xz 14718232 BLAKE2B 
a78a67b731f2f4d68fe1bf469006c4cca65e2425029643088c4cb88674841b825842ecdda880891d8714343548dee1b297f5a83769b7f447bcb0fcee0bd5c170
 SHA512 
b36f19421b1aa112f54df0ceba55ca258d4d46ba404221cd641d68436aa199c16ee04c187b5edfd2aabd11cd97551c1e0253e7789cc616e9d88604fdc2153edc
 DIST plasma-desktop-5.27.9.tar.xz 14721128 BLAKE2B 
5332887ac65df280d8eaa6d834d844a49ba8d3aba38246564e19885aaed86135b95958b7914e69008c1ff1d5b85440a9d8998ca04740c82ddc1cf46399cb9f6f
 SHA512 
ae23ab2e8359345c5ffe3cd2ff8d3aa8e302be49f3686f5f24fd5905990fc2f05a45d69fcb9b3414eae9997b70e0d424b307bc7f02d189158cd7f9ba995c9ec9
 DIST plasma-desktop-override-include-dirs-2.tar.xz 8324 BLAKE2B 
5ddf9340edf6b6fa76e80158a982ac887b0fb464bc40d5bc4dcd3d6b8f5a87c2d6ecdd153e67e168454aa7faff8d84defb90ba16096b64f3af1e7a74570a00c6
 SHA512 
452923555bd419d3e389e808c4c9ea35e48795d4f0d78c5845aea677e21f594068540538a8968c2d4034aacb11e910a7b69908e10518eba486ebcc0dda39221a
+DIST plasma-desktop-override-include-dirs-3.tar.xz 8288 BLAKE2B 
f05ece81d1b744d45a21a5963750011c1e815156bcaac6075fa67451ba8ab1ea0fcc5ca59c8109c6fe65f9d4db6ac003bb7e26bf011e124c5f9b7f9e1b3afef5
 SHA512 
fbfc08a4c057dab3ef96e3c56d5e6087916e952ff32280c6e23c0822e18739441082894ea36412be04eda0893a4e10b9a0fbf0a10e0e44f046b6e872840c4dbb

diff --git 
a/kde-plasma/plasma-desktop/files/plasma-desktop-5.27.9-foldermodel-screen-add-remove-handling.patch
 
b/kde-plasma/plasma-desktop/files/plasma-desktop-5.27.9-foldermodel-screen-add-remove-handling.patch
new file mode 100644
index 000000000000..8d5ad98b40b7
--- /dev/null
+++ 
b/kde-plasma/plasma-desktop/files/plasma-desktop-5.27.9-foldermodel-screen-add-remove-handling.patch
@@ -0,0 +1,95 @@
+From a6bc63103ed128ffe0fd843eb3c4416ede835fde Mon Sep 17 00:00:00 2001
+From: Harald Sitter <[email protected]>
+Date: Mon, 6 Nov 2023 23:24:57 +0100
+Subject: [PATCH] foldermodel: lift screen add/remove handling out of
+ screenmapper
+
+screenmapper is the wrong place for it because we don't know the url
+inside the mapper. Instead handle events in the foldermodel and
+correctly delegate the add/remove actions to the mapper with both our
+screenId AND the activityId
+
+notably the previous code would incorrectly invoke addScreen with empty
+activityIds triggering fallback handling that resulted in incorrect
+m_screensPerPath management (there would be no screen associated with
+our url anymore after a screenAdded signal because our screen got
+associated with no url) and consequently firstAvailableScreen would
+return no screen for our url (remember: we are associated with no url)
+making FolderModel::filterAcceptsRow return false and filtering
+completely valid entries
+
+BUG: 467951
+
+possibly also is the root cause behind
+CCBUG: 467092
+---
+ containments/desktop/plugins/folder/foldermodel.cpp  | 12 +++++++++++-
+ containments/desktop/plugins/folder/screenmapper.cpp |  9 +--------
+ containments/desktop/plugins/folder/screenmapper.h   |  2 +-
+ 3 files changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/containments/desktop/plugins/folder/foldermodel.cpp 
b/containments/desktop/plugins/folder/foldermodel.cpp
+index 6a9f8da607..bcab0275e3 100644
+--- a/containments/desktop/plugins/folder/foldermodel.cpp
++++ b/containments/desktop/plugins/folder/foldermodel.cpp
+@@ -2024,7 +2024,17 @@ void FolderModel::setAppletInterface(QObject 
*appletInterface)
+                     Plasma::Corona *corona = containment->corona();
+ 
+                     if (corona) {
+-                        m_screenMapper->setCorona(corona, m_currentActivity);
++                        connect(corona, &Plasma::Corona::screenRemoved, this, 
[this](int screenId) {
++                            if (m_screen == screenId) {
++                                m_screenMapper->removeScreen(screenId, 
m_currentActivity, resolvedUrl());
++                            }
++                        });
++                        connect(corona, &Plasma::Corona::screenAdded, this, 
[this](int screenId) {
++                            if (m_screen == screenId) {
++                                m_screenMapper->addScreen(screenId, 
m_currentActivity, resolvedUrl());
++                            }
++                        });
++                        m_screenMapper->setCorona(corona);
+                     }
+                     setScreen(containment->screen());
+                     connect(containment, &Plasma::Containment::screenChanged, 
this, &FolderModel::setScreen);
+diff --git a/containments/desktop/plugins/folder/screenmapper.cpp 
b/containments/desktop/plugins/folder/screenmapper.cpp
+index 83e8a75276..fccea0e3fe 100644
+--- a/containments/desktop/plugins/folder/screenmapper.cpp
++++ b/containments/desktop/plugins/folder/screenmapper.cpp
+@@ -243,20 +243,13 @@ void ScreenMapper::cleanup()
+ }
+ #endif
+ 
+-void ScreenMapper::setCorona(Plasma::Corona *corona, const QString &activity)
++void ScreenMapper::setCorona(Plasma::Corona *corona)
+ {
+     if (m_corona != corona) {
+         Q_ASSERT(!m_corona);
+ 
+         m_corona = corona;
+         if (m_corona) {
+-            connect(m_corona, &Plasma::Corona::screenRemoved, this, [this, 
activity](int screenId) {
+-                removeScreen(screenId, activity, {});
+-            });
+-            connect(m_corona, &Plasma::Corona::screenAdded, this, [this, 
activity](int screenId) {
+-                addScreen(screenId, activity, {});
+-            });
+-
+             auto config = m_corona->config();
+             KConfigGroup group(config, QStringLiteral("ScreenMapping"));
+             const QStringList mapping = 
group.readEntry(QStringLiteral("screenMapping"), QStringList{});
+diff --git a/containments/desktop/plugins/folder/screenmapper.h 
b/containments/desktop/plugins/folder/screenmapper.h
+index 47b01e1c08..c22432b2e8 100644
+--- a/containments/desktop/plugins/folder/screenmapper.h
++++ b/containments/desktop/plugins/folder/screenmapper.h
+@@ -50,7 +50,7 @@ public:
+     int screenForItem(const QUrl &url, const QString &activity) const;
+     void addMapping(const QUrl &url, int screen, const QString &activity, 
MappingSignalBehavior behavior = ImmediateSignal);
+     void removeFromMap(const QUrl &url, const QString &activity);
+-    void setCorona(Plasma::Corona *corona, const QString &activity);
++    void setCorona(Plasma::Corona *corona);
+ 
+     void addScreen(int screenId, const QString &activity, const QUrl 
&screenUrl);
+     void removeScreen(int screenId, const QString &activity, const QUrl 
&screenUrl);
+-- 
+GitLab
+

diff --git a/kde-plasma/plasma-desktop/plasma-desktop-5.27.9-r1.ebuild 
b/kde-plasma/plasma-desktop/plasma-desktop-5.27.9-r1.ebuild
new file mode 100644
index 000000000000..a1c03e948e7d
--- /dev/null
+++ b/kde-plasma/plasma-desktop/plasma-desktop-5.27.9-r1.ebuild
@@ -0,0 +1,180 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="forceoptional"
+ECM_TEST="true"
+KFMIN=5.106.0
+PVCUT=$(ver_cut 1-3)
+QTMIN=5.15.9
+inherit ecm plasma.kde.org optfeature
+
+DESCRIPTION="KDE Plasma desktop"
+XORGHDRS="${PN}-override-include-dirs-3"
+SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/${XORGHDRS}.tar.xz";
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="ibus +kaccounts scim screencast +semantic-desktop"
+
+# kde-frameworks/kwindowsystem[X]: Uses KX11Extras
+COMMON_DEPEND="
+       dev-libs/wayland
+       >=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/qtwayland-${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/kpackage-${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[X]
+       >=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[screencast?]
+       >=media-libs/phonon-4.11.0
+       x11-libs/libX11
+       x11-libs/libXcursor
+       x11-libs/libXfixes
+       x11-libs/libXi
+       x11-libs/libxcb
+       x11-libs/libxkbcommon
+       x11-libs/libxkbfile
+       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
+       )
+       scim? ( app-i18n/scim )
+       semantic-desktop? ( >=kde-frameworks/baloo-${KFMIN}:5 )
+"
+DEPEND="${COMMON_DEPEND}
+       >=dev-libs/wayland-protocols-1.25
+       dev-libs/boost
+       x11-base/xorg-proto
+"
+RDEPEND="${COMMON_DEPEND}
+       !<kde-plasma/kdeplasma-addons-5.25.50
+       >=dev-qt/qtgraphicaleffects-${QTMIN}:5
+       >=dev-qt/qtquickcontrols2-${QTMIN}:5
+       >=dev-qt/qtwaylandscanner-${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
+       media-fonts/noto-emoji
+       sys-apps/util-linux
+       x11-apps/setxkbmap
+       x11-misc/xdg-user-dirs
+       kaccounts? ( net-libs/signon-oauth2 )
+       screencast? ( >=kde-plasma/kpipewire-${PVCUT}:5 )
+"
+BDEPEND="
+       dev-util/wayland-scanner
+       >=kde-frameworks/kcmutils-${KFMIN}:5
+       virtual/pkgconfig
+"
+
+PATCHES=(
+       "${WORKDIR}/${XORGHDRS}/${P}-override-include-dirs.patch" # downstream 
patch
+       "${FILESDIR}/${P}-foldermodel-screen-add-remove-handling.patch" # in 
5.27.10
+)
+
+src_prepare() {
+       ecm_src_prepare
+
+       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
+
+       # 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 ibus GLIB2)
+               $(cmake_use_find_package kaccounts AccountsQt5)
+               $(cmake_use_find_package kaccounts KAccounts)
+               $(cmake_use_find_package semantic-desktop KF5Baloo)
+       )
+
+       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