]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/decodetrace.cpp
TraceView: Prevent decode traces from changing order
[pulseview.git] / pv / views / trace / decodetrace.cpp
index f4b9f3359ccbf35f41b845fb95842141c0e73afe..d826587e507fbcbf03464cc8292700bf5b44ea3e 100644 (file)
@@ -242,10 +242,21 @@ shared_ptr<data::SignalBase> DecodeTrace::base() const
        return base_;
 }
 
+void DecodeTrace::set_owner(TraceTreeItemOwner *owner)
+{
+       Trace::set_owner(owner);
+
+       // The owner is set in trace::View::signals_changed(), which is a slot.
+       // So after this trace was added to the view, we won't have an owner
+       // that we need to initialize in update_rows(). Once we do, we call it
+       // from on_decode_reset().
+       on_decode_reset();
+}
+
 pair<int, int> DecodeTrace::v_extents() const
 {
        // Make an empty decode trace appear symmetrical
-       if (max_visible_rows_ == 0)
+       if (visible_rows_ == 0)
                return make_pair(-default_row_height_, default_row_height_);
 
        unsigned int height = 0;
@@ -1378,6 +1389,9 @@ void DecodeTrace::initialize_row_widgets(DecodeTraceRow* r, unsigned int row_id)
 
 void DecodeTrace::update_rows()
 {
+       if (!owner_)
+               return;
+
        lock_guard<mutex> lock(row_modification_mutex_);
 
        for (DecodeTraceRow& r : rows_)