X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.cpp;h=d4d0c5a81bca4c06fef1114147c3ca20d7837c1d;hb=153225bc3339c2ee9a861a32cba2a15f2ddddd1f;hp=f1de3b20e9faeab2c2ac10e3665b5b38d897d1ae;hpb=c259400566cecf3b6ca959bc60c671a7195c0078;p=pulseview.git diff --git a/pv/views/trace/view.cpp b/pv/views/trace/view.cpp index f1de3b20..d4d0c5a8 100644 --- a/pv/views/trace/view.cpp +++ b/pv/views/trace/view.cpp @@ -92,7 +92,7 @@ namespace views { namespace trace { const Timestamp View::MaxScale("1e9"); -const Timestamp View::MinScale("1e-12"); +const Timestamp View::MinScale("1e-14"); const int View::MaxScrollValue = INT_MAX / 2; @@ -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;