]> sigrok.org Git - pulseview.git/commitdiff
TraceView: Center traces more than once
authorSoeren Apel <redacted>
Fri, 13 Jan 2017 17:36:00 +0000 (18:36 +0100)
committerSoeren Apel <redacted>
Fri, 13 Jan 2017 17:36:00 +0000 (18:36 +0100)
This is to make sure the traces are centered when the view is
first drawn but also properly centered when the final size is
known. This fixes a "jumping" display when opening a new trace
view in addition to an existing one.

pv/view/view.cpp

index 08dc8828357d0e704a45dc6782411024968a7381..546176b44acccb187086654522ac1966db1ad234 100644 (file)
@@ -827,15 +827,6 @@ void View::set_scroll_default()
 
        const QSize areaSize = viewport_->size();
 
-       // Special case: when starting up and the window isn't visible yet,
-       // areaSize is [0, 0]. In this case we want to be called again later
-       if ((areaSize.height() == 0) || (!size_finalized_)) {
-               scroll_needs_defaults_ = true;
-               return;
-       } else {
-               scroll_needs_defaults_ = false;
-       }
-
        const pair<int, int> extents = v_extents();
        const int trace_height = extents.second - extents.first;
 
@@ -847,6 +838,11 @@ void View::set_scroll_default()
        else
                // Put the first trace at the top, letting the bottom ones overflow
                set_v_offset(extents.first);
+
+       // If we're not sure whether setting the defaults worked as
+       // the window wasn't set up entirely yet, we want to be called
+       // again later to make sure
+       scroll_needs_defaults_ = !size_finalized_;
 }
 
 void View::update_layout()