dragon-iso/src
Zac Gaetano cc29c503a9
Some checks failed
CI / build-and-test (push) Failing after 28s
Phase E.4 experimental: SetParent-embed Teams window inside TeamsISO
Reparents Teams' main top-level window into a TeamsISO-owned host via Win32 SetParent + window-style stripping. Operator gets Teams visually INSIDE TeamsISO instead of as a separate window — completes the 'Teams runs within this app' direction the user asked for after auto-hide.

Strictly opt-in (DISPLAY tab → 'Embed Teams window (experimental)'). Modern Teams runs WebView2 in its main window; WebView2 is sensitive to parent changes and may render glitches or refuse focus. If so, operator unticks and falls back to auto-hide mode.

Implementation:

- TeamsLauncher.EmbedTeamsInto(hostHwnd, w, h): finds Teams' main window (longest-title heuristic — same as GetActiveWindowTitle), saves original parent + WS_STYLE, SetParents into host, strips WS_CAPTION + WS_THICKFRAME + WS_BORDER + WS_DLGFRAME + WS_POPUP, adds WS_CHILD, MoveWindow to fit.

- TeamsLauncher.RestoreEmbed(): SetParent back to desktop + restore saved window styles. Idempotent — safe to call on shutdown even if nothing was embedded.

- TeamsLauncher.ResizeEmbedded(w, h): MoveWindow to new dimensions; called from host SizeChanged event.

- New TeamsEmbedWindow chromeless host with an EXPERIMENTAL pill in the caption. Loaded → grab HwndSource from EmbedHost Border → call EmbedTeamsInto. SizeChanged → ResizeEmbedded. Closed → RestoreEmbed (in try/finally so a crash can't leave Teams orphaned). Friendly fallback messages if no Teams window exists or HWND grab fails.

- Settings → DISPLAY → checkbox + 'Open embed window' button (gated by the checkbox). Persisted via EmbedTeamsWindow on UIPreferences.
2026-05-10 21:14:42 -04:00
..
TeamsISO.App Phase E.4 experimental: SetParent-embed Teams window inside TeamsISO 2026-05-10 21:14:42 -04:00
TeamsISO.Console feat(engine+console): SMPTE test-pattern generator + --test-pattern flag 2026-05-10 09:41:33 -04:00
TeamsISO.Engine Investigate MF activation — Vortice 3.6.2 API mismatch, defer port 2026-05-10 20:39:23 -04:00
TeamsISO.Engine.NdiInterop Wire engine audio peak metering — UI VU bars now animate 2026-05-10 13:28:26 -04:00
tests IN-CALL pill shows meeting title from Teams' window text 2026-05-10 20:47:43 -04:00
.gitkeep chore: add empty TeamsISO solution 2026-05-07 15:07:58 +00:00