From bf7d8618d2b76c76ff8d79fd54307cd4101cfd3b Mon Sep 17 00:00:00 2001 From: Chara Date: Sat, 22 Aug 2026 21:24:18 +0200 Subject: [PATCH] fix: require edit mode for separator changes --- tests/qs-bar-edit-lock-regression.sh | 25 +++++++++++++++++++++++++ versions/V1/BarSlot.qml | 2 ++ versions/V1/variants/V2/BarSlot.qml | 1 + 3 files changed, 28 insertions(+) create mode 100644 tests/qs-bar-edit-lock-regression.sh diff --git a/tests/qs-bar-edit-lock-regression.sh b/tests/qs-bar-edit-lock-regression.sh new file mode 100644 index 0000000..d75e5d6 --- /dev/null +++ b/tests/qs-bar-edit-lock-regression.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +V1_BAR="$REPO_ROOT/versions/V1/BarSlot.qml" +V2_BAR="$REPO_ROOT/versions/V1/variants/V2/BarSlot.qml" + +fail() { + printf 'FAIL: %s\n' "$*" >&2 + exit 1 +} + +assert_unlock_guard() { + local id="$1" file="$2" block + block="$(sed -n "/id: ${id}[[:space:]]*$/,+8p" "$file")" + [[ -n $block ]] || fail "missing MouseArea id: $id in $file" + grep -Fq 'enabled: barSlot.root.barUnlocked' <<<"$block" \ + || fail "$id can mutate separators while the bar is locked" +} + +assert_unlock_guard mkMa "$V1_BAR" +assert_unlock_guard bMa "$V1_BAR" +assert_unlock_guard sepMa "$V2_BAR" + +printf 'PASS: separator edit handles require unlock mode\n' diff --git a/versions/V1/BarSlot.qml b/versions/V1/BarSlot.qml index 6325815..ddf7e75 100644 --- a/versions/V1/BarSlot.qml +++ b/versions/V1/BarSlot.qml @@ -606,6 +606,7 @@ PanelWindow { MouseArea { id: mkMa anchors.fill: parent + enabled: barSlot.root.barUnlocked hoverEnabled: true cursorShape: Qt.PointingHandCursor onClicked: if (toggleGap) toggleGap(slot.index) @@ -976,6 +977,7 @@ PanelWindow { MouseArea { id: bMa anchors.fill: parent + enabled: barSlot.root.barUnlocked hoverEnabled: true cursorShape: Qt.PointingHandCursor onClicked: if (bm.toggleFn) bm.toggleFn() diff --git a/versions/V1/variants/V2/BarSlot.qml b/versions/V1/variants/V2/BarSlot.qml index bfaf2be..875f9b1 100644 --- a/versions/V1/variants/V2/BarSlot.qml +++ b/versions/V1/variants/V2/BarSlot.qml @@ -1745,6 +1745,7 @@ PanelWindow { MouseArea { id: sepMa anchors.fill: parent + enabled: barSlot.root.barUnlocked hoverEnabled: true cursorShape: Qt.PointingHandCursor onClicked: barSlot.root.toggleSep(slot.gid)