| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 { | 237 { |
| 238 ASSERT_UNUSED(wasFixed, !wasFixed || *wasFixed == static_cast<bool>(mode & I
sFixed)); | 238 ASSERT_UNUSED(wasFixed, !wasFixed || *wasFixed == static_cast<bool>(mode & I
sFixed)); |
| 239 | 239 |
| 240 if (!paintInvalidationContainer && mode & UseTransforms && shouldUseTransfor
mFromContainer(0)) { | 240 if (!paintInvalidationContainer && mode & UseTransforms && shouldUseTransfor
mFromContainer(0)) { |
| 241 TransformationMatrix t; | 241 TransformationMatrix t; |
| 242 getTransformFromContainer(0, LayoutSize(), t); | 242 getTransformFromContainer(0, LayoutSize(), t); |
| 243 transformState.applyTransform(t); | 243 transformState.applyTransform(t); |
| 244 } | 244 } |
| 245 | 245 |
| 246 if ((mode & IsFixed) && m_frameView) { | 246 if ((mode & IsFixed) && m_frameView) { |
| 247 transformState.move(m_frameView->scrollOffsetForFixedPosition()); | 247 transformState.move(m_frameView->scrollOffsetForViewportConstrainedObjec
ts()); |
| 248 // IsFixed flag is only applicable within this RenderView. | 248 // IsFixed flag is only applicable within this RenderView. |
| 249 mode &= ~IsFixed; | 249 mode &= ~IsFixed; |
| 250 } | 250 } |
| 251 | 251 |
| 252 if (paintInvalidationContainer == this) | 252 if (paintInvalidationContainer == this) |
| 253 return; | 253 return; |
| 254 | 254 |
| 255 if (mode & TraverseDocumentBoundaries) { | 255 if (mode & TraverseDocumentBoundaries) { |
| 256 if (RenderObject* parentDocRenderer = frame()->ownerRenderer()) { | 256 if (RenderObject* parentDocRenderer = frame()->ownerRenderer()) { |
| 257 transformState.move(-frame()->view()->scrollOffset()); | 257 transformState.move(-frame()->view()->scrollOffset()); |
| 258 if (parentDocRenderer->isBox()) | 258 if (parentDocRenderer->isBox()) |
| 259 transformState.move(toRenderBox(parentDocRenderer)->contentBoxOf
fset()); | 259 transformState.move(toRenderBox(parentDocRenderer)->contentBoxOf
fset()); |
| 260 parentDocRenderer->mapLocalToContainer(paintInvalidationContainer, t
ransformState, mode, wasFixed, paintInvalidationState); | 260 parentDocRenderer->mapLocalToContainer(paintInvalidationContainer, t
ransformState, mode, wasFixed, paintInvalidationState); |
| 261 return; | 261 return; |
| 262 } | 262 } |
| 263 } | 263 } |
| 264 } | 264 } |
| 265 | 265 |
| 266 const RenderObject* RenderView::pushMappingToContainer(const RenderLayerModelObj
ect* ancestorToStopAt, RenderGeometryMap& geometryMap) const | 266 const RenderObject* RenderView::pushMappingToContainer(const RenderLayerModelObj
ect* ancestorToStopAt, RenderGeometryMap& geometryMap) const |
| 267 { | 267 { |
| 268 LayoutSize offsetForFixedPosition; | 268 LayoutSize offsetForFixedPosition; |
| 269 LayoutSize offset; | 269 LayoutSize offset; |
| 270 RenderObject* container = 0; | 270 RenderObject* container = 0; |
| 271 | 271 |
| 272 if (m_frameView) | 272 if (m_frameView) |
| 273 offsetForFixedPosition = LayoutSize(m_frameView->scrollOffsetForFixedPos
ition()); | 273 offsetForFixedPosition = LayoutSize(m_frameView->scrollOffsetForViewport
ConstrainedObjects()); |
| 274 | 274 |
| 275 if (geometryMap.mapCoordinatesFlags() & TraverseDocumentBoundaries) { | 275 if (geometryMap.mapCoordinatesFlags() & TraverseDocumentBoundaries) { |
| 276 if (RenderPart* parentDocRenderer = frame()->ownerRenderer()) { | 276 if (RenderPart* parentDocRenderer = frame()->ownerRenderer()) { |
| 277 offset = -LayoutSize(m_frameView->scrollOffset()); | 277 offset = -LayoutSize(m_frameView->scrollOffset()); |
| 278 offset += parentDocRenderer->contentBoxOffset(); | 278 offset += parentDocRenderer->contentBoxOffset(); |
| 279 container = parentDocRenderer; | 279 container = parentDocRenderer; |
| 280 } | 280 } |
| 281 } | 281 } |
| 282 | 282 |
| 283 // If a container was specified, and was not 0 or the RenderView, then we | 283 // If a container was specified, and was not 0 or the RenderView, then we |
| 284 // should have found it by now unless we're traversing to a parent document. | 284 // should have found it by now unless we're traversing to a parent document. |
| 285 ASSERT_ARG(ancestorToStopAt, !ancestorToStopAt || ancestorToStopAt == this |
| container); | 285 ASSERT_ARG(ancestorToStopAt, !ancestorToStopAt || ancestorToStopAt == this |
| container); |
| 286 | 286 |
| 287 if ((!ancestorToStopAt || container) && shouldUseTransformFromContainer(cont
ainer)) { | 287 if ((!ancestorToStopAt || container) && shouldUseTransformFromContainer(cont
ainer)) { |
| 288 TransformationMatrix t; | 288 TransformationMatrix t; |
| 289 getTransformFromContainer(container, LayoutSize(), t); | 289 getTransformFromContainer(container, LayoutSize(), t); |
| 290 geometryMap.push(this, t, false, false, false, true, offsetForFixedPosit
ion); | 290 geometryMap.push(this, t, false, false, false, true, offsetForFixedPosit
ion); |
| 291 } else { | 291 } else { |
| 292 geometryMap.push(this, offset, false, false, false, false, offsetForFixe
dPosition); | 292 geometryMap.push(this, offset, false, false, false, false, offsetForFixe
dPosition); |
| 293 } | 293 } |
| 294 | 294 |
| 295 return container; | 295 return container; |
| 296 } | 296 } |
| 297 | 297 |
| 298 void RenderView::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, TransformStat
e& transformState) const | 298 void RenderView::mapAbsoluteToLocalPoint(MapCoordinatesFlags mode, TransformStat
e& transformState) const |
| 299 { | 299 { |
| 300 if (mode & IsFixed && m_frameView) | 300 if (mode & IsFixed && m_frameView) |
| 301 transformState.move(m_frameView->scrollOffsetForFixedPosition()); | 301 transformState.move(m_frameView->scrollOffsetForViewportConstrainedObjec
ts()); |
| 302 | 302 |
| 303 if (mode & UseTransforms && shouldUseTransformFromContainer(0)) { | 303 if (mode & UseTransforms && shouldUseTransformFromContainer(0)) { |
| 304 TransformationMatrix t; | 304 TransformationMatrix t; |
| 305 getTransformFromContainer(0, LayoutSize(), t); | 305 getTransformFromContainer(0, LayoutSize(), t); |
| 306 transformState.applyTransform(t); | 306 transformState.applyTransform(t); |
| 307 } | 307 } |
| 308 } | 308 } |
| 309 | 309 |
| 310 void RenderView::computeSelfHitTestRects(Vector<LayoutRect>& rects, const Layout
Point&) const | 310 void RenderView::computeSelfHitTestRects(Vector<LayoutRect>& rects, const Layout
Point&) const |
| 311 { | 311 { |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 obj->mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect,
0); | 413 obj->mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect,
0); |
| 414 } | 414 } |
| 415 } | 415 } |
| 416 | 416 |
| 417 void RenderView::adjustViewportConstrainedOffset(LayoutRect& rect, ViewportConst
rainedPosition viewportConstraint) const | 417 void RenderView::adjustViewportConstrainedOffset(LayoutRect& rect, ViewportConst
rainedPosition viewportConstraint) const |
| 418 { | 418 { |
| 419 if (viewportConstraint != IsFixedPosition) | 419 if (viewportConstraint != IsFixedPosition) |
| 420 return; | 420 return; |
| 421 | 421 |
| 422 if (m_frameView) { | 422 if (m_frameView) { |
| 423 rect.move(m_frameView->scrollOffsetForFixedPosition()); | 423 rect.move(m_frameView->scrollOffsetForViewportConstrainedObjects()); |
| 424 | 424 |
| 425 // FIXME: Paint invalidation should happen after scroll updates, so ther
e should be no pending scroll delta. | 425 // FIXME: Paint invalidation should happen after scroll updates, so ther
e should be no pending scroll delta. |
| 426 // However, we still have paint invalidation during layout, so we can't
ASSERT for now. crbug.com/434950. | 426 // However, we still have paint invalidation during layout, so we can't
ASSERT for now. crbug.com/434950. |
| 427 // ASSERT(m_frameView->pendingScrollDelta().isZero()); | 427 // ASSERT(m_frameView->pendingScrollDelta().isZero()); |
| 428 // If we have a pending scroll, invalidate the previous scroll position. | 428 // If we have a pending scroll, invalidate the previous scroll position. |
| 429 if (!m_frameView->pendingScrollDelta().isZero()) | 429 if (!m_frameView->pendingScrollDelta().isZero()) |
| 430 rect.move(-LayoutSize(m_frameView->pendingScrollDelta())); | 430 rect.move(-LayoutSize(m_frameView->pendingScrollDelta())); |
| 431 } | 431 } |
| 432 } | 432 } |
| 433 | 433 |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 975 return viewWidth(IncludeScrollbars) / scale; | 975 return viewWidth(IncludeScrollbars) / scale; |
| 976 } | 976 } |
| 977 | 977 |
| 978 double RenderView::layoutViewportHeight() const | 978 double RenderView::layoutViewportHeight() const |
| 979 { | 979 { |
| 980 float scale = m_frameView ? m_frameView->frame().pageZoomFactor() : 1; | 980 float scale = m_frameView ? m_frameView->frame().pageZoomFactor() : 1; |
| 981 return viewHeight(IncludeScrollbars) / scale; | 981 return viewHeight(IncludeScrollbars) / scale; |
| 982 } | 982 } |
| 983 | 983 |
| 984 } // namespace blink | 984 } // namespace blink |
| OLD | NEW |