Web source: crop capture to actual content bounds (anchor 0,0); slider click-to-position; web URI X clears; tab order
This commit is contained in:
@@ -917,17 +917,22 @@ capturing the primary display (which causes the infinity mirror effect).
|
||||
8. ✅ Preview shows live web content (not just a blank rectangle)
|
||||
9. ☐ Handle navigation errors, invalid URIs, timeout gracefully
|
||||
|
||||
**Rendering model (2026-08-28, stable-viewport + fill — the working invariant):**
|
||||
**Rendering model (2026-08-28, stable viewport + content-bounds crop):**
|
||||
the page renders ONCE at the size the element was created at (snapshot in `Register`, never
|
||||
tracked) — so dragging the box never reflows the page, never truncates it, and scrollbars are
|
||||
suppressed (`overflow:hidden` on html/body injection; background-transparent only otherwise,
|
||||
no layout meddling). The captured texture is displayed with `Stretch="Fill"`, so any box the
|
||||
user draws is covered edge-to-edge with zero dead space (OBS free-transform behavior:
|
||||
browser renders at a fixed resolution, the scene-item scales the texture). The invariants:
|
||||
the page viewport is stable; the display Fill-scales it to the box. Graceful-error handling
|
||||
(item 9) is a follow-up. Attempts rejected for the record: fixed 1920×1080 + `Uniform`
|
||||
(letterbox dead space), CSS margin/100% reset (enlarged the gap), viewport==box (page reflow
|
||||
→ truncation/scrollbars/jank).
|
||||
tracked) — dragging the box never reflows the page; scrollbars suppressed via
|
||||
`overflow:hidden` html/body injection (background-transparent only otherwise). After each
|
||||
navigation the manager queries the page's real content rect (`scrollWidth/scrollHeight` vs
|
||||
`innerWidth/innerHeight`) and **crops the capture to the actual content bounds, anchored at
|
||||
(0,0)** — widgets that don't fill their viewport no longer stretch dead space across the box.
|
||||
`Stretch="Fill"` maps the cropped frame edge-to-edge (box is covered; the fill/adornment rect
|
||||
snaps to it). Graceful-error handling (item 9) is a follow-up. Rejected for the record:
|
||||
fixed-viewport 1920×1080 + `Uniform` (letterbox), CSS margin/100% reset (enlarged gaps),
|
||||
viewport==box (page reflow → truncation/scrollbars).
|
||||
|
||||
**Properties panel (2026-08-28):** web URI ✓/✕ icon buttons are `IsTabStop="False"` so Tab flows
|
||||
X→Y→W→H→URI; the ✕ button now clears the URI textbox (was reverting to the pre-accept snapshot).
|
||||
Slider style gained `IsMoveToPointEnabled="True"` — click-anywhere-on-bar jumps the thumb to the
|
||||
click (volume sliders keep their manual `SetSliderValueFromClick`, harmless duplication).
|
||||
|
||||
### Design decisions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user