X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Frowitem.cpp;h=120a00a39d1cd0a1fb478c5facf446d86e8722ad;hp=d850e321fe4fdcf0572065e268d6393fa3af8982;hb=be9e7b4bb29b6594ec2b64442748ab135b684bf8;hpb=1dc835a4b49104f5b4c9695e91e6ffb7a48d7c23 diff --git a/pv/view/rowitem.cpp b/pv/view/rowitem.cpp index d850e32..120a00a 100644 --- a/pv/view/rowitem.cpp +++ b/pv/view/rowitem.cpp @@ -29,18 +29,37 @@ namespace view { RowItem::RowItem() : _owner(NULL), - _v_offset(0) + _layout_v_offset(0), + _visual_v_offset(0) { } -int RowItem::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; +} + +int RowItem::visual_v_offset() const +{ + return _visual_v_offset; +} + +void RowItem::set_visual_v_offset(int v_offset) +{ + _visual_v_offset = v_offset; +} + +void RowItem::force_to_v_offset(int v_offset) +{ + _layout_v_offset = _visual_v_offset = v_offset; } RowItemOwner* RowItem::owner() const @@ -50,19 +69,24 @@ RowItemOwner* RowItem::owner() const void RowItem::set_owner(RowItemOwner *owner) { - assert((_owner && !owner) || (!_owner && owner)); + assert(_owner || owner); + + if (_owner) + _visual_v_offset += _owner->owner_v_offset(); _owner = owner; + if (_owner) + _visual_v_offset -= _owner->owner_v_offset(); } -int RowItem::get_y() const +int RowItem::get_visual_y() const { assert(_owner); - return _v_offset + _owner->owner_v_offset(); + return _visual_v_offset + _owner->owner_v_offset(); } QPoint RowItem::point() const { - return QPoint(0, v_offset()); + return QPoint(0, visual_v_offset()); } void RowItem::paint_back(QPainter &p, int left, int right)