return base_;
}
+bool Trace::is_selectable(QPoint pos) const
+{
+ // True if the header was clicked, false if the trace area was clicked
+ const View *view = owner_->view();
+ assert(view);
+
+ return (pos.x() <= view->header_width());
+}
+
+bool Trace::is_draggable(QPoint pos) const
+{
+ // While the header label that belongs to this trace is draggable,
+ // the trace itself shall not be. Hence we return true if the header
+ // was clicked and false if the trace area was clicked
+ const View *view = owner_->view();
+ assert(view);
+
+ return (pos.x() <= view->header_width());
+}
+
void Trace::set_segment_display_mode(SegmentDisplayMode mode)
{
segment_display_mode_ = mode;
{
if (key == GlobalSettings::Key_View_ShowHoverMarker)
show_hover_marker_ = value.toBool();
+
+ // Force a repaint since many options alter the way traces look
+ if (owner_)
+ owner_->row_item_appearance_changed(false, true);
}
void Trace::paint_label(QPainter &p, const QRect &rect, bool hover)
QRectF Trace::hit_box_rect(const ViewItemPaintParams &pp) const
{
+ // This one is only for the trace itself, excluding the header area
+ const View *view = owner_->view();
+ assert(view);
+
pair<int, int> extents = v_extents();
const int top = pp.top() + get_visual_y() + extents.first;
const int height = extents.second - extents.first;
- return QRectF(pp.left(), top, pp.width(), height);
+
+ return QRectF(pp.left() + view->header_width(), top,
+ pp.width() - view->header_width(), height);
}
void Trace::set_current_segment(const int segment)