##// 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 void LegendMarkerItem::mouseMoved(QPointF delta)
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 void LegendMarkerItem::mouseReleased(QPointF delta)
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 #include "moc_legendmarkeritem_p.cpp"
197 #include "moc_legendmarkeritem_p.cpp"
@@ -24,7 +24,7
24 QTCOMMERCIALCHART_BEGIN_NAMESPACE
24 QTCOMMERCIALCHART_BEGIN_NAMESPACE
25
25
26 MouseEventHandler::MouseEventHandler() :
26 MouseEventHandler::MouseEventHandler() :
27 m_pressedPos(0,0),
27 m_lastPos(0,0),
28 m_state(Idle),
28 m_state(Idle),
29 m_treshold(10)
29 m_treshold(10)
30 {
30 {
@@ -41,26 +41,28 void MouseEventHandler::setMoveTreshold(qreal treshold)
41
41
42 void MouseEventHandler::handleMousePressEvent(QGraphicsSceneMouseEvent* event)
42 void MouseEventHandler::handleMousePressEvent(QGraphicsSceneMouseEvent* event)
43 {
43 {
44 m_pressedPos = event->pos();
44 m_lastPos = event->screenPos();
45 m_state = Pressed;
45 m_state = Pressed;
46 event->accept();
46 event->accept();
47 }
47 }
48
48
49 void MouseEventHandler::handleMouseMoveEvent(QGraphicsSceneMouseEvent* event)
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 switch (m_state) {
53 switch (m_state) {
54 case Pressed: {
54 case Pressed: {
55 // calculate treshold. If enough, change to move state and send out move deltas.
55 // calculate treshold. If enough, change to move state and send out move deltas.
56 if (qAbs(delta.x()) > m_treshold || qAbs(delta.y()) > m_treshold) {
56 if (qAbs(delta.x()) > m_treshold || qAbs(delta.y()) > m_treshold) {
57 m_state = Moved;
57 m_state = Moved;
58 m_lastPos = event->screenPos();
58 mouseMoved(delta);
59 mouseMoved(delta);
59 }
60 }
60 event->accept();
61 event->accept();
61 break;
62 break;
62 }
63 }
63 case Moved: {
64 case Moved: {
65 m_lastPos = event->screenPos();
64 mouseMoved(delta);
66 mouseMoved(delta);
65 event->accept();
67 event->accept();
66 break;
68 break;
@@ -75,7 +77,8 void MouseEventHandler::handleMouseMoveEvent(QGraphicsSceneMouseEvent* event)
75
77
76 void MouseEventHandler::handleMouseReleaseEvent(QGraphicsSceneMouseEvent* event)
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 switch (m_state) {
83 switch (m_state) {
81 case Pressed:
84 case Pressed:
@@ -79,7 +79,7 public:
79 void handleMouseReleaseEvent(QGraphicsSceneMouseEvent* event);
79 void handleMouseReleaseEvent(QGraphicsSceneMouseEvent* event);
80
80
81 private:
81 private:
82 QPointF m_pressedPos;
82 QPointF m_lastPos;
83 State m_state;
83 State m_state;
84 qreal m_treshold;
84 qreal m_treshold;
85 };
85 };
General Comments 0
You need to be logged in to leave comments. Login now