X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=9841978a67f333a6b2c5eff555e70bea98590194;hp=b7ee331f165c175bdaaf1080561b2ae31650644e;hb=cd0c558b8e1dbae12c3faba2349d874942b96066;hpb=925763b09cd26608cf4b38ce7b44800948a0e5aa diff --git a/pv/view/view.cpp b/pv/view/view.cpp index b7ee331f..9841978a 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -527,13 +527,6 @@ const QPoint& View::hover_point() const return hover_point_; } -void View::update_viewport() -{ - assert(viewport_); - viewport_->update(); - header_->update(); -} - void View::restack_all_trace_tree_items() { // Make a list of owners that is sorted from deepest first @@ -744,19 +737,6 @@ void View::update_layout() update_scroll(); } -void View::paint_label(QPainter &p, const QRect &rect, bool hover) -{ - (void)p; - (void)rect; - (void)hover; -} - -QRectF View::label_rect(const QRectF &rect) -{ - (void)rect; - return QRectF(); -} - TraceTreeItemOwner* View::find_prevalent_trace_group( const shared_ptr &group, const unordered_map, shared_ptr > @@ -1038,13 +1018,15 @@ void View::signals_changed() offset += extents.second; } - // Assign proper vertical offsets to each channel in the group - new_trace_group->restack_items(); + if (new_trace_group) { + // Assign proper vertical offsets to each channel in the group + new_trace_group->restack_items(); - // If this is a new group, enqueue it in the new top level - // items list - if (!new_traces_in_group.empty() && new_trace_group) - new_top_level_items.push_back(new_trace_group); + // If this is a new group, enqueue it in the new top level + // items list + if (!new_traces_in_group.empty()) + new_top_level_items.push_back(new_trace_group); + } } // Enqueue the remaining logic channels in a group @@ -1083,17 +1065,28 @@ void View::signals_changed() owner->remove_child_item(trace); } + // Remove any empty trace groups + for (shared_ptr group : list_by_type()) + if (group->child_items().size() == 0) { + remove_child_item(group); + group.reset(); + } + // Add and position the pending top levels items for (auto item : new_top_level_items) { + add_child_item(item); + // Position the item after the last item or at the top if there is none int offset = v_extents().second; + const pair extents = item->v_extents(); + + if (item->enabled()) + offset += -extents.first; - add_child_item(item); item->force_to_v_offset(offset); - const pair extents = item->v_extents(); if (item->enabled()) - offset += (extents.second - extents.first); + offset += extents.second; } update_layout();