Several fixes preparing for the incremental repainting patch to be enabled.
(1) Make layers update their positions after layout instead of during layout or
during painting.
(2) Fix a regression from the overflow:hidden body quirk landing. Make sure repaint()
understands that quirk exists and avoids clipping when it shouldn't.
(3) Fix a regression from the scrollbar improvements. The vertical scrollbar repainted
on every layout.
(4) Make sure outside list bullets are repainted when a list item needs to repaint.
(5) A whole bunch of INCREMENTAL_REPAINTING code that isn't turned on yet.
Reviewed by kocienda
* khtml/khtmlview.cpp:
(KHTMLViewPrivate::KHTMLViewPrivate):
(KHTMLViewPrivate::reset):
(KHTMLView::resetScrollBars):
(KHTMLView::needsFullRepaint):
* khtml/khtmlview.h:
* khtml/rendering/bidi.cpp:
(khtml::RenderBlock::layoutInlineChildren):
* khtml/rendering/render_block.cpp:
(khtml::RenderBlock::layoutBlock):
(khtml::RenderBlock::layoutBlockChildren):
(khtml::RenderBlock::getAbsoluteRepaintRectIncludingFloats):
(khtml::RenderBlock::repaintFloatingDescendants):
(khtml::RenderBlock::repaintObjectsBeforeLayout):
* khtml/rendering/render_block.h:
* khtml/rendering/render_box.cpp:
(RenderBox::computeAbsoluteRepaintRect):
(RenderBox::repaintDuringLayoutIfMoved):
* khtml/rendering/render_box.h:
* khtml/rendering/render_canvas.cpp:
(RenderCanvas::layout):
* khtml/rendering/render_canvas.h:
(khtml::RenderCanvas::hasOverhangingFloats):
* khtml/rendering/render_flexbox.cpp:
(khtml::RenderFlexibleBox::layoutBlock):
(khtml::RenderFlexibleBox::layoutHorizontalBox):
(khtml::RenderFlexibleBox::layoutVerticalBox):
(khtml::RenderFlexibleBox::placeChild):
* khtml/rendering/render_flexbox.h:
* khtml/rendering/render_flow.cpp:
(RenderFlow::getAbsoluteRepaintRect):
* khtml/rendering/render_image.cpp:
(RenderImage::setPixmap):
(RenderImage::layout):
* khtml/rendering/render_layer.cpp:
(RenderLayer::RenderLayer):
(RenderLayer::computeRepaintRects):
(RenderLayer::updateLayerPositions):
(RenderLayer::updateLayerPosition):
(RenderLayer::checkScrollbarsAfterLayout):
(RenderLayer::paintLayer):
(RenderLayer::calculateClipRects):
(RenderLayer::calculateRects):
* khtml/rendering/render_layer.h:
(khtml::RenderLayer::relativePositionOffset):
* khtml/rendering/render_list.cpp:
(RenderListItem::getAbsoluteRepaintRect):
* khtml/rendering/render_list.h:
(khtml::RenderListMarker::listImage):
* khtml/rendering/render_object.cpp:
(RenderObject::repaint):
(RenderObject::repaintRectangle):
(RenderObject::repaintAfterLayoutIfNeeded):
(RenderObject::repaintDuringLayoutIfMoved):
(RenderObject::repaintFloatingDescendants):
(RenderObject::checkForRepaintDuringLayout):
(RenderObject::repaintObjectsBeforeLayout):
(RenderObject::getAbsoluteRepaintRectIncludingFloats):
(RenderObject::container):
* khtml/rendering/render_object.h:
* khtml/rendering/render_table.cpp:
(RenderTable::layout):
* kwq/KWQKHTMLPart.mm:
(KWQKHTMLPart::passWidgetMouseDownEventToWidget):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@5141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/khtml/rendering/bidi.cpp b/WebCore/khtml/rendering/bidi.cpp
index 88c0ac1..cb00da7 100644
--- a/WebCore/khtml/rendering/bidi.cpp
+++ b/WebCore/khtml/rendering/bidi.cpp
@@ -1301,10 +1301,18 @@
else
o->layoutIfNeeded();
}
- else if(o->isText()) // FIXME: Should be able to combine deleteLineBoxes/Runs
+ else if(o->isText()) { // FIXME: Should be able to combine deleteLineBoxes/Runs
static_cast<RenderText *>(o)->deleteRuns();
- else if (o->isInlineFlow() && !endOfInline)
+#ifdef INCREMENTAL_REPAINTING
+ o->setNeedsLayout(false);
+#endif
+ }
+ else if (o->isInlineFlow() && !endOfInline) {
static_cast<RenderFlow*>(o)->deleteLineBoxes();
+#ifdef INCREMENTAL_REPAINTING
+ o->setNeedsLayout(false);
+#endif
+ }
o = Bidinext( this, o, bidi, false, &endOfInline);
}