Ruler scale calculation optimization
[pulseview.git] / pv / view / view.cpp
index fdb9354b9315cefe4c4a06d23b00a879db7bab82..12c277d5434582a5e4b63ada3b85e4324154ff46 100644 (file)
@@ -494,7 +494,7 @@ void View::set_zoom(double scale, int offset)
 void View::calculate_tick_spacing()
 {
        const double SpacingIncrement = 10.0f;
-       const double MinValueSpacing = 25.0f;
+       const double MinValueSpacing = 40.0f;
 
        // Figure out the highest numeric value visible on a label
        const QSize areaSize = viewport_->size();
@@ -925,14 +925,20 @@ void View::signals_changed()
 
 void View::capture_state_updated(int state)
 {
-       // Reset "always zoom to fit" when we change to the stopped state
-       if (always_zoom_to_fit_ && (state == Session::Stopped)) {
-               always_zoom_to_fit_ = false;
-               always_zoom_to_fit_changed(false);
-       }
-
        if (state == Session::Running)
                time_unit_ = util::Samples;
+
+       if (state == Session::Stopped) {
+               // After acquisition has stopped we need to re-calculate the ticks once
+               // as it's otherwise done when the user pans or zooms, which is too late
+               calculate_tick_spacing();
+
+               // Reset "always zoom to fit", the acquisition has stopped
+               if (always_zoom_to_fit_) {
+                       always_zoom_to_fit_ = false;
+                       always_zoom_to_fit_changed(false);
+               }
+       }
 }
 
 void View::data_updated()