X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Flogicsignal.cpp;h=c129559185437879bee31bb51b530f5ad125e586;hp=870af9c5fce2caa04dc718afd66209ae7b1c23e9;hb=cab7bc996c9c87120b0c551caa47d8dd53d84ea9;hpb=1931b5f932cf068d073bc798f11dd21ede5389a2;ds=sidebyside diff --git a/pv/views/trace/logicsignal.cpp b/pv/views/trace/logicsignal.cpp index 870af9c5..c1295591 100644 --- a/pv/views/trace/logicsignal.cpp +++ b/pv/views/trace/logicsignal.cpp @@ -103,6 +103,7 @@ LogicSignal::LogicSignal( shared_ptr base) : Signal(session, base), device_(device), + trigger_types_(get_trigger_types()), trigger_none_(nullptr), trigger_rising_(nullptr), trigger_high_(nullptr), @@ -292,42 +293,43 @@ void LogicSignal::paint_mid(QPainter &p, ViewItemPaintParams &pp) void LogicSignal::paint_fore(QPainter &p, ViewItemPaintParams &pp) { - // Draw the trigger marker - if (base_->enabled() && trigger_match_) { - const int y = get_visual_y(); - const vector trig_types = get_trigger_types(); - - for (int32_t type_id : trig_types) { - const TriggerMatchType *const type = - TriggerMatchType::get(type_id); - if (trigger_match_ != type || type_id < 0 || - (size_t)type_id >= countof(TriggerMarkerIcons) || - !TriggerMarkerIcons[type_id]) - continue; + if (base_->enabled()) { + if (trigger_match_) { + // Draw the trigger marker + const int y = get_visual_y(); + + for (int32_t type_id : trigger_types_) { + const TriggerMatchType *const type = + TriggerMatchType::get(type_id); + if (trigger_match_ != type || type_id < 0 || + (size_t)type_id >= countof(TriggerMarkerIcons) || + !TriggerMarkerIcons[type_id]) + continue; - const QPixmap *const pixmap = get_pixmap( - TriggerMarkerIcons[type_id]); - if (!pixmap) - continue; + const QPixmap *const pixmap = get_pixmap( + TriggerMarkerIcons[type_id]); + if (!pixmap) + continue; - const float pad = TriggerMarkerPadding - 0.5f; - const QSize size = pixmap->size(); - const QPoint point( - pp.right() - size.width() - pad * 2, - y - (signal_height_ + size.height()) / 2); + const float pad = TriggerMarkerPadding - 0.5f; + const QSize size = pixmap->size(); + const QPoint point( + pp.right() - size.width() - pad * 2, + y - (signal_height_ + size.height()) / 2); - p.setPen(QPen(TriggerMarkerBackgroundColor.darker())); - p.setBrush(TriggerMarkerBackgroundColor); - p.drawRoundedRect(QRectF(point, size).adjusted( - -pad, -pad, pad, pad), pad, pad); - p.drawPixmap(point, *pixmap); + p.setPen(QPen(TriggerMarkerBackgroundColor.darker())); + p.setBrush(TriggerMarkerBackgroundColor); + p.drawRoundedRect(QRectF(point, size).adjusted( + -pad, -pad, pad, pad), pad, pad); + p.drawPixmap(point, *pixmap); - break; + break; + } } - } - if (show_hover_marker_) - paint_hover_marker(p); + if (show_hover_marker_) + paint_hover_marker(p); + } } void LogicSignal::paint_caps(QPainter &p, QLineF *const lines,