From e2ea640cbe1535bbf6b79349c77eeaac4d062e8d Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Thu, 8 Jan 2015 14:43:32 +0000 Subject: [PATCH] Fix underMouse for LTM legend curve toggle .. underMouse() seems to be dependant upon enter/leave events and is unreliable as a result. --- src/LTMPlot.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/LTMPlot.cpp b/src/LTMPlot.cpp index 9243e2c90..d3df421bc 100644 --- a/src/LTMPlot.cpp +++ b/src/LTMPlot.cpp @@ -2845,16 +2845,18 @@ LTMPlot::eventFilter(QObject *obj, QEvent *event) { // when clicking on a legend item, toggle if the curve is visible - if (event->type() == QEvent::MouseButtonPress) { + if (obj == legend() && event->type() == QEvent::MouseButtonPress) { bool replotNeeded = false; QwtLegend *l = static_cast(this->legend()); + QPoint pos = QCursor::pos(); foreach(QwtPlotCurve *p, curves) { foreach (QWidget *w, l->legendWidgets(itemToInfo(p))) { - if (w->underMouse()) { - //XXX this is a bit broken on a Mac (at least) - //XXX qDebug()<<"under mouse="<(w)->text().text(); + if (QRect(l->mapToGlobal(w->geometry().topLeft()), + l->mapToGlobal(w->geometry().bottomRight())).contains(pos)) { + + //qDebug()<<"under mouse="<(w)->text().text(); for(int m=0; m< settings->metrics.count(); m++) { if (settings->metrics[m].curve == p) { settings->metrics[m].hidden = !settings->metrics[m].hidden;