]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/timeitem.cpp
Fix #1292/1294 by snapping to any edge when not hovering over a signal
[pulseview.git] / pv / views / trace / timeitem.cpp
index bd07e9b28c9383f1c4a48fbe3cd3bdd6b40ae6b4..47a7da3c503bbd616d5085a66b4ea5c8c103c74d 100644 (file)
@@ -17,6 +17,7 @@
  * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "signal.hpp"
 #include "timeitem.hpp"
 #include "view.hpp"
 
@@ -30,8 +31,13 @@ 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());
 }
 
 } // namespace trace