X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fanalogsignal.cpp;h=bbc23fb70074bace6adc25e304d70d50583de3dd;hp=90e441e09f125392c5ccd215e0b2441b55f3c026;hb=d0c0573b3ee694827a747727f862c5f91736ca05;hpb=7daebd054e65a244dce36933cbf173b8d7532a09 diff --git a/pv/views/trace/analogsignal.cpp b/pv/views/trace/analogsignal.cpp index 90e441e0..bbc23fb7 100644 --- a/pv/views/trace/analogsignal.cpp +++ b/pv/views/trace/analogsignal.cpp @@ -118,8 +118,7 @@ AnalogSignal::AnalogSignal( connect(analog_data, SIGNAL(min_max_changed(float, float)), this, SLOT(on_min_max_changed(float, float))); - GlobalSettings::register_change_handler(GlobalSettings::Key_View_ConversionThresholdDispMode, - bind(&AnalogSignal::on_settingViewConversionThresholdDispMode_changed, this, _1)); + GlobalSettings::add_change_handler(this); GlobalSettings gs; conversion_threshold_disp_mode_ = @@ -131,6 +130,11 @@ AnalogSignal::AnalogSignal( update_scale(); } +AnalogSignal::~AnalogSignal() +{ + GlobalSettings::remove_change_handler(this); +} + shared_ptr AnalogSignal::data() const { return base_->analog_data(); @@ -206,6 +210,12 @@ void AnalogSignal::scale_handle_drag_release() update_scale(); } +void AnalogSignal::on_setting_changed(const QString &key, const QVariant &value) +{ + if (key == GlobalSettings::Key_View_ConversionThresholdDispMode) + on_settingViewConversionThresholdDispMode_changed(value); +} + void AnalogSignal::paint_back(QPainter &p, ViewItemPaintParams &pp) { if (!base_->enabled()) @@ -658,11 +668,12 @@ shared_ptr AnalogSignal::get_analog_segment_to_paint() if (segment_display_mode_ == ShowLastSegmentOnly) segment = segments.back(); - if (segment_display_mode_ == ShowSingleSegmentOnly) { + if ((segment_display_mode_ == ShowSingleSegmentOnly) || + (segment_display_mode_ == ShowLastCompleteSegmentOnly)) { try { segment = segments.at(current_segment_); } catch (out_of_range) { - qDebug() << "Current analog segment out of range for signal" << base_->name(); + qDebug() << "Current analog segment out of range for signal" << base_->name() << ":" << current_segment_; } } } @@ -681,11 +692,12 @@ shared_ptr AnalogSignal::get_logic_segment_to_paint() co if (segment_display_mode_ == ShowLastSegmentOnly) segment = segments.back(); - if (segment_display_mode_ == ShowSingleSegmentOnly) { + if ((segment_display_mode_ == ShowSingleSegmentOnly) || + (segment_display_mode_ == ShowLastCompleteSegmentOnly)) { try { segment = segments.at(current_segment_); } catch (out_of_range) { - qDebug() << "Current logic segment out of range for signal" << base_->name(); + qDebug() << "Current logic segment out of range for signal" << base_->name() << ":" << current_segment_; } } }