From eb20a7341827b5590fbd891ca1b82ea7ba37d679 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 4 Apr 2011 14:50:16 +0300 Subject: Fix QGradient stop with NaN position on Symbian. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The qbrush autotest was failing on Symbian, because gradient stops with NaN position cannot be inserted on Symbian. This is caused by the pos > 1 || pos < 0 check in setColorAt() which is incorrect on ARM as NaN > 1 will evaluate to true. Task-number: QTBUG-17874 Reviewed-by: Samuel Rødal --- src/gui/painting/qbrush.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp index dc61e34..8f965c2 100644 --- a/src/gui/painting/qbrush.cpp +++ b/src/gui/painting/qbrush.cpp @@ -49,6 +49,7 @@ #include "qdebug.h" #include #include "private/qstylehelper_p.h" +#include QT_BEGIN_NAMESPACE @@ -1360,13 +1361,14 @@ QGradient::QGradient() void QGradient::setColorAt(qreal pos, const QColor &color) { - if (pos > 1 || pos < 0) { + if ((pos > 1 || pos < 0) && !qIsNaN(pos)) { qWarning("QGradient::setColorAt: Color position must be specified in the range 0 to 1"); return; } int index = 0; - while (index < m_stops.size() && m_stops.at(index).first < pos) ++index; + if (!qIsNaN(pos)) + while (index < m_stops.size() && m_stops.at(index).first < pos) ++index; if (index < m_stops.size() && m_stops.at(index).first == pos) m_stops[index].second = color; -- cgit v0.12