People, try this new code for the update of the ruler, pretty please. :)
From 007b316578ae821ab06261a84b393f476cdfebfc Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <tomaz.canabr...@intel.com> Date: Sun, 1 Jun 2014 19:27:44 -0300 Subject: [PATCH] Simplify Ruler update code.
This should fix the infinite recursion on OSX and also clean a lot of code, wich is also very nice. <3 Signed-off-by: Tomaz Canabrava <tomaz.canabr...@intel.com> --- qt-ui/profile/ruleritem.cpp | 21 +++++---------------- qt-ui/profile/ruleritem.h | 3 +-- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/qt-ui/profile/ruleritem.cpp b/qt-ui/profile/ruleritem.cpp index 295d812..0bf97f9 100644 --- a/qt-ui/profile/ruleritem.cpp +++ b/qt-ui/profile/ruleritem.cpp @@ -9,6 +9,7 @@ #include <QPainter> #include <QGraphicsScene> #include <QGraphicsView> +#include <qgraphicssceneevent.h> #include <QDebug> #include <stdint.h> @@ -58,23 +59,11 @@ void RulerNodeItem2::recalculate() } } -QVariant RulerNodeItem2::itemChange(GraphicsItemChange change, const QVariant &value) +void RulerNodeItem2::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - // only run this if we actually have a ruler and are not adding or planning a dive - ProfileWidget2 *profWidget = NULL; - if (scene() && scene()->views().count()) - profWidget = qobject_cast<ProfileWidget2 *>(scene()->views().first()); - if (ruler && - profWidget && - !profWidget->isAddOrPlanner() && - change == ItemPositionHasChanged) { - recalculate(); - ruler->recalculate(); - } else { - if (profWidget && profWidget->isAddOrPlanner()) - qDebug() << "don't recalc ruler on Add/Plan"; - } - return QGraphicsEllipseItem::itemChange(change, value); + setPos(event->scenePos()); + recalculate(); + ruler->recalculate(); } RulerItem2::RulerItem2() : source(new RulerNodeItem2()), diff --git a/qt-ui/profile/ruleritem.h b/qt-ui/profile/ruleritem.h index 3eda332..5d144f2 100644 --- a/qt-ui/profile/ruleritem.h +++ b/qt-ui/profile/ruleritem.h @@ -21,8 +21,7 @@ public: void recalculate(); protected: - QVariant itemChange(GraphicsItemChange change, const QVariant &value); - + virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); private: struct plot_info pInfo; struct plot_data *entry; -- 1.9.3
_______________________________________________ subsurface mailing list subsurface@hohndel.org http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface