X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Frowitem.cpp;h=b64294c48907f564540c8edb91b33be01affdc95;hb=3e769a374963f37f7d52b65ef6c56bcdf1ef11fe;hp=fe194bf72ea3b8e9be963dba40dd2beb5d7f8929;hpb=23935421086ebf58cfe68228971ded327a6155a1;p=pulseview.git diff --git a/pv/view/rowitem.cpp b/pv/view/rowitem.cpp index fe194bf..b64294c 100644 --- a/pv/view/rowitem.cpp +++ b/pv/view/rowitem.cpp @@ -28,39 +28,71 @@ namespace pv { namespace view { RowItem::RowItem() : - _view(NULL), - _v_offset(0) + _owner(NULL), + _layout_v_offset(0), + _visual_v_offset(0) { } -int RowItem::get_v_offset() const +int RowItem::layout_v_offset() const { - return _v_offset; + return _layout_v_offset; } -void RowItem::set_v_offset(int v_offset) +void RowItem::set_layout_v_offset(int v_offset) { - _v_offset = v_offset; + if (_layout_v_offset == v_offset) + return; + + _layout_v_offset = v_offset; + + if (_owner) + _owner->extents_changed(false, true); +} + +int RowItem::visual_v_offset() const +{ + return _visual_v_offset; +} + +void RowItem::set_visual_v_offset(int v_offset) +{ + _visual_v_offset = v_offset; + + if (_owner) + _owner->appearance_changed(true, true); +} + +void RowItem::force_to_v_offset(int v_offset) +{ + _layout_v_offset = _visual_v_offset = v_offset; } -void RowItem::set_view(View *view) +RowItemOwner* RowItem::owner() const { - assert(view); + return _owner; +} - if (_view) - disconnect(_view, SIGNAL(hover_point_changed()), - this, SLOT(on_hover_point_changed())); +void RowItem::set_owner(RowItemOwner *owner) +{ + assert(_owner || owner); - _view = view; + if (_owner) + _visual_v_offset += _owner->owner_v_offset(); + _owner = owner; + if (_owner) + _visual_v_offset -= _owner->owner_v_offset(); +} - connect(view, SIGNAL(hover_point_changed()), - this, SLOT(on_hover_point_changed())); +int RowItem::get_visual_y() const +{ + assert(_owner); + return _visual_v_offset + _owner->owner_v_offset(); } -int RowItem::get_y() const +QPoint RowItem::point() const { - assert(_view); - return _v_offset + _view->v_offset(); + return QPoint(0, visual_v_offset()); } void RowItem::paint_back(QPainter &p, int left, int right)