[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

hyatt hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:41:11 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 837eb36ed2fca8a85d4a92b263a3f9c7a380c258
Author: hyatt <hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri May 21 22:17:10 2004 +0000

    	Fix for 3663644, repaints don't occur when the .innerHTML of a positioned element is changed.
    
            Reviewed by john
    
            * khtml/rendering/bidi.cpp:
            (khtml::RenderBlock::layoutInlineChildren):
            * khtml/rendering/render_layer.h:
            (khtml::RenderLayer::repaintRect):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@6664 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 17182d4..09f3615 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,14 @@
+2004-05-21  David Hyatt  <hyatt at apple.com>
+
+	Fix for 3663644, repaints don't occur when the .innerHTML of a positioned element is changed.
+	
+        Reviewed by john
+
+        * khtml/rendering/bidi.cpp:
+        (khtml::RenderBlock::layoutInlineChildren):
+        * khtml/rendering/render_layer.h:
+        (khtml::RenderLayer::repaintRect):
+
 === Safari-141 ===
 
 2004-05-21  Darin Adler  <darin at apple.com>
diff --git a/WebCore/khtml/rendering/bidi.cpp b/WebCore/khtml/rendering/bidi.cpp
index 300589c..d5490cb 100644
--- a/WebCore/khtml/rendering/bidi.cpp
+++ b/WebCore/khtml/rendering/bidi.cpp
@@ -25,6 +25,8 @@
 #include "render_block.h"
 #include "render_text.h"
 #include "render_arena.h"
+#include "render_canvas.h"
+#include "khtmlview.h"
 #include "xml/dom_docimpl.h"
 
 #include "kdebug.h"
@@ -1362,9 +1364,19 @@ QRect RenderBlock::layoutInlineChildren(bool relayoutChildren)
         if (hasFloat)
             fullLayout = true; // FIXME: Will need to find a way to optimize floats some day.
         
-        if (fullLayout && !selfNeedsLayout())
+        if (fullLayout && !selfNeedsLayout()) {
             setNeedsLayout(true, false);  // Mark ourselves as needing a full layout. This way we'll repaint like
                                           // we're supposed to.
+            if (!document()->view()->needsFullRepaint() && m_layer) {
+                // Because we waited until we were already inside layout to discover
+                // that the block really needed a full layout, we missed our chance to repaint the layer
+                // before layout started.  Luckily the layer has cached the repaint rect for its original
+                // position and size, and so we can use that to make a repaint happen now.
+                RenderCanvas* c = canvas();
+                if (c && !c->printingMode())
+                    c->repaintViewRectangle(m_layer->repaintRect());
+            }
+        }
 
         BidiContext *startEmbed;
         if( style()->direction() == LTR ) {
diff --git a/WebCore/khtml/rendering/render_layer.h b/WebCore/khtml/rendering/render_layer.h
index 652cc65..df40d29 100644
--- a/WebCore/khtml/rendering/render_layer.h
+++ b/WebCore/khtml/rendering/render_layer.h
@@ -248,6 +248,8 @@ public:
     
     void updateHoverActiveState(RenderObject::NodeInfo& info);
     
+    QRect repaintRect() const { return m_repaintRect; }
+
     void detach(RenderArena* renderArena);
 
      // Overloaded new operator.  Derived classes must override operator new

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list