X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Ftimeitem.cpp;h=f2eb5957c45ce2d92f914afb2f7ba636957be916;hb=9f094349d415a37ec30fa2aa2bb6c979c03d6bc1;hp=bd07e9b28c9383f1c4a48fbe3cd3bdd6b40ae6b4;hpb=1573bf16ba50d1c023ad3a9ce596f0ab6eaeacff;p=pulseview.git diff --git a/pv/views/trace/timeitem.cpp b/pv/views/trace/timeitem.cpp index bd07e9b2..f2eb5957 100644 --- a/pv/views/trace/timeitem.cpp +++ b/pv/views/trace/timeitem.cpp @@ -17,6 +17,7 @@ * along with this program; if not, see . */ +#include "signal.hpp" #include "timeitem.hpp" #include "view.hpp" @@ -30,8 +31,18 @@ TimeItem::TimeItem(View &view) : void TimeItem::drag_by(const QPoint &delta) { - set_time(view_.offset() + (drag_point_.x() + delta.x() - 0.5) * - view_.scale()); + int64_t sample_num = view_.get_nearest_level_change(drag_point_ + delta); + + if (sample_num > -1) + set_time(sample_num / view_.get_signal_under_mouse_cursor()->base()->get_samplerate()); + else + set_time(view_.offset() + (drag_point_.x() + delta.x() - 0.5) * + view_.scale()); +} + +const pv::util::Timestamp TimeItem::delta(const pv::util::Timestamp& other) const +{ + return other - time(); } } // namespace trace