X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.cpp;h=d4d0c5a81bca4c06fef1114147c3ca20d7837c1d;hb=153225bc3339c2ee9a861a32cba2a15f2ddddd1f;hp=a7b483a7830555515700eb6e56597a40b0e45516;hpb=0136bd3b1170420db9840dae4afd9fedf55c30f8;p=pulseview.git diff --git a/pv/views/trace/view.cpp b/pv/views/trace/view.cpp index a7b483a7..d4d0c5a8 100644 --- a/pv/views/trace/view.cpp +++ b/pv/views/trace/view.cpp @@ -1594,10 +1594,22 @@ void View::contextMenuEvent(QContextMenuEvent *event) QPoint pos = event->pos() - QPoint(0, ruler_->sizeHint().height()); const shared_ptr r = viewport_->get_mouse_over_item(pos); - if (!r) - return; - QMenu *menu = r->create_view_context_menu(this, pos); + QMenu* menu = nullptr; + + if (!r) { + context_menu_x_pos_ = pos.x(); + + // No view item under cursor, use generic menu + menu = new QMenu(this); + + QAction *const create_marker_here = new QAction(tr("Create marker here"), this); + connect(create_marker_here, SIGNAL(triggered()), this, SLOT(on_create_marker_here())); + menu->addAction(create_marker_here); + } else { + menu = r->create_view_context_menu(this, pos); + } + if (menu) menu->popup(event->globalPos()); } @@ -2067,6 +2079,13 @@ void View::on_segment_changed(int segment) } } +void View::on_create_marker_here() +{ + const QPoint p = ruler_->mapFrom(this, QPoint(context_menu_x_pos_, 0)); + + add_flag(ruler_->get_absolute_time_from_x_pos(p.x())); +} + void View::on_settingViewTriggerIsZeroTime_changed(const QVariant new_value) { (void)new_value;