Fixa omladdningsloopen + churn; CI/släpp flyttat till x64-byggnoden
Some checks failed
check / check (push) Failing after 1m4s
Some checks failed
check / check (push) Failing after 1m4s
- KRITISKT: notify-watchern reagerade på Access-events, så vår egen läsning av configen triggade ny omladdning i all oändlighet (var 155:e ms). Panelen revs och byggdes om konstant → blinkande hover, klick som aldrig landade. Nu filtreras eventen till riktiga skrivningar (Modify/Create/Remove/Close-Write). - Titeländringar (webbläsare/terminaler) bygger inte längre om UI:t; tooltips slås i stället upp färskt vid hover (query-tooltip), och klick/skroll/menyer agerar på färskt fönster-state vid eventtillfället. - hotspots::rebuild är idempotent (skippar om config+skärmar oförändrade). - Settings: markup-escape i rubriker (Kant & skugga-varningen). - CI: check + release körs på byggnoden brasse-linux01 (runs-on linux-amd64) — waydock byggs BARA för x86_64, aldrig på Pi5:ns arm-runner. Ny release.yaml: vX.Y.Z-tagg bygger x64-binären och laddar upp till Gitea-släppsidan + rullande latest. release.sh är nu bara tagga-och-pusha. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -101,8 +101,24 @@ fn build_hotspot(
|
||||
win
|
||||
}
|
||||
|
||||
thread_local! {
|
||||
static LAST_SIGNATURE: std::cell::RefCell<String> =
|
||||
const { std::cell::RefCell::new(String::new()) };
|
||||
}
|
||||
|
||||
/// Bygg om alla hotspot-ytor enligt configen (körs vid start + configbyte).
|
||||
/// Idempotent: oförändrad hotspot-config + skärmuppsättning → ingen ombyggnad.
|
||||
pub fn rebuild(ctx: &Rc<Ctx>) {
|
||||
let n_monitors = gdk::Display::default()
|
||||
.map(|d| d.monitors().n_items())
|
||||
.unwrap_or(0);
|
||||
let signature = format!("{:?}|{n_monitors}", ctx.cfg.borrow().hotspots);
|
||||
let unchanged = LAST_SIGNATURE.with(|s| *s.borrow() == signature);
|
||||
if unchanged {
|
||||
return;
|
||||
}
|
||||
LAST_SIGNATURE.with(|s| *s.borrow_mut() = signature);
|
||||
|
||||
for win in ctx.hotspot_windows.borrow_mut().drain(..) {
|
||||
win.destroy();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user