]> sigrok.org Git - pulseview.git/blobdiff - pv/view/viewport.hpp
ViewWidget: Fixed glitching when drag is within the manhattan distance
[pulseview.git] / pv / view / viewport.hpp
index 3cc59c9479d5e5a87abb48f078bfbface8d35aa4..f43177d2d3f611d9ea00abe87b6eadfbe02ce92e 100644 (file)
@@ -42,22 +42,51 @@ class Viewport : public ViewWidget
 public:
        explicit Viewport(View &parent);
 
-protected:
-       void paintEvent(QPaintEvent *event);
+private:
+       /**
+        * Gets the first view item which has a hit-box that contains @c pt .
+        * @param pt the point to search with.
+        * @return the view item that has been found, or and empty
+        *   @c shared_ptr if no item was found.
+        */
+       std::shared_ptr<pv::view::ViewItem> get_mouse_over_item(
+               const QPoint &pt);
+
+       /**
+        * Sets this item into the dragged state.
+        */
+       void drag();
+
+       /**
+        * Drag the background by the delta offset.
+        * @param delta the drag offset in pixels.
+        */
+       void drag_by(const QPoint &delta);
+
+       /**
+        * Sets this item into the un-dragged state.
+        */
+       void drag_release();
+
+       /**
+        * Gets the items in the view widget.
+        */
+       std::vector< std::shared_ptr<pv::view::ViewItem> > items();
+
+       /**
+        * Handles touch begin update and end events.
+        * @param e the event that triggered this handler.
+        */
+       bool touch_event(QTouchEvent *e);
 
 private:
-       bool event(QEvent *event);
-       void mousePressEvent(QMouseEvent *event);
-       void mouseReleaseEvent(QMouseEvent *event);
-       void mouseMoveEvent(QMouseEvent *event);
+       void paintEvent(QPaintEvent *event);
+
        void mouseDoubleClickEvent(QMouseEvent * event);
        void wheelEvent(QWheelEvent *event);
-       bool touchEvent(QTouchEvent *e);
 
 private:
-       QPoint mouse_down_point_;
-       double mouse_down_offset_;
-       bool mouse_down_valid_;
+       double drag_offset_;
 
        double pinch_offset0_;
        double pinch_offset1_;