X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fviews%2Ftrace%2Fview.hpp;h=a6655d2f492ab941617fc95f7c694463b1aa6645;hp=8e78b6260e2143dcbb141ad2a5aa0f1b4836c822;hb=e23567ed84aa55e2a0c48252080058186f6b80e7;hpb=cbd9ec7f751a5403d1465e966ccecd31b7086e8a diff --git a/pv/views/trace/view.hpp b/pv/views/trace/view.hpp index 8e78b626..a6655d2f 100644 --- a/pv/views/trace/view.hpp +++ b/pv/views/trace/view.hpp @@ -129,6 +129,8 @@ public: virtual void remove_decode_signal(shared_ptr signal); #endif + shared_ptr get_signal_under_mouse_cursor() const; + /** * Returns the view of the owner. */ @@ -143,6 +145,8 @@ public: const Viewport* viewport() const; + const Ruler* ruler() const; + virtual void save_settings(QSettings &settings) const; virtual void restore_settings(QSettings &settings); @@ -169,7 +173,7 @@ public: */ const pv::util::Timestamp& ruler_offset() const; - void set_zero_position(pv::util::Timestamp& position); + void set_zero_position(const pv::util::Timestamp& position); void reset_zero_position(); @@ -300,6 +304,16 @@ public: vector< shared_ptr > flags() const; const QPoint& hover_point() const; + const QWidget* hover_widget() const; + + /** + * Determines the closest level change (i.e. edge) to a given point, which + * is useful for e.g. the "snap to edge" functionality. + * + * @param p The current position of the mouse cursor + * @return The sample number of the nearest level change or -1 if none + */ + int64_t get_nearest_level_change(const QPoint &p); void restack_all_trace_tree_items(); @@ -308,7 +322,7 @@ public: void on_setting_changed(const QString &key, const QVariant &value); Q_SIGNALS: - void hover_point_changed(const QPoint &hp); + void hover_point_changed(const QWidget* widget, const QPoint &hp); void selection_changed(); @@ -516,7 +530,10 @@ private: vector< shared_ptr > trigger_markers_; + QWidget* hover_widget_; QPoint hover_point_; + shared_ptr signal_under_mouse_cursor_; + uint16_t snap_distance_; unsigned int sticky_events_; QTimer lazy_event_handler_;