Background
Prototype confirmed: QRhiWidget (GPU-accelerated spectrum/waterfall) survives Qt widget reparenting into a floating top-level window. All rendering, signal connections, VFO overlays, and VITA-49 stream routing continue working after pop-out.
This builds on PR #916 (poppable applets by @chibondking) which established the FloatingAppletWindow pattern.
Feature
Right-click a panadapter title bar → "Pop out" detaches it into its own floating window. "Dock" returns it to the PanadapterStack splitter. Multi-monitor operators can put each pan on a different screen.
Implementation
Follow the FloatingAppletWindow pattern from #916:
- Add
popOutRequested(panId) and dockRequested(panId) signals to PanadapterApplet
- Right-click context menu on pan title bar (Pop out / Dock)
- On pop-out: reparent PanadapterApplet to a FloatingAppletWindow (or dedicated FloatingPanWindow)
- On dock: reparent back into PanadapterStack's QSplitter
- Persist float state + geometry per-pan via AppSettings
- Auto-dock on pan removal (layout change, disconnect)
Proven by prototype
- QRhiWidget GPU rendering works in floating window ✓
- VFO overlays render correctly ✓
- FFT spectrum + waterfall both functional ✓
- Signal connections survive reparent ✓
- Overlay menu accessible ✓
Considerations
- Dock path needs to re-insert into the QSplitter at the correct position
- Layout changes (2v→2h, etc.) should auto-dock all floating pans first
- PanadapterStack::count() should still count floating pans
- Active pan tracking should work across floating/docked states
Background
Prototype confirmed: QRhiWidget (GPU-accelerated spectrum/waterfall) survives Qt widget reparenting into a floating top-level window. All rendering, signal connections, VFO overlays, and VITA-49 stream routing continue working after pop-out.
This builds on PR #916 (poppable applets by @chibondking) which established the FloatingAppletWindow pattern.
Feature
Right-click a panadapter title bar → "Pop out" detaches it into its own floating window. "Dock" returns it to the PanadapterStack splitter. Multi-monitor operators can put each pan on a different screen.
Implementation
Follow the FloatingAppletWindow pattern from #916:
popOutRequested(panId)anddockRequested(panId)signals to PanadapterAppletProven by prototype
Considerations