Fix drawing of tiled images. r=lars


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@19138 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 9c8ec2f..e610bae 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -2,6 +2,16 @@
 
         Reviewed by Lars
 
+        Fix drawing of tiled images.
+
+        * WebCore.pro:
+        * platform/graphics/qt/ImageQt.cpp:
+        (WebCore::BitmapImage::drawPattern):
+
+2007-01-26  Zack Rusin  <zack@kde.org>
+
+        Reviewed by Lars
+
         Fixing image loading - we decode QImages
         but render QPixmaps now. Implement Icon
         class
diff --git a/WebCore/platform/graphics/qt/ImageQt.cpp b/WebCore/platform/graphics/qt/ImageQt.cpp
index c431442..30e6a25 100644
--- a/WebCore/platform/graphics/qt/ImageQt.cpp
+++ b/WebCore/platform/graphics/qt/ImageQt.cpp
@@ -136,21 +136,27 @@
 
     QPixmap pixmap = *framePixmap;
     QRect tr = QRectF(tileRect).toRect();
-    if (tr.x() || tr.y() || tr.width() != pixmap.width() || tr.height() != pixmap.height())
+    if (tr.x() || tr.y() || tr.width() != pixmap.width() || tr.height() != pixmap.height()) {
         pixmap = pixmap.copy(tr);
-    
-    QBrush b(pixmap);
-    b.setMatrix(patternTransform);
-    
-    ctxt->save();
-    
-    // Set the compositing operation.
-    ctxt->setCompositeOperation(op);
-    QPainter* p = ctxt->platformContext();
-    p->setBrushOrigin(phase);
-    p->fillRect(tileRect, b);
-    
-    ctxt->restore();
+    }
+
+    if (patternTransform.isIdentity()) {
+        ctxt->save();
+        ctxt->setCompositeOperation(op);
+        QPainter* p = ctxt->platformContext();
+        p->setBrushOrigin(phase);
+        p->drawTiledPixmap(destRect, pixmap);
+        ctxt->restore();
+    } else {
+        QBrush b(pixmap);
+        b.setMatrix(patternTransform);
+        ctxt->save();
+        ctxt->setCompositeOperation(op);
+        QPainter* p = ctxt->platformContext();
+        p->setBrushOrigin(phase);
+        p->fillRect(destRect, b);
+        ctxt->restore();
+    }
 }
 
 void BitmapImage::checkForSolidColor()