##// END OF EJS Templates
fixed mouse event delta handling
sauimone -
r2188:ad6cfe65c3e1
parent child
Show More
@@ -182,12 +182,16 void LegendMarkerItem::mouseClicked()
182 182
183 183 void LegendMarkerItem::mouseMoved(QPointF delta)
184 184 {
185 m_marker->m_legend->d_ptr->setOffset(-delta.x(), -delta.y());
185 qreal dx = m_marker->m_legend->d_ptr->offset().x() - delta.x();
186 qreal dy = m_marker->m_legend->d_ptr->offset().y() - delta.y();
187 m_marker->m_legend->d_ptr->setOffset(dx, dy);
186 188 }
187 189
188 190 void LegendMarkerItem::mouseReleased(QPointF delta)
189 191 {
190 m_marker->m_legend->d_ptr->setOffset(-delta.x(), -delta.y());
192 qreal dx = m_marker->m_legend->d_ptr->offset().x() - delta.x();
193 qreal dy = m_marker->m_legend->d_ptr->offset().y() - delta.y();
194 m_marker->m_legend->d_ptr->setOffset(dx, dy);
191 195 }
192 196
193 197 #include "moc_legendmarkeritem_p.cpp"
@@ -24,7 +24,7
24 24 QTCOMMERCIALCHART_BEGIN_NAMESPACE
25 25
26 26 MouseEventHandler::MouseEventHandler() :
27 m_pressedPos(0,0),
27 m_lastPos(0,0),
28 28 m_state(Idle),
29 29 m_treshold(10)
30 30 {
@@ -41,26 +41,28 void MouseEventHandler::setMoveTreshold(qreal treshold)
41 41
42 42 void MouseEventHandler::handleMousePressEvent(QGraphicsSceneMouseEvent* event)
43 43 {
44 m_pressedPos = event->pos();
44 m_lastPos = event->screenPos();
45 45 m_state = Pressed;
46 46 event->accept();
47 47 }
48 48
49 49 void MouseEventHandler::handleMouseMoveEvent(QGraphicsSceneMouseEvent* event)
50 50 {
51 QPointF delta = event->pos() - m_pressedPos;
51 QPointF delta = event->screenPos() - m_lastPos;
52 52
53 53 switch (m_state) {
54 54 case Pressed: {
55 55 // calculate treshold. If enough, change to move state and send out move deltas.
56 56 if (qAbs(delta.x()) > m_treshold || qAbs(delta.y()) > m_treshold) {
57 57 m_state = Moved;
58 m_lastPos = event->screenPos();
58 59 mouseMoved(delta);
59 60 }
60 61 event->accept();
61 62 break;
62 63 }
63 64 case Moved: {
65 m_lastPos = event->screenPos();
64 66 mouseMoved(delta);
65 67 event->accept();
66 68 break;
@@ -75,7 +77,8 void MouseEventHandler::handleMouseMoveEvent(QGraphicsSceneMouseEvent* event)
75 77
76 78 void MouseEventHandler::handleMouseReleaseEvent(QGraphicsSceneMouseEvent* event)
77 79 {
78 QPointF delta = event->pos() - m_pressedPos;
80 QPointF delta = event->screenPos() - m_lastPos;
81 m_lastPos = event->screenPos();
79 82
80 83 switch (m_state) {
81 84 case Pressed:
@@ -79,7 +79,7 public:
79 79 void handleMouseReleaseEvent(QGraphicsSceneMouseEvent* event);
80 80
81 81 private:
82 QPointF m_pressedPos;
82 QPointF m_lastPos;
83 83 State m_state;
84 84 qreal m_treshold;
85 85 };
General Comments 0
You need to be logged in to leave comments. Login now