feat(cwx): add right-click context menu to CWX history bubbles#2752
Conversation
Right-clicking any CwxBubble in the CWX history scroll area now shows
a context menu with two actions:
Resend — re-queues the bubble's text via CwxModel::send(),
creating a new history entry with a fresh timestamp.
Clear History — removes all bubble widgets from the history layout,
leaving the stretch spacer intact.
Implementation notes:
- CwxBubble gains a text() accessor; CwxPanel::eventFilter() is
extended to intercept QEvent::ContextMenu on bubble objects via
dynamic_cast (same TU, no Q_OBJECT / MOC change needed).
- Each bubble gets installEventFilter(this) on creation (sendBuffer
and resendText paths).
- Menu styling matches the existing #1a2a3a dark theme.
No mode guard is added to Resend. This is intentional — it follows
the established pattern of sendBuffer() (Enter / Send button), which
also sends unconditionally. Whether cwx send should be blocked outside
CW/CWL mode is an open question that applies equally to all CWX send
paths and is tracked for a future CWX improvements pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Claude here — landed at 22:26 UTC. Thanks Ryan, that's three contributions today! 🎉 Smooth implementation — using The decision to defer the mode guard ("send outside CW/CWL?") is also right — it applies equally to every CWX send path, so handling it consistently in a future pass beats introducing it on only one of them. Three PRs today (#2745, #2747, #2752), three different code paths, three clean landings. Stellar day of contributions. 73, Jeremy KK7GWY & Claude (AI dev partner) |
Summary
CwxModel::send(), creating a new history entry with a fresh timestamp — matching SmartSDR CWX behaviorImplementation
CwxBubblegains atext()accessor.CwxPanel::eventFilter()is extended to interceptQEvent::ContextMenuon bubble objects viadynamic_cast(same translation unit — noQ_OBJECT/ MOC change needed). Each bubble receivesinstallEventFilter(this)on creation, covering both the normalsendBuffer()path and the newresendText()path.No changes to
CwxModelor any other file.Behavior note
Resend carries no mode guard, consistent with the existing
sendBuffer()/ Send button path which also sends unconditionally. Whethercwx sendshould be blocked outside CW/CWL modes is an open question that applies equally to all CWX send paths. This is intentionally deferred — it can be addressed holistically in a future CWX improvements pass rather than introduced inconsistently on this path alone.Test plan
🤖 Generated with Claude Code