From 6962205e2e8db1148bc418236652121c16341d68 Mon Sep 17 00:00:00 2001 From: Till Theato Date: Sat, 1 Jan 2011 12:28:48 +0000 Subject: [PATCH] =?utf8?q?B=C3=A9zier=20spline=20widget:=20Fix=20new=20poi?= =?utf8?q?nts=20not=20shown=20immediately=20when=20added=20close=20to=20ex?= =?utf8?q?isting=20points?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit svn path=/trunk/kdenlive/; revision=5230 --- src/beziercurve/beziersplinewidget.cpp | 2 -- src/beziercurve/cubicbezierspline.cpp | 11 ++++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/beziercurve/beziersplinewidget.cpp b/src/beziercurve/beziersplinewidget.cpp index f9761085..8f6eff0d 100644 --- a/src/beziercurve/beziersplinewidget.cpp +++ b/src/beziercurve/beziersplinewidget.cpp @@ -144,8 +144,6 @@ void BezierSplineWidget::mousePressEvent(QMouseEvent* event) po.h2 = QPointF(x+0.05, y+0.05); m_currentPointIndex = m_spline.addPoint(po); m_currentPointType = PTypeP; - if (m_currentPointIndex == -1) // x already in use - return; /*if (!d->jumpOverExistingPoints(newPoint, -1)) return;*/ } else { m_currentPointIndex = closestPointIndex; diff --git a/src/beziercurve/cubicbezierspline.cpp b/src/beziercurve/cubicbezierspline.cpp index 0671f72b..d2249332 100644 --- a/src/beziercurve/cubicbezierspline.cpp +++ b/src/beziercurve/cubicbezierspline.cpp @@ -128,7 +128,16 @@ int CubicBezierSpline::addPoint(const BPoint& point) keepSorted(); validatePoints(); m_validSpline = false; - return m_points.indexOf(point); + if (m_points.indexOf(point) == -1) { + // point changed during validation process + for (int i = 0; i < m_points.count(); ++i) { + // this condition should be sufficient, too + if (m_points.at(i).p == point.p) + return i; + } + } else { + return m_points.indexOf(point); + } } void CubicBezierSpline::setPrecision(int pre) -- 2.39.5