|
Lines 993-1007
LayoutRect RenderInline::clippedOverflowRectForRepaint(RenderBoxModelObject* rep
a/Source/WebCore/rendering/RenderInline.cpp_sec1
|
| 993 |
if (cb->hasColumns()) |
993 |
if (cb->hasColumns()) |
| 994 |
cb->adjustRectForColumns(repaintRect); |
994 |
cb->adjustRectForColumns(repaintRect); |
| 995 |
|
995 |
|
| 996 |
if (cb->hasOverflowClip()) { |
996 |
if (cb->hasOverflowClip()) |
| 997 |
// cb->height() is inaccurate if we're in the middle of a layout of |cb|, so use the |
997 |
cb->applyCachedClipAndScrollOffsetForRepaint(repaintRect); |
| 998 |
// layer's size instead. Even if the layer's size is wrong, the layer itself will repaint |
|
|
| 999 |
// anyway if its size does change. |
| 1000 |
repaintRect.move(-cb->scrolledContentOffset()); // For overflow:auto/scroll/hidden. |
| 1001 |
|
| 1002 |
LayoutRect boxRect(LayoutPoint(), cb->cachedSizeForOverflowClip()); |
| 1003 |
repaintRect.intersect(boxRect); |
| 1004 |
} |
| 1005 |
|
998 |
|
| 1006 |
cb->computeRectForRepaint(repaintContainer, repaintRect); |
999 |
cb->computeRectForRepaint(repaintContainer, repaintRect); |
| 1007 |
|
1000 |
|
|
Lines 1073-1093
void RenderInline::computeRectForRepaint(RenderBoxModelObject* repaintContainer,
a/Source/WebCore/rendering/RenderInline.cpp_sec2
|
| 1073 |
|
1066 |
|
| 1074 |
// FIXME: We ignore the lightweight clipping rect that controls use, since if |o| is in mid-layout, |
1067 |
// FIXME: We ignore the lightweight clipping rect that controls use, since if |o| is in mid-layout, |
| 1075 |
// its controlClipRect will be wrong. For overflow clip we use the values cached by the layer. |
1068 |
// its controlClipRect will be wrong. For overflow clip we use the values cached by the layer. |
|
|
1069 |
rect.setLocation(topLeft); |
| 1076 |
if (o->hasOverflowClip()) { |
1070 |
if (o->hasOverflowClip()) { |
| 1077 |
RenderBox* containerBox = toRenderBox(o); |
1071 |
RenderBox* containerBox = toRenderBox(o); |
| 1078 |
|
1072 |
containerBox->applyCachedClipAndScrollOffsetForRepaint(rect); |
| 1079 |
// o->height() is inaccurate if we're in the middle of a layout of |o|, so use the |
|
|
| 1080 |
// layer's size instead. Even if the layer's size is wrong, the layer itself will repaint |
| 1081 |
// anyway if its size does change. |
| 1082 |
topLeft -= containerBox->scrolledContentOffset(); // For overflow:auto/scroll/hidden. |
| 1083 |
|
| 1084 |
LayoutRect repaintRect(topLeft, rect.size()); |
| 1085 |
LayoutRect boxRect(LayoutPoint(), containerBox->cachedSizeForOverflowClip()); |
| 1086 |
rect = intersection(repaintRect, boxRect); |
| 1087 |
if (rect.isEmpty()) |
1073 |
if (rect.isEmpty()) |
| 1088 |
return; |
1074 |
return; |
| 1089 |
} else |
1075 |
} |
| 1090 |
rect.setLocation(topLeft); |
|
|
| 1091 |
|
1076 |
|
| 1092 |
if (containerSkipped) { |
1077 |
if (containerSkipped) { |
| 1093 |
// If the repaintContainer is below o, then we need to map the rect into repaintContainer's coordinates. |
1078 |
// If the repaintContainer is below o, then we need to map the rect into repaintContainer's coordinates. |