QMenu* DecodeTrace::create_view_context_menu(QWidget *parent, QPoint &click_pos)
{
+ // Get entries from default menu before adding our own
+ QMenu *const menu = new QMenu(parent);
+
+ QMenu* default_menu = Trace::create_view_context_menu(parent, click_pos);
+ if (default_menu) {
+ for (QAction *action : default_menu->actions()) { // clazy:exclude=range-loop
+ menu->addAction(action);
+ if (action->parent() == default_menu)
+ action->setParent(menu);
+ }
+ delete default_menu;
+
+ // Add separator if needed
+ if (menu->actions().length() > 0)
+ menu->addSeparator();
+ }
+
try {
selected_row_ = &visible_rows_[get_row_at_point(click_pos)];
} catch (out_of_range&) {
get_view_sample_range(click_pos.x(), click_pos.x() + 1);
selected_sample_range_ = make_pair(sample_range.first, numeric_limits<uint64_t>::max());
- QMenu *const menu = new QMenu(parent);
-
if (decode_signal_->is_paused()) {
QAction *const resume =
new QAction(tr("Resume decoding"), this);
const vector<DecodeChannel> channels = decode_signal_->get_channels();
// Add the channels
- for (DecodeChannel ch : channels) {
+ for (const DecodeChannel& ch : channels) {
// Ignore channels not part of the decoder we create the form for
if (ch.decoder_ != dec)
continue;