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;
switch (signalbase->type()) {
case SignalBase::LogicChannel:
- signal = shared_ptr<Signal>(new LogicSignal(session_, session_.device(), signalbase));
+ signal = shared_ptr<Signal>(new LogicSignal(session_, signalbase));
break;
case SignalBase::AnalogChannel:
vector< shared_ptr<SignalData> > visible_data;
for (const shared_ptr<Signal>& sig : signals_)
if (sig->enabled())
- visible_data.push_back(sig->data());
+ visible_data.push_back(sig->base()->data());
return visible_data;
}
if (signals_.size() == 0)
return make_pair(0, 0);
- for (shared_ptr<Signal> s : signals_)
- if (s->data() && (s->data()->segments().size() > 0))
- data.push_back(s->data());
+ for (const shared_ptr<Signal>& s : signals_)
+ if (s->base()->data() && (s->base()->data()->segments().size() > 0))
+ data.push_back(s->base()->data());
for (const shared_ptr<SignalData>& d : data) {
const vector< shared_ptr<Segment> > segments = d->segments();
if (time_unit_ == util::TimeUnit::Samples) {
// Check all signals but...
for (const shared_ptr<Signal>& signal : signals_) {
- const shared_ptr<SignalData> data = signal->data();
+ const shared_ptr<SignalData> data = signal->base()->data();
// ...only check first segment of each
const vector< shared_ptr<Segment> > segments = data->segments();
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);
QPoint pos = event->pos() - QPoint(0, ruler_->sizeHint().height());
const shared_ptr<ViewItem> 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());
}
}
}
+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;