X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=42a2f79f0b22e96b45340c67aef0eabaa0c8957d;hp=026d2e7fda92a516e2032dcabac64d1a7d0d5fa5;hb=4e5a4405482a296ebb6014e627298ad156c78d55;hpb=01fd32630269c1cfb99eb2b0d6060d7d19a42475 diff --git a/pv/view/view.cpp b/pv/view/view.cpp index 026d2e7f..42a2f79f 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include + #include #include #include @@ -145,16 +147,12 @@ void View::zoom(double steps) void View::zoom(double steps, int offset) { const double cursor_offset = _offset + _scale * offset; - _scale *= pow(3.0/2.0, -steps); - _scale = max(min(_scale, MaxScale), MinScale); - _offset = cursor_offset - _scale * offset; - - _ruler->update(); - _viewport->update(); - update_scroll(); + const double new_scale = max(min(_scale * pow(3.0/2.0, -steps), + MaxScale), MinScale); + const double new_offset = cursor_offset - new_scale * offset; + set_scale_offset(new_scale, new_offset); } - void View::set_scale_offset(double scale, double offset) { _scale = scale; @@ -163,6 +161,7 @@ void View::set_scale_offset(double scale, double offset) update_scroll(); _ruler->update(); _viewport->update(); + scale_offset_changed(); } vector< shared_ptr > View::get_traces() const @@ -255,6 +254,12 @@ void View::normalize_layout() v_scroll_value_changed(verticalScrollBar()->sliderPosition()); } +void View::update_viewport() +{ + assert(_viewport); + _viewport->update(); +} + void View::get_scroll_layout(double &length, double &offset) const { const shared_ptr sig_data = _session.get_data(); @@ -387,7 +392,6 @@ void View::signals_changed() const vector< shared_ptr > traces(get_traces()); BOOST_FOREACH(shared_ptr t, traces) { t->set_view(this); - t->init_context_bar_actions(NULL); t->set_v_offset(offset); offset += SignalHeight + 2 * SignalMargin; }