X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Fviewport.cpp;h=83df7aa4d1eaaa9543add3896e2b6363457ba200;hb=e9e4e5e7ea46132262fbd53f708dafc039b3b24f;hp=c33af44b6ccc423f3f8dc13d579e0268e7aad3ee;hpb=7708eb92ca87836f5d4987899e0fbb7a4e2335b4;p=pulseview.git diff --git a/pv/view/viewport.cpp b/pv/view/viewport.cpp index c33af44b..83df7aa4 100644 --- a/pv/view/viewport.cpp +++ b/pv/view/viewport.cpp @@ -32,6 +32,8 @@ #include using std::abs; +using std::back_inserter; +using std::copy; using std::max; using std::min; using std::none_of; @@ -53,6 +55,24 @@ Viewport::Viewport(View &parent) : setBackgroundRole(QPalette::Base); } +shared_ptr Viewport::get_mouse_over_item(const QPoint &pt) +{ + const vector< shared_ptr > items(this->items()); + for (auto i = items.rbegin(); i != items.rend(); i++) + if ((*i)->enabled() && + (*i)->hit_box_rect(rect()).contains(pt)) + return *i; + return nullptr; +} + +vector< shared_ptr > Viewport::items() +{ + vector< shared_ptr > items(view_.begin(), view_.end()); + const vector< shared_ptr > time_items(view_.time_items()); + copy(time_items.begin(), time_items.end(), back_inserter(items)); + return items; +} + void Viewport::paintEvent(QPaintEvent*) { vector< shared_ptr > row_items(view_.begin(), view_.end());