Per-skärm-inställningar med skärmväljare, kant-i-kant-marginaler
All checks were successful
check / check (push) Successful in 1m39s
All checks were successful
check / check (push) Successful in 1m39s
- outputs{} är nu generiska JSON-överridar: vilket configfält som helst
kan sättas per skärm och deep-mergas över den globala configen
(Config::for_output). Docka, autohide, dodge, beteende, hotspots och
CSS (scopat på window.o-<connector>) läser skärmens effektiva config.
- Settings har skärmväljare överst: klickbar förhandsgranskning av
skärmarna + deras barer, 'Alla skärmar' (standard) eller enskild
skärm. Bara ändrade fält sparas som override (json-diff);
återställ-knapp tar bort skärmens överridar. * = har egna.
- Marginaler: skuggutrymmet läggs inte längre på förankrade sidor så
0 = kant i kant; minusvärden tillåts (A ner till -64, B/C -256).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
29
src/menu.rs
29
src/menu.rs
@@ -123,24 +123,27 @@ fn toggle_pin(ctx: &Rc<Ctx>, connector: &str) {
|
||||
};
|
||||
{
|
||||
let mut cfg = ctx.cfg.borrow_mut();
|
||||
// skriv i output-egna pins om skärmen har egna, annars i de globala
|
||||
// skriv i skärmens pin-override om den har en, annars i de globala
|
||||
let has_own = cfg
|
||||
.outputs
|
||||
.get(connector)
|
||||
.map(|o| o.pins.is_some())
|
||||
.map(|o| o["pins"].is_array())
|
||||
.unwrap_or(false);
|
||||
let pins: &mut Vec<String> = if has_own {
|
||||
cfg.outputs
|
||||
.get_mut(connector)
|
||||
.and_then(|o| o.pins.as_mut())
|
||||
.expect("has_own kollades nyss")
|
||||
} else {
|
||||
&mut cfg.pins
|
||||
let mutate = |pins: &mut Vec<String>| {
|
||||
if pinned {
|
||||
pins.retain(|p| p.to_lowercase() != key);
|
||||
} else if !pins.iter().any(|p| p.to_lowercase() == key) {
|
||||
pins.push(key.clone());
|
||||
}
|
||||
};
|
||||
if pinned {
|
||||
pins.retain(|p| p.to_lowercase() != key);
|
||||
} else if !pins.iter().any(|p| p.to_lowercase() == key) {
|
||||
pins.push(key.clone());
|
||||
if has_own {
|
||||
let over = cfg.outputs.get_mut(connector).expect("has_own kollades nyss");
|
||||
let mut pins: Vec<String> =
|
||||
serde_json::from_value(over["pins"].clone()).unwrap_or_default();
|
||||
mutate(&mut pins);
|
||||
over["pins"] = serde_json::to_value(pins).expect("strängar serialiserbara");
|
||||
} else {
|
||||
mutate(&mut cfg.pins);
|
||||
}
|
||||
if let Err(e) = config::save(&ctx.cfg_path, &cfg) {
|
||||
warn!("kunde inte spara config: {e}");
|
||||
|
||||
Reference in New Issue
Block a user