]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/view.cpp
View: Fixes related to multi-segment display
[pulseview.git] / pv / views / trace / view.cpp
index e26e8fc2582a8a45b57f41d3abbf2d72940ed6f7..2bfe68c22468858d3bc24bd47034798dad78f607 100644 (file)
@@ -229,6 +229,9 @@ View::View(Session &session, bool is_main_view, QWidget *parent) :
 
        // Update the zoom state
        calculate_tick_spacing();
+
+       // Make sure the standard bar's segment selector is in sync
+       set_segment_display_mode(segment_display_mode_);
 }
 
 Session& View::session()
@@ -497,7 +500,7 @@ void View::set_segment_display_mode(Trace::SegmentDisplayMode mode)
 
        segment_selectable_ = true;
 
-       if (mode == Trace::ShowSingleSegmentOnly)
+       if (mode == Trace::ShowLastSegmentOnly)
                segment_selectable_ = false;
 
        segment_display_mode_changed(segment_selectable_);
@@ -1420,9 +1423,11 @@ void View::on_segment_changed(int segment)
        switch (segment_display_mode_) {
        case Trace::ShowLastSegmentOnly:
        case Trace::ShowSingleSegmentOnly:
-               current_segment_ = segment - 1;
+               current_segment_ = segment;
                for (shared_ptr<Signal> signal : signals_)
                        signal->set_current_segment(current_segment_);
+               for (shared_ptr<DecodeTrace> dt : decode_traces_)
+                       dt->set_current_segment(current_segment_);
                viewport_->update();
                break;