X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=4cfb39783319a258732b28e14a34b5f884d3b17f;hb=b93295580db08d9008b9c9e49a3a3a86ef562f14;hp=026d2e7fda92a516e2032dcabac64d1a7d0d5fa5;hpb=01fd32630269c1cfb99eb2b0d6060d7d19a42475;p=pulseview.git diff --git a/pv/view/view.cpp b/pv/view/view.cpp index 026d2e7..4cfb397 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 @@ -28,7 +30,7 @@ #include #include -#include "decodesignal.h" +#include "decodetrace.h" #include "header.h" #include "ruler.h" #include "signal.h" @@ -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,13 +161,14 @@ 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 { const vector< shared_ptr > sigs( session().get_signals()); - const vector< shared_ptr > decode_sigs( + const vector< shared_ptr > decode_sigs( session().get_decode_signals()); vector< shared_ptr > traces( sigs.size() + decode_sigs.size()); @@ -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; }