Use list_by_type instead of iterator
[pulseview.git] / pv / view / view.cpp
index 3f0fe9d1dc9991febf113d45f02f5dc6189c0ace..6d366e7311881b8736b80daf2709becd72d7c88b 100644 (file)
@@ -32,6 +32,8 @@
 #include <mutex>
 #include <unordered_set>
 
+#include <boost/thread/locks.hpp>
+
 #include <QApplication>
 #include <QEvent>
 #include <QFontMetrics>
@@ -507,7 +509,11 @@ void View::update_viewport()
 void View::restack_all_trace_tree_items()
 {
        // Make a list of owners that is sorted from deepest first
-       const auto owners = list_row_item_owners();
+       const vector<shared_ptr<TraceTreeItem>> items(
+               list_by_type<TraceTreeItem>());
+       set< TraceTreeItemOwner* > owners;
+       for (const auto &r : items)
+               owners.insert(r->owner());
        vector< TraceTreeItemOwner* > sorted_owners(owners.begin(), owners.end());
        sort(sorted_owners.begin(), sorted_owners.end(),
                [](const TraceTreeItemOwner* a, const TraceTreeItemOwner *b) {
@@ -518,8 +524,6 @@ void View::restack_all_trace_tree_items()
                o->restack_items();
 
        // Animate the items to their destination
-       const vector< shared_ptr<TraceTreeItem> > items(
-               list_by_type<TraceTreeItem>());
        for (const auto &i : items)
                i->animate_to_layout_v_offset();
 }
@@ -1061,7 +1065,9 @@ void View::process_sticky_events()
 
 void View::on_hover_point_changed()
 {
-       for (shared_ptr<TraceTreeItem> r : *this)
+       const vector<shared_ptr<TraceTreeItem>> trace_tree_items(
+               list_by_type<TraceTreeItem>());
+       for (shared_ptr<TraceTreeItem> r : trace_tree_items)
                r->hover_point_changed();
 }