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.
This commit is contained in:
Marco Allegretti 2026-05-23 09:52:51 +02:00
parent d9943d2e7a
commit 02170250f1
2 changed files with 20 additions and 3 deletions

View file

@ -105,7 +105,7 @@ Item {
filterByScreen: true filterByScreen: true
filterHidden: false filterHidden: false
activity: activityInfo.currentActivity activity: activityInfo.currentActivity
groupMode: TaskManager.TasksModel.GroupApplications groupMode: TaskManager.TasksModel.GroupDisabled
} }
TaskManager.TasksModel { TaskManager.TasksModel {
@ -117,7 +117,7 @@ Item {
filterHidden: false filterHidden: false
virtualDesktop: virtualDesktopInfo.currentDesktop virtualDesktop: virtualDesktopInfo.currentDesktop
activity: activityInfo.currentActivity activity: activityInfo.currentActivity
groupMode: TaskManager.TasksModel.GroupApplications groupMode: TaskManager.TasksModel.GroupDisabled
sortMode: root.sortByName ? TaskManager.TasksModel.SortAlpha : TaskManager.TasksModel.SortLastActivated sortMode: root.sortByName ? TaskManager.TasksModel.SortAlpha : TaskManager.TasksModel.SortLastActivated
} }
@ -429,7 +429,6 @@ Item {
const action = root.dynamicTilingMoveToDesktopAction(desktopId, desktopIndex) const action = root.dynamicTilingMoveToDesktopAction(desktopId, desktopIndex)
if (action !== "") { if (action !== "") {
ShellSettings.Settings.requestDynamicTilingWindowAction(taskCard.windowId, action) ShellSettings.Settings.requestDynamicTilingWindowAction(taskCard.windowId, action)
return
} }
} }
tasksModel.requestVirtualDesktops(taskCard.modelIndex, [desktopId]) tasksModel.requestVirtualDesktops(taskCard.modelIndex, [desktopId])

View file

@ -11,6 +11,7 @@ effect_metadata="$repo_root/kwin/effects/shift-tile-preview/metadata.json"
effects_cmake="$repo_root/kwin/effects/CMakeLists.txt" effects_cmake="$repo_root/kwin/effects/CMakeLists.txt"
tiling_script="$repo_root/kwin/scripts/shift-tiling/contents/ui/main.qml" 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" 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" env_config="$repo_root/envmanager/config.h"
require_line() { 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: 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 }" 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" "targetKey = lastLeafKey(rootNode)"
reject_line "$tiling_script" "function lastLeafKey(node)" reject_line "$tiling_script" "function lastLeafKey(node)"
reject_line "$tiling_script" "win.output.name !== outputName" reject_line "$tiling_script" "win.output.name !== outputName"