Webcam menu gates on the app-wide identity (TASK 26)

This commit is contained in:
2026-08-24 08:56:17 -07:00
parent d774799138
commit ef710c5537
6 changed files with 163 additions and 49 deletions
+5 -5
View File
@@ -313,11 +313,11 @@ This replaces the old five-seeder cluster (`Seed{Starting,Brb,Ending,Chat}Backgr
while another scene still used it; that identity survived, so re-adding bypassed the choice).
Picking a different camera than the current app-wide one swaps it everywhere via
`SwapWebcamIdentityAsync` (the same path "Change Webcam…" uses), keeping the singleton honest;
picking the same one just places the config. The Add Webcam menu greys out when the **active**
scene already has a config (`CanAddWebcamToActiveScene`); showing a hidden webcam reuses the
existing config (`CanShowWebcamInActiveScene` / empty-canvas right-click "Show Webcam" — which, on
a config-less canvas, delegates to Add Webcam and so also picks). **Removing the last webcam
config anywhere clears the identity** (`_webcam = null`), which also drops "Change Webcam…".
picking the same one just places the config. The Add Webcam menu item greys out whenever a webcam
exists **anywhere** — one camera identity app-wide (`CanAddWebcam` = `StagedScene != null && _webcam == null`,
TASK 26; the old per-staged-scene gate let a second picker run from a scene that lacked the config).
**Removing the last webcam config anywhere clears the identity** (`_webcam = null`, raising
`CanAddWebcam`/`CanChangeWebcam`), which also drops "Change Webcam…" and re-enables Add.
- **Round→rect restores the aspect (persisted, schema v4):** `SceneElement.ToggleClipShape()`
snapshots the rectangular Width/Height into public `RectWidth`/`RectHeight` before going Round and
restores them when switching back — otherwise the Round resize lock (square) would leave a square