kde-plasma/plasma-desktop: When adding files, keep the current sorting

KDE-bug: https://bugs.kde.org/show_bug.cgi?id=482470

Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
This commit is contained in:
Andreas Sturmlechner
2025-05-15 09:21:30 +02:00
parent 3e185d4d87
commit 48d9507f8f
2 changed files with 250 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
From f1a9052dff63938fd96890c7f88c6aa508e5f9a6 Mon Sep 17 00:00:00 2001
From: Akseli Lahtinen <akselmo@akselmo.dev>
Date: Fri, 9 May 2025 12:03:52 +0300
Subject: [PATCH] FolderModel: When adding files, keep the current sorting
The sort mode got changed to unsorted if any file was added.
This was probably due to the infinite while loop that would happen
later when we're looking for a new blank spot from an index
that does not exist: This would return an empty QVariant that is
false by default.
We need to check if the index is valid. If it's not, we know
it's a new index and can create one, so it is a blank spot.
BUG: 482470
FIXED-IN: 6.3.6
(cherry picked from commit 03ef2343212bbc4be274b1b37788186df03a8cb3)
10260acb FolderModel: When adding files, keep the current sorting
e64705c8 Fix comment, combine ifs
Co-authored-by: Akseli Lahtinen <akselmo@akselmo.dev>
---
containments/desktop/plugins/folder/foldermodel.cpp | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/containments/desktop/plugins/folder/foldermodel.cpp b/containments/desktop/plugins/folder/foldermodel.cpp
index 1c79a3de3c..ce170e00bb 100644
--- a/containments/desktop/plugins/folder/foldermodel.cpp
+++ b/containments/desktop/plugins/folder/foldermodel.cpp
@@ -199,13 +199,6 @@ FolderModel::FolderModel(QObject *parent)
m_dirModel->setDropsAllowed(KDirModel::DropOnDirectory | KDirModel::DropOnLocalExecutable);
m_dirModel->dirLister()->setAutoUpdate(true);
- // If we have dropped items queued for moving, go unsorted now.
- connect(this, &QAbstractItemModel::rowsAboutToBeInserted, this, [this]() {
- if (!m_dropTargetPositions.isEmpty()) {
- setSortMode(-1);
- }
- });
-
/*
* Dropped files may not actually show up as new files, e.g. when we overwrite
* an existing file. Or files that fail to be listed by the dirLister, or...
@@ -1405,7 +1398,10 @@ void FolderModel::changeSelection(const QItemSelection &selected, const QItemSel
bool FolderModel::isBlank(int row) const
{
- if (row < 0) {
+ // Invalid indexes are blank, since they're not created yet
+ // and will be created when needed.
+ const auto idx = index(row, 0);
+ if (row < 0 || !idx.isValid()) {
return true;
}
--
GitLab

View File

@@ -0,0 +1,189 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ECM_HANDBOOK="optional"
ECM_TEST="true"
KFMIN=6.10.0
QTMIN=6.8.1
inherit ecm plasma.kde.org optfeature xdg
DESCRIPTION="KDE Plasma desktop"
XORGHDRS="${PN}-override-include-dirs-4"
SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/${XORGHDRS}.tar.xz"
LICENSE="GPL-2" # TODO: CHECK
SLOT="6"
KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~riscv ~x86"
IUSE="ibus input_devices_wacom scim screencast sdl +semantic-desktop webengine"
RESTRICT="test" # missing selenium-webdriver-at-spi
# slot op: Uses Qt6::GuiPrivate for qtx11extras_p.h
# kde-frameworks/kwindowsystem[X]: Uses KX11Extras
COMMON_DEPEND="
dev-libs/icu:=
>=dev-qt/qt5compat-${QTMIN}:6[qml]
>=dev-qt/qtbase-${QTMIN}:6=[concurrent,dbus,gui,network,sql,widgets,xml]
>=dev-qt/qtdeclarative-${QTMIN}:6
>=dev-qt/qtsvg-${QTMIN}:6
>=kde-frameworks/attica-${KFMIN}:6
>=kde-frameworks/karchive-${KFMIN}:6
>=kde-frameworks/kauth-${KFMIN}:6
>=kde-frameworks/kbookmarks-${KFMIN}:6
>=kde-frameworks/kcmutils-${KFMIN}:6
>=kde-frameworks/kcodecs-${KFMIN}:6
>=kde-frameworks/kcompletion-${KFMIN}:6
>=kde-frameworks/kconfig-${KFMIN}:6
>=kde-frameworks/kconfigwidgets-${KFMIN}:6
>=kde-frameworks/kcoreaddons-${KFMIN}:6
>=kde-frameworks/kcrash-${KFMIN}:6
>=kde-frameworks/kdbusaddons-${KFMIN}:6
>=kde-frameworks/kded-${KFMIN}:6
>=kde-frameworks/kglobalaccel-${KFMIN}:6
>=kde-frameworks/kguiaddons-${KFMIN}:6
>=kde-frameworks/ki18n-${KFMIN}:6
>=kde-frameworks/kiconthemes-${KFMIN}:6
>=kde-frameworks/kio-${KFMIN}:6
>=kde-frameworks/kitemmodels-${KFMIN}:6
>=kde-frameworks/kitemviews-${KFMIN}:6
>=kde-frameworks/kjobwidgets-${KFMIN}:6
>=kde-frameworks/knewstuff-${KFMIN}:6
>=kde-frameworks/knotifications-${KFMIN}:6
>=kde-frameworks/knotifyconfig-${KFMIN}:6
>=kde-frameworks/kpackage-${KFMIN}:6
>=kde-frameworks/kparts-${KFMIN}:6
>=kde-frameworks/krunner-${KFMIN}:6
>=kde-frameworks/kservice-${KFMIN}:6
>=kde-frameworks/ksvg-${KFMIN}:6
>=kde-frameworks/kwidgetsaddons-${KFMIN}:6
>=kde-frameworks/kwindowsystem-${KFMIN}:6[X]
>=kde-frameworks/kxmlgui-${KFMIN}:6
>=kde-frameworks/solid-${KFMIN}:6
>=kde-frameworks/sonnet-${KFMIN}:6
>=kde-plasma/kwin-${KDE_CATV}:6
>=kde-plasma/libksysguard-${KDE_CATV}:6
>=kde-plasma/libplasma-${KDE_CATV}:6
>=kde-plasma/plasma-activities-${KDE_CATV}:6
>=kde-plasma/plasma-activities-stats-${KDE_CATV}:6
>=kde-plasma/plasma-workspace-${KDE_CATV}:6[screencast?]
>=kde-plasma/plasma5support-${KDE_CATV}:6
media-libs/libcanberra
x11-libs/libX11
x11-libs/libxcb
x11-libs/libXcursor
x11-libs/libXi
x11-libs/libxkbcommon
x11-libs/libxkbfile
ibus? (
app-i18n/ibus
dev-libs/glib:2
x11-libs/xcb-util-keysyms
)
input_devices_wacom? (
dev-libs/wayland
dev-libs/libwacom:=
>=dev-qt/qtwayland-${QTMIN}:6
)
scim? ( app-i18n/scim )
sdl? ( media-libs/libsdl2[joystick] )
semantic-desktop? ( >=kde-frameworks/baloo-${KFMIN}:6 )
webengine? (
kde-apps/kaccounts-integration:6
>=net-libs/accounts-qt-1.17[qt6(+)]
)
"
DEPEND="${COMMON_DEPEND}
dev-libs/boost
x11-base/xorg-proto
input_devices_wacom? ( >=dev-libs/wayland-protocols-1.25 )
test? (
>=kde-frameworks/qqc2-desktop-style-${KFMIN}:6
>=kde-plasma/kactivitymanagerd-${KDE_CATV}:6
)
"
RDEPEND="${COMMON_DEPEND}
!<kde-plasma/plasma-workspace-6.0.80
dev-libs/kirigami-addons:6
>=dev-qt/qtwayland-${QTMIN}:6
>=kde-frameworks/kirigami-${KFMIN}:6
>=kde-frameworks/qqc2-desktop-style-${KFMIN}:6
>=kde-plasma/oxygen-${KDE_CATV}:6
>=kde-plasma/plasma-mimeapps-list-3
media-fonts/noto-emoji
sys-apps/util-linux
x11-apps/setxkbmap
x11-misc/xdg-user-dirs
screencast? ( >=kde-plasma/kpipewire-${KDE_CATV}:6 )
webengine? ( >=net-libs/signon-oauth2-0.25_p20210102[qt6(+)] )
"
BDEPEND="
dev-util/intltool
>=kde-frameworks/kcmutils-${KFMIN}:6
virtual/pkgconfig
input_devices_wacom? ( dev-util/wayland-scanner )
"
PATCHES=(
"${FILESDIR}/${PN}-6.1.80-override-include-dirs.patch" # downstream patch
"${FILESDIR}/${P}-keep-sorting-when-adding-files.patch"
)
src_prepare() {
ecm_src_prepare
if ! use ibus; then
sed -e "s/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=(
-DBUILD_KCM_MOUSE_X11=ON
-DBUILD_KCM_TOUCHPAD_X11=ON
-DXORGLIBINPUT_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
-DXORGSERVER_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
-DCMAKE_DISABLE_FIND_PACKAGE_PackageKitQt6=ON # not packaged
$(cmake_use_find_package ibus GLIB2)
-DBUILD_KCM_TABLET=$(usex input_devices_wacom)
$(cmake_use_find_package sdl SDL2)
$(cmake_use_find_package semantic-desktop KF6Baloo)
$(cmake_use_find_package webengine AccountsQt6)
$(cmake_use_find_package webengine KAccounts6)
)
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
}
src_install() {
cmake_src_install
# Provide kde-mimeapps.list with distribution kde-plasma/plasma-mimeapps-list
rm "${ED}"/usr/share/applications/kde-mimeapps.list || die
}
pkg_postinst() {
if [[ -z "${REPLACING_VERSIONS}" ]]; then
optfeature "screen reader support" "app-accessibility/orca"
fi
xdg_pkg_postinst
}