- if (left_time == DBL_MAX && right_time == DBL_MIN)
- return make_pair(0.0, 0.0);
+ if (!left_time || !right_time)
+ return make_pair(0, 0);
+
+ assert(*left_time < *right_time);
+ return make_pair(*left_time, *right_time);
+}
+
+void View::enable_sticky_scrolling(bool state)
+{
+ sticky_scrolling_ = state;
+}
+
+void View::enable_coloured_bg(bool state)
+{
+ const vector<shared_ptr<TraceTreeItem>> items(
+ list_by_type<TraceTreeItem>());
+
+ for (shared_ptr<TraceTreeItem> i : items) {
+ // Can't cast to Trace because it's abstract, so we need to
+ // check for any derived classes individually
+
+ shared_ptr<AnalogSignal> a = dynamic_pointer_cast<AnalogSignal>(i);
+ if (a)
+ a->set_coloured_bg(state);
+
+ shared_ptr<LogicSignal> l = dynamic_pointer_cast<LogicSignal>(i);
+ if (l)
+ l->set_coloured_bg(state);
+
+ shared_ptr<DecodeTrace> d = dynamic_pointer_cast<DecodeTrace>(i);
+ if (d)
+ d->set_coloured_bg(state);
+ }