]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.cpp
TraceView: Fix "always zoom to fit" feature
[pulseview.git] / pv / view / view.cpp
index 9ca973a7ea9ca3b4227cde8973f2add6f284348a..23de2087c94120e030834c9e1dfb0e8ec6312952 100644 (file)
@@ -1233,10 +1233,12 @@ void View::capture_state_updated(int state)
 
                trigger_markers_.clear();
 
-               // Activate "always zoom to fit" if the setting is enabled
+               // Activate "always zoom to fit" if the setting is enabled and we're
+               // the main view of this session (other trace views may be used for
+               // zooming and we don't want to mess them up)
                GlobalSettings settings;
                bool state = settings.value(GlobalSettings::Key_View_AlwaysZoomToFit).toBool();
-               if (state) {
+               if (is_main_view_ && state) {
                        always_zoom_to_fit_ = true;
                        always_zoom_to_fit_changed(always_zoom_to_fit_);
                }
@@ -1249,6 +1251,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_);
                }
@@ -1270,10 +1274,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;