[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#638813: qtcreator: FTBFS: error: no matching function for call to 'qMin(double&, qreal)'



On Mon, Aug 22, 2011 at 05:05:39PM +0200, Sune Vuorela wrote:
> On Monday 22 August 2011 16:30:59 Adam Majer wrote:
> > On Mon, Aug 22, 2011 at 02:03:19PM +0900, Nobuhiro Iwamatsu wrote:
> > > ---
> > > a/src/plugins/qmldesigner/components/formeditor/snapper.cpp	2011-07-07
> > > 11:14:10.000000000 +0900 +++
> > > b/src/plugins/qmldesigner/components/formeditor/snapper.cpp	2011-07-07
> > > 11:14:50.000000000 +0900 @@ -495,10 +495,10 @@
> > > 
> > >      double minimumY =  std::numeric_limits<double>::max();
> > >      double maximumY =  std::numeric_limits<double>::min();
> > >      foreach(const QLineF &line, lineList) {
> > > 
> > > -        minimumY = qMin(minimumY, line.y1());
> > > -        minimumY = qMin(minimumY, line.y2());
> > > -        maximumY = qMax(maximumY, line.y1());
> > > -        maximumY = qMax(maximumY, line.y2());
> > > +        minimumY = qMin(minimumY, static_cast<qreal>(line.y1()));
> > > +        minimumY = qMin(minimumY, static_cast<qreal>(line.y2()));
> > > +        maximumY = qMax(maximumY, static_cast<qreal>(line.y1()));
> > > +        maximumY = qMax(maximumY, static_cast<qreal>(line.y2()));
> > > 
> > >      }
> > >      
> > >      double x(lineList.first().x1());
> > 
> > I'm assuming that the patch was to do static_cast<double>(line.y1())
> > instead of qreal. As is, it should nothing. The definition of QLineF
> > is,
> > 
> > qreal QLineF::y1() const;
> 
> event better would be to have 
>       qreal minimumY =  std::numeric_limits<qreal>::max();
>       qreal maximumY =  std::numeric_limits<qreal>::min();

Yes, but that may end up requiring other changes in the code. There
are going to be implicit conversions further down.

I'm just looking at the code and it seems that the problem was fixed
by casting to double in commit 30364a13. I've included it below,

commit 30364a130ea50380cadc90457e66e30f8d337bc0
Author: Marco Bubke <marco.bubke@nokia.com>
Date:   Thu Jul 21 13:26:39 2011 +0200

    QmlDesigner: Fix qreal is not double
    
    Task-number: QTCREATORBUG-5547
    
    Change-Id: Id23737f292de00232deac792d3db2bd36bda0efe
    Reviewed-on: http://codereview.qt.nokia.com/1947
    Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
    Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>

diff --git a/src/plugins/qmldesigner/components/formeditor/snapper.cpp b/src/plugins/qmldesigner/components/formeditor/snapper.cpp
index a0b816f..6f96747 100644
--- a/src/plugins/qmldesigner/components/formeditor/snapper.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/snapper.cpp
@@ -292,12 +292,12 @@ QLineF Snapper::createSnapLine(Qt::Orientation orientation,
                                const QRectF &itemRect) const
 {
     if (orientation == Qt::Horizontal) {
-        double lowerX(qMin(lowerLimit, itemRect.left()));
-        double upperX(qMax(upperLimit, itemRect.right()));
+        double lowerX(qMin(lowerLimit, double(itemRect.left())));
+        double upperX(qMax(upperLimit, double(itemRect.right())));
         return QLineF(lowerX, snapLine, upperX, snapLine);
     } else {
-        double lowerY(qMin(lowerLimit, itemRect.top()));
-        double upperY(qMax(upperLimit, itemRect.bottom()));
+        double lowerY(qMin(lowerLimit, double(itemRect.top())));
+        double upperY(qMax(upperLimit, double(itemRect.bottom())));
         return QLineF(snapLine, lowerY, snapLine, upperY);
     }
 }
@@ -477,10 +477,10 @@ static QLineF mergedHorizontalLine(const QList<QLineF> &lineList)
     double minimumX =  std::numeric_limits<double>::max();
     double maximumX =  std::numeric_limits<double>::min();
     foreach(const QLineF &line, lineList) {
-        minimumX = qMin(minimumX, line.x1());
-        minimumX = qMin(minimumX, line.x2());
-        maximumX = qMax(maximumX, line.x1());
-        maximumX = qMax(maximumX, line.x2());
+        minimumX = qMin(minimumX, double(line.x1()));
+        minimumX = qMin(minimumX, double(line.x2()));
+        maximumX = qMax(maximumX, double(line.x1()));
+        maximumX = qMax(maximumX, double(line.x2()));
     }
 
     double y(lineList.first().y1());
@@ -495,10 +495,10 @@ static QLineF mergedVerticalLine(const QList<QLineF> &lineList)
     double minimumY =  std::numeric_limits<double>::max();
     double maximumY =  std::numeric_limits<double>::min();
     foreach(const QLineF &line, lineList) {
-        minimumY = qMin(minimumY, line.y1());
-        minimumY = qMin(minimumY, line.y2());
-        maximumY = qMax(maximumY, line.y1());
-        maximumY = qMax(maximumY, line.y2());
+        minimumY = qMin(minimumY, double(line.y1()));
+        minimumY = qMin(minimumY, double(line.y2()));
+        maximumY = qMax(maximumY, double(line.y1()));
+        maximumY = qMax(maximumY, double(line.y2()));
     }
 
     double x(lineList.first().x1());


-- 
Adam Majer
adamm@zombino.com



Reply to: