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

Reply via email to