X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.cpp;h=f1de3b20e9faeab2c2ac10e3665b5b38d897d1ae;hp=2e4d147d2fb6a9949d5d4fcb348f1c3bc92ac448;hb=HEAD;hpb=66a43b4f9cf76853e99e7f5fc2f9df49ec58bd34 diff --git a/pv/views/trace/view.cpp b/pv/views/trace/view.cpp index 2e4d147d..33d8b0a4 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; @@ -933,7 +933,7 @@ pair View::get_time_extents() const if (signals_.size() == 0) return make_pair(0, 0); - for (shared_ptr s : signals_) + for (const shared_ptr& s : signals_) if (s->base()->data() && (s->base()->data()->segments().size() > 0)) data.push_back(s->base()->data()); @@ -1530,7 +1530,11 @@ bool View::eventFilter(QObject *object, QEvent *event) else if (object == ruler_) hover_point_ = mouse_event->pos(); else if (object == header_) +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + hover_point_ = QPoint(0, mouse_event->pos().y()); +#else hover_point_ = QPoint(0, mouse_event->y()); +#endif else hover_point_ = QPoint(-1, -1); @@ -1594,10 +1598,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 +2083,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;