Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1051)

Unified Diff: third_party/WebKit/WebCore/rendering/RenderLayer.cpp

Issue 21165: Revert the merge. Mac build is mysteriously broken. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/WebCore/rendering/RenderLayer.cpp
===================================================================
--- third_party/WebKit/WebCore/rendering/RenderLayer.cpp (revision 9383)
+++ third_party/WebKit/WebCore/rendering/RenderLayer.cpp (working copy)
@@ -126,7 +126,7 @@
renderArena->free(*(size_t *)this, this);
}
-RenderLayer::RenderLayer(RenderBoxModelObject* renderer)
+RenderLayer::RenderLayer(RenderBox* renderer)
: m_renderer(renderer)
, m_parent(0)
, m_previous(0)
@@ -228,14 +228,6 @@
}
#endif // USE(ACCELERATED_COMPOSITING)
-void RenderLayer::setStaticY(int staticY)
-{
- if (m_staticY == staticY)
- return;
- m_staticY = staticY;
- renderer()->setChildNeedsLayout(true, false);
-}
-
void RenderLayer::updateLayerPositions(bool doFullRepaint, bool checkForRepaint)
{
if (doFullRepaint) {
@@ -270,7 +262,7 @@
// from updateScrollInfoAfterLayout().
ASSERT(!view->layoutStateEnabled());
- RenderBoxModelObject* repaintContainer = renderer()->containerForRepaint();
+ RenderBox* repaintContainer = renderer()->containerForRepaint();
IntRect newRect = renderer()->clippedOverflowRectForRepaint(repaintContainer);
IntRect newOutlineBox = renderer()->outlineBoundsForRepaint(repaintContainer);
if (checkForRepaint) {
@@ -324,10 +316,8 @@
}
if (hasTransform) {
- RenderBox* box = renderBox();
- ASSERT(box);
m_transform->reset();
- box->style()->applyTransform(*m_transform, box->borderBoxRect().size());
+ renderer()->style()->applyTransform(*m_transform, renderer()->borderBoxRect().size());
}
}
@@ -338,7 +328,7 @@
m_visibleContentStatusDirty = false;
m_hasVisibleContent = b;
if (m_hasVisibleContent) {
- RenderBoxModelObject* repaintContainer = renderer()->containerForRepaint();
+ RenderBox* repaintContainer = renderer()->containerForRepaint();
m_repaintRect = renderer()->clippedOverflowRectForRepaint(repaintContainer);
m_outlineBox = renderer()->outlineBoundsForRepaint(repaintContainer);
if (!isOverflowOnly())
@@ -428,30 +418,26 @@
// Clear our cached clip rect information.
clearClipRects();
- RenderBox* rendererBox = renderBox();
-
- int x = rendererBox ? rendererBox->x() : 0;
- int y = rendererBox ? rendererBox->y() : 0;
+ int x = renderer()->x();
+ int y = renderer()->y();
if (!renderer()->isPositioned() && renderer()->parent()) {
// We must adjust our position by walking up the render tree looking for the
// nearest enclosing object with a layer.
- RenderObject* curr = renderer()->parent();
+ RenderBox* curr = renderer()->parentBox();
while (curr && !curr->hasLayer()) {
- if (curr->isBox() && !curr->isTableRow()) {
+ if (!curr->isTableRow()) {
// Rows and cells share the same coordinate space (that of the section).
// Omit them when computing our xpos/ypos.
- RenderBox* currBox = toRenderBox(curr);
- x += currBox->x();
- y += currBox->y();
+ x += curr->x();
+ y += curr->y();
}
- curr = curr->parent();
+ curr = curr->parentBox();
}
- if (curr->isBox() && curr->isTableRow()) {
+ if (curr->isTableRow()) {
// Put ourselves into the row coordinate space.
- RenderBox* currBox = toRenderBox(curr);
- x -= currBox->x();
- y -= currBox->y();
+ x -= curr->x();
+ y -= curr->y();
}
}
@@ -470,7 +456,7 @@
positionedParent->subtractScrolledContentOffset(x, y);
if (renderer()->isPositioned() && positionedParent->renderer()->isRelPositioned() && positionedParent->renderer()->isRenderInline()) {
- IntSize offset = toRenderInline(positionedParent->renderer())->relativePositionedInlineOffset(toRenderBox(renderer()));
+ IntSize offset = toRenderInline(positionedParent->renderer())->relativePositionedInlineOffset(renderer());
x += offset.width();
y += offset.height();
}
@@ -486,15 +472,15 @@
IntRect lineBox = inlineFlow->linesBoundingBox();
setWidth(lineBox.width());
setHeight(lineBox.height());
- } else if (RenderBox* box = renderBox()) {
- setWidth(box->width());
- setHeight(box->height());
+ } else {
+ setWidth(renderer()->width());
+ setHeight(renderer()->height());
- if (!box->hasOverflowClip()) {
- if (box->overflowWidth() > box->width())
- setWidth(box->overflowWidth());
- if (box->overflowHeight() > box->height())
- setHeight(box->overflowHeight());
+ if (!renderer()->hasOverflowClip()) {
+ if (renderer()->overflowWidth() > renderer()->width())
+ setWidth(renderer()->overflowWidth());
+ if (renderer()->overflowHeight() > renderer()->height())
+ setHeight(renderer()->overflowHeight());
}
}
}
@@ -878,18 +864,14 @@
void RenderLayer::scrollToOffset(int x, int y, bool updateScrollbars, bool repaint)
{
- RenderBox* box = renderBox();
- if (!box)
- return;
-
- if (box->style()->overflowX() != OMARQUEE) {
+ if (renderer()->style()->overflowX() != OMARQUEE) {
if (x < 0) x = 0;
if (y < 0) y = 0;
// Call the scrollWidth/Height functions so that the dimensions will be computed if they need
// to be (for overflow:hidden blocks).
- int maxX = scrollWidth() - box->clientWidth();
- int maxY = scrollHeight() - box->clientHeight();
+ int maxX = scrollWidth() - renderer()->clientWidth();
+ int maxY = scrollHeight() - renderer()->clientHeight();
if (x > maxX) x = maxX;
if (y > maxY) y = maxY;
@@ -948,7 +930,7 @@
// Schedule the scroll DOM event.
if (view) {
if (FrameView* frameView = view->frameView())
- frameView->scheduleEvent(Event::create(eventNames().scrollEvent, false, false), renderer()->element());
+ frameView->scheduleEvent(Event::create(eventNames().scrollEvent, false, false), EventTargetNodeCast(renderer()->element()));
}
}
@@ -973,12 +955,10 @@
if (renderer()->hasOverflowClip() && !restrictedByLineClamp) {
// Don't scroll to reveal an overflow layer that is restricted by the -webkit-line-clamp property.
// This will prevent us from revealing text hidden by the slider in Safari RSS.
- RenderBox* box = renderBox();
- ASSERT(box);
- FloatPoint absPos = box->localToAbsolute();
- absPos.move(box->borderLeft(), box->borderTop());
+ FloatPoint absPos = renderer()->localToAbsolute();
+ absPos.move(renderer()->borderLeft(), renderer()->borderTop());
- IntRect layerBounds = IntRect(absPos.x() + scrollXOffset(), absPos.y() + scrollYOffset(), box->clientWidth(), box->clientHeight());
+ IntRect layerBounds = IntRect(absPos.x() + scrollXOffset(), absPos.y() + scrollYOffset(), renderer()->clientWidth(), renderer()->clientHeight());
IntRect exposeRect = IntRect(rect.x() + scrollXOffset(), rect.y() + scrollYOffset(), rect.width(), rect.height());
IntRect r = getRectToExpose(layerBounds, exposeRect, alignX, alignY);
@@ -997,7 +977,7 @@
newRect.setX(rect.x() - diffX);
newRect.setY(rect.y() - diffY);
}
- } else if (!parentLayer && renderer()->isBox() && renderBox()->canBeProgramaticallyScrolled(scrollToAnchor)) {
+ } else if (!parentLayer && renderer()->canBeProgramaticallyScrolled(scrollToAnchor)) {
if (frameView) {
if (renderer()->document() && renderer()->document()->ownerElement() && renderer()->document()->ownerElement()->renderer()) {
IntRect viewRect = frameView->visibleContentRect();
@@ -1257,7 +1237,6 @@
static IntRect resizerCornerRect(const RenderLayer* layer, const IntRect& bounds)
{
- ASSERT(layer->renderer()->isBox());
if (layer->renderer()->style()->resize() == RESIZE_NONE)
return IntRect();
return cornerRect(layer, bounds);
@@ -1265,19 +1244,16 @@
bool RenderLayer::scrollbarCornerPresent() const
{
- ASSERT(renderer()->isBox());
- return !scrollCornerRect(this, renderBox()->borderBoxRect()).isEmpty();
+ return !scrollCornerRect(this, renderer()->borderBoxRect()).isEmpty();
}
void RenderLayer::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect& rect)
{
IntRect scrollRect = rect;
- RenderBox* box = renderBox();
- ASSERT(box);
if (scrollbar == m_vBar.get())
- scrollRect.move(box->width() - box->borderRight() - box->width(), box->borderTop());
+ scrollRect.move(renderer()->width() - renderer()->borderRight() - scrollbar->width(), renderer()->borderTop());
else
- scrollRect.move(box->borderLeft(), box->height() - box->borderBottom() - scrollbar->height());
+ scrollRect.move(renderer()->borderLeft(), renderer()->height() - renderer()->borderBottom() - scrollbar->height());
renderer()->repaintRectangle(scrollRect);
}
@@ -1376,23 +1352,19 @@
if (!m_hBar && !m_vBar && (!renderer()->hasOverflowClip() || renderer()->style()->resize() == RESIZE_NONE))
return;
- RenderBox* box = renderBox();
- if (!box)
- return;
-
- IntRect borderBox = box->borderBoxRect();
+ IntRect borderBox = renderer()->borderBoxRect();
IntRect scrollCorner(scrollCornerRect(this, borderBox));
IntRect absBounds(borderBox.x() + tx, borderBox.y() + ty, borderBox.width(), borderBox.height());
if (m_vBar)
- m_vBar->setFrameRect(IntRect(absBounds.right() - box->borderRight() - m_vBar->width(),
- absBounds.y() + box->borderTop(),
+ m_vBar->setFrameRect(IntRect(absBounds.right() - renderer()->borderRight() - m_vBar->width(),
+ absBounds.y() + renderer()->borderTop(),
m_vBar->width(),
- absBounds.height() - (box->borderTop() + box->borderBottom()) - scrollCorner.height()));
+ absBounds.height() - (renderer()->borderTop() + renderer()->borderBottom()) - scrollCorner.height()));
if (m_hBar)
- m_hBar->setFrameRect(IntRect(absBounds.x() + box->borderLeft(),
- absBounds.bottom() - box->borderBottom() - m_hBar->height(),
- absBounds.width() - (box->borderLeft() + box->borderRight()) - scrollCorner.width(),
+ m_hBar->setFrameRect(IntRect(absBounds.x() + renderer()->borderLeft(),
+ absBounds.bottom() - renderer()->borderBottom() - m_hBar->height(),
+ absBounds.width() - (renderer()->borderLeft() + renderer()->borderRight()) - scrollCorner.width(),
m_hBar->height()));
if (m_scrollCorner)
@@ -1417,22 +1389,19 @@
void RenderLayer::computeScrollDimensions(bool* needHBar, bool* needVBar)
{
- RenderBox* box = renderBox();
- ASSERT(box);
-
m_scrollDimensionsDirty = false;
bool ltr = renderer()->style()->direction() == LTR;
- int clientWidth = box->clientWidth();
- int clientHeight = box->clientHeight();
+ int clientWidth = renderer()->clientWidth();
+ int clientHeight = renderer()->clientHeight();
- m_scrollLeftOverflow = ltr ? 0 : min(0, box->leftmostPosition(true, false) - box->borderLeft());
+ m_scrollLeftOverflow = ltr ? 0 : min(0, renderer()->leftmostPosition(true, false) - renderer()->borderLeft());
int rightPos = ltr ?
- box->rightmostPosition(true, false) - box->borderLeft() :
+ renderer()->rightmostPosition(true, false) - renderer()->borderLeft() :
clientWidth - m_scrollLeftOverflow;
- int bottomPos = renderer()->lowestPosition(true, false) - box->borderTop();
+ int bottomPos = renderer()->lowestPosition(true, false) - renderer()->borderTop();
m_scrollWidth = max(rightPos, clientWidth);
m_scrollHeight = max(bottomPos, clientHeight);
@@ -1464,7 +1433,7 @@
if (FrameView* frameView = renderer()->document()->view()) {
frameView->scheduleEvent(OverflowEvent::create(horizontalOverflowChanged, horizontalOverflow, verticalOverflowChanged, verticalOverflow),
- renderer()->element());
+ EventTargetNodeCast(renderer()->element()));
}
}
}
@@ -1472,20 +1441,16 @@
void
RenderLayer::updateScrollInfoAfterLayout()
{
- RenderBox* box = renderBox();
- if (!box)
- return;
-
m_scrollDimensionsDirty = true;
bool horizontalOverflow, verticalOverflow;
computeScrollDimensions(&horizontalOverflow, &verticalOverflow);
- if (box->style()->overflowX() != OMARQUEE) {
+ if (renderer()->style()->overflowX() != OMARQUEE) {
// Layout may cause us to be in an invalid scroll position. In this case we need
// to pull our scroll offsets back to the max (or push them up to the min).
- int newX = max(0, min(scrollXOffset(), scrollWidth() - box->clientWidth()));
- int newY = max(0, min(m_scrollY, scrollHeight() - box->clientHeight()));
+ int newX = max(0, min(scrollXOffset(), scrollWidth() - renderer()->clientWidth()));
+ int newY = max(0, min(m_scrollY, scrollHeight() - renderer()->clientHeight()));
if (newX != scrollXOffset() || newY != m_scrollY) {
RenderView* view = renderer()->view();
ASSERT(view);
@@ -1517,12 +1482,12 @@
setHasVerticalScrollbar(false);
// overflow:auto may need to lay out again if scrollbars got added/removed.
- bool scrollbarsChanged = (box->hasAutoHorizontalScrollbar() && haveHorizontalBar != horizontalOverflow) ||
- (box->hasAutoVerticalScrollbar() && haveVerticalBar != verticalOverflow);
+ bool scrollbarsChanged = (renderer()->hasAutoHorizontalScrollbar() && haveHorizontalBar != horizontalOverflow) ||
+ (renderer()->hasAutoVerticalScrollbar() && haveVerticalBar != verticalOverflow);
if (scrollbarsChanged) {
- if (box->hasAutoHorizontalScrollbar())
+ if (renderer()->hasAutoHorizontalScrollbar())
setHasHorizontalScrollbar(horizontalOverflow);
- if (box->hasAutoVerticalScrollbar())
+ if (renderer()->hasAutoVerticalScrollbar())
setHasVerticalScrollbar(verticalOverflow);
#if ENABLE(DASHBOARD_SUPPORT)
@@ -1548,14 +1513,14 @@
}
// If overflow:scroll is turned into overflow:auto a bar might still be disabled (Bug 11985).
- if (m_hBar && box->hasAutoHorizontalScrollbar())
+ if (m_hBar && renderer()->hasAutoHorizontalScrollbar())
m_hBar->setEnabled(true);
- if (m_vBar && box->hasAutoVerticalScrollbar())
+ if (m_vBar && renderer()->hasAutoVerticalScrollbar())
m_vBar->setEnabled(true);
// Set up the range (and page step/line step).
if (m_hBar) {
- int clientWidth = box->clientWidth();
+ int clientWidth = renderer()->clientWidth();
int pageStep = (clientWidth - cAmountToKeepWhenPaging);
if (pageStep < 0) pageStep = clientWidth;
m_hBar->setSteps(cScrollbarPixelsPerLineStep, pageStep);
@@ -1563,7 +1528,7 @@
m_hBar->setValue(scrollXOffset());
}
if (m_vBar) {
- int clientHeight = box->clientHeight();
+ int clientHeight = renderer()->clientHeight();
int pageStep = (clientHeight - cAmountToKeepWhenPaging);
if (pageStep < 0) pageStep = clientHeight;
m_vBar->setSteps(cScrollbarPixelsPerLineStep, pageStep);
@@ -1601,10 +1566,7 @@
void RenderLayer::paintScrollCorner(GraphicsContext* context, int tx, int ty, const IntRect& damageRect)
{
- RenderBox* box = renderBox();
- ASSERT(box);
-
- IntRect cornerRect = scrollCornerRect(this, box->borderBoxRect());
+ IntRect cornerRect = scrollCornerRect(this, renderer()->borderBoxRect());
IntRect absRect = IntRect(cornerRect.x() + tx, cornerRect.y() + ty, cornerRect.width(), cornerRect.height());
if (!absRect.intersects(damageRect))
return;
@@ -1627,10 +1589,7 @@
if (renderer()->style()->resize() == RESIZE_NONE)
return;
- RenderBox* box = renderBox();
- ASSERT(box);
-
- IntRect cornerRect = resizerCornerRect(this, box->borderBoxRect());
+ IntRect cornerRect = resizerCornerRect(this, renderer()->borderBoxRect());
IntRect absRect = IntRect(cornerRect.x() + tx, cornerRect.y() + ty, cornerRect.width(), cornerRect.height());
if (!absRect.intersects(damageRect))
return;
@@ -1669,12 +1628,9 @@
if (!renderer()->hasOverflowClip() || renderer()->style()->resize() == RESIZE_NONE)
return false;
- RenderBox* box = renderBox();
- ASSERT(box);
-
IntPoint localPoint = absoluteToContents(absolutePoint);
- IntRect localBounds(0, 0, box->width(), box->height());
+ IntRect localBounds(0, 0, renderer()->width(), renderer()->height());
return resizerCornerRect(this, localBounds).contains(localPoint);
}
@@ -1683,13 +1639,10 @@
if (!m_hBar && !m_vBar && (!renderer()->hasOverflowClip() || renderer()->style()->resize() == RESIZE_NONE))
return false;
- RenderBox* box = renderBox();
- ASSERT(box);
-
int x = 0;
int y = 0;
convertToLayerCoords(root(), x, y);
- IntRect absBounds(x, y, box->width(), box->height());
+ IntRect absBounds(x, y, renderer()->width(), renderer()->height());
IntRect resizeControlRect;
if (renderer()->style()->resize() != RESIZE_NONE) {
@@ -1701,10 +1654,7 @@
int resizeControlSize = max(resizeControlRect.height(), 0);
if (m_vBar) {
- IntRect vBarRect(absBounds.right() - box->borderRight() - m_vBar->width(),
- absBounds.y() + box->borderTop(),
- m_vBar->width(),
- absBounds.height() - (box->borderTop() + box->borderBottom()) - (m_hBar ? m_hBar->height() : resizeControlSize));
+ IntRect vBarRect(absBounds.right() - renderer()->borderRight() - m_vBar->width(), absBounds.y() + renderer()->borderTop(), m_vBar->width(), absBounds.height() - (renderer()->borderTop() + renderer()->borderBottom()) - (m_hBar ? m_hBar->height() : resizeControlSize));
if (vBarRect.contains(result.point())) {
result.setScrollbar(m_vBar.get());
return true;
@@ -1713,10 +1663,7 @@
resizeControlSize = max(resizeControlRect.width(), 0);
if (m_hBar) {
- IntRect hBarRect(absBounds.x() + box->borderLeft(),
- absBounds.bottom() - box->borderBottom() - m_hBar->height(),
- absBounds.width() - (box->borderLeft() + box->borderRight()) - (m_vBar ? m_vBar->width() : resizeControlSize),
- m_hBar->height());
+ IntRect hBarRect(absBounds.x() + renderer()->borderLeft(), absBounds.bottom() - renderer()->borderBottom() - m_hBar->height(), absBounds.width() - (renderer()->borderLeft() + renderer()->borderRight()) - (m_vBar ? m_vBar->width() : resizeControlSize), m_hBar->height());
if (hBarRect.contains(result.point())) {
result.setScrollbar(m_hBar.get());
return true;
@@ -1856,8 +1803,8 @@
calculateRects(rootLayer, paintDirtyRect, layerBounds, damageRect, clipRectToApply, outlineRect, temporaryClipRects);
int x = layerBounds.x();
int y = layerBounds.y();
- int tx = x - renderBoxX();
- int ty = y - renderBoxY();
+ int tx = x - renderer()->x();
+ int ty = y - renderer()->y();
// Ensure our lists are up-to-date.
updateLayerListsIfNeeded();
@@ -2079,8 +2026,8 @@
// Next we want to see if the mouse pos is inside the child RenderObjects of the layer.
if (fgRect.contains(hitTestPoint) &&
renderer()->hitTest(request, result, hitTestPoint,
- layerBounds.x() - renderBoxX(),
- layerBounds.y() - renderBoxY(),
+ layerBounds.x() - renderer()->x(),
+ layerBounds.y() - renderer()->y(),
HitTestDescendants)) {
// For positioned generated content, we might still not have a
// node by the time we get to the layer level, since none of
@@ -2109,8 +2056,8 @@
// Next we want to see if the mouse is inside this layer but not any of its children.
if (bgRect.contains(hitTestPoint) &&
renderer()->hitTest(request, result, hitTestPoint,
- layerBounds.x() - renderBoxX(),
- layerBounds.y() - renderBoxY(),
+ layerBounds.x() - renderer()->x(),
+ layerBounds.y() - renderer()->y(),
HitTestSelf)) {
if (!result.innerNode() || !result.innerNonSharedNode()) {
Node* e = enclosingElement();
@@ -2348,27 +2295,25 @@
int left = firstBox->xPos();
for (InlineRunBox* curr = firstBox->nextLineBox(); curr; curr = curr->nextLineBox())
left = min(left, curr->xPos());
- result = IntRect(left, top, width(), bottom - top);
+ result = IntRect(left, (top - renderer()->y()), width(), bottom - top);
} else if (renderer()->isTableRow()) {
// Our bounding box is just the union of all of our cells' border/overflow rects.
for (RenderObject* child = renderer()->firstChild(); child; child = child->nextSibling()) {
if (child->isTableCell()) {
IntRect bbox = toRenderBox(child)->borderBoxRect();
result.unite(bbox);
- IntRect overflowRect = renderBox()->overflowRect(false);
+ IntRect overflowRect = renderer()->overflowRect(false);
if (bbox != overflowRect)
result.unite(overflowRect);
}
}
} else {
- RenderBox* box = renderBox();
- ASSERT(box);
- if (box->hasMask())
- result = box->maskClipRect();
+ if (renderer()->hasMask())
+ result = renderer()->maskClipRect();
else {
- IntRect bbox = box->borderBoxRect();
+ IntRect bbox = renderer()->borderBoxRect();
result = bbox;
- IntRect overflowRect = box->overflowRect(false);
+ IntRect overflowRect = renderer()->overflowRect(false);
if (bbox != overflowRect)
result.unite(overflowRect);
}
« no previous file with comments | « third_party/WebKit/WebCore/rendering/RenderLayer.h ('k') | third_party/WebKit/WebCore/rendering/RenderLayerBacking.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698