CardMenu's pair-hover check read the popup's HoverHandler, which lives on the background and never fires over a row: the rows' MouseAreas take the hover events, so the panel only counted as hovered on its 5px padding. Crossing from that padding into the child's first row read as "left both menus" and the 350 ms leave timer closed the pair — the Copy submenu closed the whole context menu as soon as it was entered. A menu is now hovered while its panel OR one of its rows is (one hot row at a time, held by reference so a destroyed row cannot leave it stuck), and the pair check reads that on both menus. scripts/test-card-menu-qml.sh drives the pointer through the parent row, the child's rows, back to a plain row and out, and joins the runtime gate and CI. cc
34 lines
1.5 KiB
Bash
34 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
# Shared Linux CI/local runtime gate. Serial builds, no personal profile.
|
|
set -euo pipefail
|
|
cd "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/.."
|
|
export QBZ_PREBUILT_SHADERS=1
|
|
bash scripts/test-search-local-qml.sh
|
|
bash scripts/test-updates-qml.sh
|
|
bash scripts/test-playback-cache-qml.sh
|
|
bash scripts/test-text-edit-menu-qml.sh
|
|
bash scripts/test-compact-seek-qml.sh
|
|
bash scripts/test-library-folders-qml.sh
|
|
bash scripts/test-array-model-qml.sh
|
|
bash scripts/test-card-menu-qml.sh
|
|
bash scripts/test-orbit-qml.sh
|
|
node scripts/test_qt_local_views.mjs
|
|
node scripts/test_qt_library.mjs
|
|
node scripts/test_qt_purchases_navigation.mjs
|
|
node scripts/test_qt_kiosk_art.mjs
|
|
node scripts/test_qt_kiosk_navigation.mjs
|
|
node scripts/test_qt_kiosk_feedback.mjs
|
|
node scripts/test_qt_exclusive_gate.mjs
|
|
python3 scripts/qt-cargo.py test --manifest-path crates/Cargo.toml -p qbz-qt --no-fail-fast
|
|
target_dir="${CARGO_TARGET_DIR:-$PWD/crates/target}"
|
|
logs="$(mktemp -d "${TMPDIR:-/tmp}/qbz-qt-gate-XXXXXX")"
|
|
printf '[qt-gate] startup logs: %s\n' "$logs"
|
|
for profile in debug release; do
|
|
args=()
|
|
[[ "$profile" == release ]] && args=(--release)
|
|
python3 scripts/qt-cargo.py build "${args[@]}" --manifest-path crates/Cargo.toml -p qbz-qt
|
|
python3 scripts/qt-smoke.py "$target_dir/$profile/qbz" --log "$logs/$profile.log"
|
|
done
|
|
# A healthy offscreen bus cannot expose Qt's synchronous xcb D-Bus startup.
|
|
python3 scripts/qt-smoke.py "$target_dir/release/qbz" --silent-bus --log "$logs/release-silent-bus.log"
|