]> Git trees. - libqmvoc.git/commitdiff
improve a bit
authorPino Toscano <pino@kde.org>
Sat, 17 Feb 2007 17:27:12 +0000 (17:27 +0000)
committerPino Toscano <pino@kde.org>
Sat, 17 Feb 2007 17:27:12 +0000 (17:27 +0000)
svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=634584

kdeeduplot/kplotwidget.cpp

index 71efdcf019774b205a9bb49d200e7e479e2efd1f..09f0a639366bafabba7c4ff1556a6f42ac20d291 100644 (file)
@@ -447,10 +447,16 @@ void KPlotWidget::placeLabel( QPainter *painter, KPlotPoint *pp ) {
        int ix0 = int( 100.0*( pos.x() - d->pixRect.x() )/d->pixRect.width() );
        int iy0 = int( 100.0*( pos.y() - d->pixRect.y() )/d->pixRect.height() );
 
-       for ( int ix=ix0-20; ix<ix0+20; ix++ ) {
-               for ( int iy=iy0-20; iy<iy0+20; iy++ ) {
-                       if ( ( ix >= 0 && ix < 100 ) && ( iy >= 0 && iy < 100 ) ) {
-                               QRectF labelRect = painter->boundingRect( QRectF( d->px[ix], d->py[iy], 1, 1 ), textFlags, pp->label() );
+    QFontMetricsF fm( painter->font(), painter->device() );
+    int xmin = qMax( ix0 - 20, 0 );
+    int xmax = qMin( ix0 + 20, 100 );
+    int ymin = qMax( iy0 - 20, 0 );
+    int ymax = qMin( iy0 + 20, 100 );
+    for ( int ix = xmin; ix < xmax; ++ix )
+    {
+        for ( int iy = ymin; iy < ymax; ++iy )
+        {
+            QRectF labelRect = fm.boundingRect( QRectF( d->px[ix], d->py[iy], 1, 1 ), textFlags, pp->label() );
                                //Add some padding to labelRect
                                labelRect.adjust( -2, -2, 2, 2 );
 
@@ -462,9 +468,8 @@ void KPlotWidget::placeLabel( QPainter *painter, KPlotPoint *pp ) {
                                        bestCost = cost;
                                        rbest = r;
                                }
-                       }
-               }
-       }
+        }
+    }
 
        if ( ! bestRect.isNull() ) {
                painter->drawText( bestRect, textFlags, pp->label() );