TraceView: Use sticky scrolling setting directly
[pulseview.git] / pv / view / view.cpp
index 04bb99205636fd50ffe18872f56dd3ba2dcd3bb5..8595594803b58f21b3c33f439e51b69358d149ae 100644 (file)
@@ -562,16 +562,6 @@ pair<Timestamp, Timestamp> View::get_time_extents() const
        return make_pair(*left_time, *right_time);
 }
 
-void View::enable_sticky_scrolling(bool state)
-{
-       sticky_scrolling_ = state;
-}
-
-void View::toggle_sticky_scrolling(void)
-{
-       sticky_scrolling_ = !sticky_scrolling_;
-}
-
 void View::enable_coloured_bg(bool state)
 {
        const vector<shared_ptr<TraceTreeItem>> items(
@@ -627,8 +617,8 @@ std::shared_ptr<CursorPair> View::cursors() const
 
 void View::add_flag(const Timestamp& time)
 {
-       flags_.push_back(shared_ptr<Flag>(new Flag(*this, time,
-               QString("%1").arg(next_flag_text_))));
+       flags_.push_back(make_shared<Flag>(*this, time,
+               QString("%1").arg(next_flag_text_)));
 
        next_flag_text_ = (next_flag_text_ >= 'Z') ? 'A' :
                (next_flag_text_ + 1);
@@ -676,7 +666,7 @@ void View::restack_all_trace_tree_items()
                o->restack_items();
 
        // Re-assign background colors
-       bool next_bgcolour_state = 0;
+       bool next_bgcolour_state = false;
 
        for (auto &o : sorted_owners)
                next_bgcolour_state = o->reassign_bgcolour_states(next_bgcolour_state);
@@ -688,8 +678,7 @@ void View::restack_all_trace_tree_items()
 
 void View::trigger_event(util::Timestamp location)
 {
-       trigger_markers_.push_back(shared_ptr<TriggerMarker>(
-               new TriggerMarker(*this, location)));
+       trigger_markers_.push_back(make_shared<TriggerMarker>(*this, location));
 }
 
 void View::get_scroll_layout(double &length, Timestamp &offset) const
@@ -1242,6 +1231,9 @@ void View::capture_state_updated(int state)
                        always_zoom_to_fit_ = true;
                        always_zoom_to_fit_changed(always_zoom_to_fit_);
                }
+
+               // Enable sticky scrolling if the setting is enabled
+               sticky_scrolling_ = settings.value(GlobalSettings::Key_View_StickyScrolling).toBool();
        }
 
        if (state == Session::Stopped) {
@@ -1251,6 +1243,8 @@ void View::capture_state_updated(int state)
 
                // Reset "always zoom to fit", the acquisition has stopped
                if (always_zoom_to_fit_) {
+                       // Perform a final zoom-to-fit before disabling
+                       zoom_fit(always_zoom_to_fit_);
                        always_zoom_to_fit_ = false;
                        always_zoom_to_fit_changed(always_zoom_to_fit_);
                }
@@ -1272,10 +1266,9 @@ void View::data_updated()
 
 void View::perform_delayed_view_update()
 {
-       if (always_zoom_to_fit_)
+       if (always_zoom_to_fit_) {
                zoom_fit(true);
-
-       if (sticky_scrolling_) {
+       } else if (sticky_scrolling_) {
                // Make right side of the view sticky
                double length = 0;
                Timestamp offset;