Skip to content

Poppable panadapters — float/dock spectrum windows #920

Description

@ten9876

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:

  1. Add popOutRequested(panId) and dockRequested(panId) signals to PanadapterApplet
  2. Right-click context menu on pan title bar (Pop out / Dock)
  3. On pop-out: reparent PanadapterApplet to a FloatingAppletWindow (or dedicated FloatingPanWindow)
  4. On dock: reparent back into PanadapterStack's QSplitter
  5. Persist float state + geometry per-pan via AppSettings
  6. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    GUIUser interfaceawaiting-confirmationFix applied — waiting for reporter to confirm resolutionawaiting-responseWaiting for reporter to provide additional informationenhancementImprovement to existing featuremulti-panMulti-panadapter layout and slicing

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions