From 02170250f14239e4e9b1a67c60afb0221e316ace Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Sat, 23 May 2026 09:52:51 +0200 Subject: [PATCH] Ungroup Running panel windows Show each running window as its own card in the Folio Running panel, including duplicate apps. When a card is dropped on another desktop, still call requestVirtualDesktops() after notifying dynamic tiling so the move actually completes. Add a guard to keep both behaviors from regressing. --- .../homescreens/folio/qml/RunningAppsPanel.qml | 5 ++--- tests/check-dynamic-tiles-motion.sh | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/containments/homescreens/folio/qml/RunningAppsPanel.qml b/containments/homescreens/folio/qml/RunningAppsPanel.qml index 2540d913..c1fbaaca 100644 --- a/containments/homescreens/folio/qml/RunningAppsPanel.qml +++ b/containments/homescreens/folio/qml/RunningAppsPanel.qml @@ -105,7 +105,7 @@ Item { filterByScreen: true filterHidden: false activity: activityInfo.currentActivity - groupMode: TaskManager.TasksModel.GroupApplications + groupMode: TaskManager.TasksModel.GroupDisabled } TaskManager.TasksModel { @@ -117,7 +117,7 @@ Item { filterHidden: false virtualDesktop: virtualDesktopInfo.currentDesktop activity: activityInfo.currentActivity - groupMode: TaskManager.TasksModel.GroupApplications + groupMode: TaskManager.TasksModel.GroupDisabled sortMode: root.sortByName ? TaskManager.TasksModel.SortAlpha : TaskManager.TasksModel.SortLastActivated } @@ -429,7 +429,6 @@ Item { const action = root.dynamicTilingMoveToDesktopAction(desktopId, desktopIndex) if (action !== "") { ShellSettings.Settings.requestDynamicTilingWindowAction(taskCard.windowId, action) - return } } tasksModel.requestVirtualDesktops(taskCard.modelIndex, [desktopId]) diff --git a/tests/check-dynamic-tiles-motion.sh b/tests/check-dynamic-tiles-motion.sh index 6bacd273..e47c451b 100644 --- a/tests/check-dynamic-tiles-motion.sh +++ b/tests/check-dynamic-tiles-motion.sh @@ -11,6 +11,7 @@ effect_metadata="$repo_root/kwin/effects/shift-tile-preview/metadata.json" effects_cmake="$repo_root/kwin/effects/CMakeLists.txt" tiling_script="$repo_root/kwin/scripts/shift-tiling/contents/ui/main.qml" decoration_qml="$repo_root/kwin/decorations/org.shift.decoration/contents/ui/main.qml" +running_apps_panel="$repo_root/containments/homescreens/folio/qml/RunningAppsPanel.qml" env_config="$repo_root/envmanager/config.h" require_line() { @@ -125,6 +126,23 @@ require_line "$decoration_qml" "borders.bottom = normalCornerRadius;" require_line "$decoration_qml" "PathArc { x: root.width - root.cornerRadius; y: root.height; radiusX: root.cornerRadius; radiusY: root.cornerRadius }" require_line "$decoration_qml" "PathArc { x: 0; y: root.height - root.cornerRadius; radiusX: root.cornerRadius; radiusY: root.cornerRadius }" +running_panel_group_disabled_count="$(grep -F "groupMode: TaskManager.TasksModel.GroupDisabled" "$running_apps_panel" | wc -l)" +if [[ "$running_panel_group_disabled_count" -ne 2 ]]; then + echo "Expected the Folio Running panel to disable grouping for both task models; found $running_panel_group_disabled_count" >&2 + exit 1 +fi +reject_line "$running_apps_panel" "groupMode: TaskManager.TasksModel.GroupApplications" + +if awk ' + /ShellSettings\.Settings\.requestDynamicTilingWindowAction\(taskCard\.windowId, action\)/ { seen = 1; next } + seen && /return/ { exit 0 } + seen && /tasksModel\.requestVirtualDesktops\(taskCard\.modelIndex, \[desktopId\]\)/ { exit 1 } + END { exit 1 } +' "$running_apps_panel"; then + echo "Expected the Folio Running panel desktop drop to fall through to TaskManager after notifying dynamic tiling" >&2 + exit 1 +fi + reject_line "$tiling_script" "targetKey = lastLeafKey(rootNode)" reject_line "$tiling_script" "function lastLeafKey(node)" reject_line "$tiling_script" "win.output.name !== outputName"