[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.0/kdelibs/khtml/rendering
From:       Germain Garand <germain () ebooksfrance ! org>
Date:       2008-05-28 8:00:48
Message-ID: 1211961648.388671.15593.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 813596 by ggarand:

Make proper versioning for those Qt 4.4 workarounds.
They are not compatible with Qt 4.3.

Runtime detection logic by Maksim Orlovich.



 M  +16 -5     render_replaced.cpp  


--- branches/KDE/4.0/kdelibs/khtml/rendering/render_replaced.cpp #813595:813596
@@ -584,6 +584,14 @@
       }
 }
 
+static bool qtVersionDetected = false;
+static bool qt43;
+
+static void detectQtVersion() {
+    qtVersionDetected = true;
+    qt43 = QString::fromLatin1(qVersion()).startsWith("4.3");
+}
+
 static void copyWidget(const QRect& r, QPainter *p, QWidget *widget, int tx, int ty, \
bool buffered = false)  {
     if (r.isNull() || r.isEmpty() )
@@ -628,15 +636,16 @@
     //
     // Testcase: paintEvent(...) { QPainter p(this); aChildWidget->render( \
aPixmapTarget, ...); }  //
-    p->end();
+    if (!qt43 || !buffered)
+        p->end();
 
     setInPaintEventFlag( widget, false );
 
-    widget->render( d, (buffered ? QPoint(0,0) : thePoint) + r.topLeft(), r);
+    widget->render( d, (buffered ? QPoint(0,0) : thePoint) + (qt43 ? QPoint(0,0) : \
r.topLeft()), r);  
     setInPaintEventFlag( widget );
 
-//    if (!buffered) {
+    if (!qt43 || !buffered) {
         p->begin(x);
         p->setWorldTransform(t);
         p->setWindow(w);
@@ -649,7 +658,7 @@
             p->setOpacity(op);
         p->setPen(pen);
         p->setBrush(brush);
-//    } else {
+    }
     if (buffered) {
         // transfer results
         QPoint off(r.x(), r.y());
@@ -667,7 +676,9 @@
     //    can't use QWidget::render to directly paint widgets on the view anymore.
     //    Results are unreliable for subrects, leaving blank squares. (cf. kde \
#158607)  //
-    bool buffered = true; // p->combinedMatrix().m22() != 1.0 || \
(p->device()->devType() == QInternal::Printer); +    if (!qtVersionDetected)
+        detectQtVersion();
+    bool buffered = !qt43 || p->combinedMatrix().m22() != 1.0 || \
(p->device()->devType() == QInternal::Printer);  
     QRect rr = pI.r;
     rr.translate(-tx, -ty);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic