bool CanvasPicker::selectMarker(const QMouseEvent *e) { Graph *g = plot(); const QPoint point = e->pos(); QList<QwtPlotMarker *> lines = g->linesList(); foreach(QwtPlotMarker *i, lines){ ArrowMarker* mrkL = (ArrowMarker*)i; int d = qRound(mrkL->width() + floor(mrkL->headLength()*tan(M_PI*mrkL->headAngle()/180.0)+0.5)); double dist = mrkL->dist(point.x(), point.y()); if (dist <= d){ disableEditing(); if (e->modifiers() & Qt::ShiftModifier) { plot()->setSelectedMarker(i, true); return true; } else if (e->button() == Qt::RightButton) { mrkL->setEditable(false); g->setSelectedMarker(i, true); return true; } g->deselectMarker(); mrkL->setEditable(true); g->setSelectedMarker(i, false); d_editing_marker = mrkL; return true; } }