]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.cpp
View: Remove unnecessary methods
[pulseview.git] / pv / view / view.cpp
index b7ee331f165c175bdaaf1080561b2ae31650644e..9841978a67f333a6b2c5eff555e70bea98590194 100644 (file)
@@ -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<sigrok::ChannelGroup> &group,
        const unordered_map<shared_ptr<sigrok::Channel>, shared_ptr<Signal> >
@@ -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<TraceGroup> group : list_by_type<TraceGroup>())
+               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<int, int> extents = item->v_extents();
+
+               if (item->enabled())
+                       offset += -extents.first;
 
-               add_child_item(item);
                item->force_to_v_offset(offset);
 
-               const pair<int, int> extents = item->v_extents();
                if (item->enabled())
-                       offset += (extents.second - extents.first);
+                       offset += extents.second;
        }
 
        update_layout();