Review everything shipped this weekend, and fix what the reviewers caught

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-24 13:29:42 -04:00
parent ffce48964e
commit 07db1068f1
42 changed files with 959 additions and 219 deletions
@@ -12,6 +12,7 @@
// mirroring, rather than drawing it wherever its stale coordinates point.
import QtQuick
import Quickshell
import qs.config
import qs.widgets
import "../../services/DisplayLayout.js" as DisplayLayout
@@ -198,7 +199,20 @@ Item {
}
Repeater {
model: root.tiles
// Keyed on the output name rather than fed the array directly.
// Every drag step and every arrow key rewrites draftLayout,
// which rebuilds `tiles` into a fresh array of fresh objects --
// a new model, which resets the Repeater and destroys the tile
// being dragged on its first millimetre of travel. The drag
// ended there, silently, and nothing was ever applied; the
// arrow keys lost focus after a single step for the same
// reason. Keyed, the same rebuild is "this row moved", and the
// tile under the pointer keeps its handler and its focus.
model: ScriptModel {
values: root.tiles
objectProp: "name"
comparisonMode: ObjectComparison.Structure
}
Rectangle {
id: tile