mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-02 04:37:49 +02:00
Fix theme switcher preload scrim race
This commit is contained in:
@@ -110,7 +110,7 @@ Item {
|
||||
|
||||
Process {
|
||||
id: themeSwitchProc
|
||||
command: ["bash", "-lc", "theme=$(omarchy-theme-switcher); [[ -n $theme ]] && omarchy-theme-set \"$theme\""]
|
||||
command: ["bash", "-lc", "theme=$(omarchy-theme-switcher); [[ -n $theme ]] && omarchy-theme-set \"$theme\" >/dev/null 2>&1 &"]
|
||||
onExited: root.refreshBackground()
|
||||
}
|
||||
|
||||
|
||||
@@ -324,6 +324,12 @@ Item {
|
||||
}
|
||||
|
||||
function preloadRows(nextImageRows, nextSelectedImage, nextShowLabels, nextFilterable) {
|
||||
// Theme/background set hooks can warm selector rows after a picker was
|
||||
// dismissed. Ignore those preloads while a user-visible request is open;
|
||||
// otherwise the preload resets layoutSettled without revealing again,
|
||||
// leaving only the fullscreen scrim.
|
||||
if (opened || requestActive) return
|
||||
|
||||
requestSerial += 1
|
||||
imageRows = nextImageRows
|
||||
selectedImage = nextSelectedImage
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
source "$(dirname "$0")/base-test.sh"
|
||||
|
||||
run_node_test <<'JS'
|
||||
const fs = require('fs')
|
||||
|
||||
const backgroundQml = fs.readFileSync(path.join(root, 'shell/plugins/background/Background.qml'), 'utf8')
|
||||
|
||||
assert(
|
||||
/theme=\$\(omarchy-theme-switcher\); \[\[ -n \$theme \]\] && omarchy-theme-set \\"\$theme\\" >\/dev\/null 2>&1 &/.test(backgroundQml),
|
||||
'background theme switcher starts theme application asynchronously after selection'
|
||||
)
|
||||
JS
|
||||
@@ -5,6 +5,7 @@ set -euo pipefail
|
||||
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
||||
|
||||
run_node_test <<'JS'
|
||||
const fs = require('fs')
|
||||
const picker = requireFromRoot('shell/plugins/image-picker/ImagePickerModel.js')
|
||||
|
||||
assertEqual(picker.nameForPath('/themes/nord-river.png'), 'nord-river', 'image picker strips directory and extension')
|
||||
@@ -40,4 +41,10 @@ assertEqual(picker.indexForSelectedImage(images, '/missing.png'), 0, 'image pick
|
||||
assertEqual(picker.filteredPosition(images, 2, 'dark'), 1, 'image picker computes filtered position')
|
||||
assertEqual(picker.selectedFilteredPosition(images, 2, 'dark'), 0, 'image picker selected filtered position falls back when selected is hidden')
|
||||
assertEqual(picker.nextSelectedIndexForFilter(images, 0, 'dark'), 1, 'image picker moves selection to first match when filter hides current item')
|
||||
|
||||
const imagePickerQml = fs.readFileSync(path.join(root, 'shell/plugins/image-picker/ImagePicker.qml'), 'utf8')
|
||||
assert(
|
||||
/function preloadRows[\s\S]*if \(opened \|\| requestActive\) return/.test(imagePickerQml),
|
||||
'image picker ignores cache preloads while a request is visible'
|
||||
)
|
||||
JS
|
||||
|
||||
Reference in New Issue
Block a user