X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fflag.cpp;h=ea3cd609854c813783ffe6e406143b887915693a;hb=74bf66669012692f7eda790abe724bd5bb4ae8c6;hp=97b21be232888dc909fc36b4df9c573005815f39;hpb=710c2a1896fbac968c82f2d1257aaabd10a48cc8;p=pulseview.git diff --git a/pv/views/trace/flag.cpp b/pv/views/trace/flag.cpp index 97b21be2..ea3cd609 100644 --- a/pv/views/trace/flag.cpp +++ b/pv/views/trace/flag.cpp @@ -59,22 +59,28 @@ bool Flag::enabled() const QString Flag::get_text() const { - const shared_ptr ref_item = view_.get_reference_time_item(); - if (ref_item == nullptr || ref_item.get() == this) { - return text_; - } else { - return Ruler::format_time_with_distance( + QString s; + + const shared_ptr ref_item = view_.ruler()->get_reference_item(); + + if (!ref_item || (ref_item.get() == this)) + s = text_; + else + s = Ruler::format_time_with_distance( ref_item->time(), ref_item->delta(time_), view_.tick_prefix(), view_.time_unit(), view_.tick_precision()); - } + + return s; } QRectF Flag::label_rect(const QRectF &rect) const { - const shared_ptr ref_item = view_.get_reference_time_item(); - if (ref_item == nullptr || ref_item.get() == this) { - return TimeMarker::label_rect(rect); + QRectF r; + const shared_ptr ref_item = view_.ruler()->get_reference_item(); + + if (!ref_item || (ref_item.get() == this)) { + r = TimeMarker::label_rect(rect); } else { // TODO: Remove code duplication between here and cursor.cpp const float x = get_x(); @@ -85,17 +91,20 @@ QRectF Flag::label_rect(const QRectF &rect) const const QSizeF label_size( text_size.width() + LabelPadding.width() * 2, text_size.height() + LabelPadding.height() * 2); - const float top = rect.height() - label_size.height() - - TimeMarker::ArrowSize - 0.5f; + const float height = label_size.height(); + const float top = + rect.height() - label_size.height() - TimeMarker::ArrowSize - 0.5f; const pv::util::Timestamp& delta = ref_item->delta(time_); if (delta >= 0) - return QRectF(x, top, label_size.width(), height); + r = QRectF(x, top, label_size.width(), height); else - return QRectF(x - label_size.width(), top, label_size.width(), height); + r = QRectF(x - label_size.width(), top, label_size.width(), height); } + + return r; } pv::widgets::Popup* Flag::create_popup(QWidget *parent) @@ -128,6 +137,12 @@ QMenu* Flag::create_header_context_menu(QWidget *parent) connect(del, SIGNAL(triggered()), this, SLOT(on_delete())); menu->addAction(del); + QAction *const snap_disable = new QAction(tr("Disable snapping"), this); + snap_disable->setCheckable(true); + snap_disable->setChecked(snapping_disabled_); + connect(snap_disable, &QAction::toggled, this, [=](bool checked){snapping_disabled_ = checked;}); + menu->addAction(snap_disable); + return menu; }