OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
7 * Copyright (C) 2010 Google Inc. All rights reserved. | 7 * Copyright (C) 2010 Google Inc. All rights reserved. |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
322 if (!style()->left().isAuto()) { | 322 if (!style()->left().isAuto()) { |
323 constraints.setLeftOffset(floatValueForLength(style()->left(), constrain ingRect.width())); | 323 constraints.setLeftOffset(floatValueForLength(style()->left(), constrain ingRect.width())); |
324 constraints.addAnchorEdge(ViewportConstraints::AnchorEdgeLeft); | 324 constraints.addAnchorEdge(ViewportConstraints::AnchorEdgeLeft); |
325 } | 325 } |
326 | 326 |
327 if (!style()->right().isAuto()) { | 327 if (!style()->right().isAuto()) { |
328 constraints.setRightOffset(floatValueForLength(style()->right(), constra iningRect.width())); | 328 constraints.setRightOffset(floatValueForLength(style()->right(), constra iningRect.width())); |
329 constraints.addAnchorEdge(ViewportConstraints::AnchorEdgeRight); | 329 constraints.addAnchorEdge(ViewportConstraints::AnchorEdgeRight); |
330 } | 330 } |
331 | 331 |
332 float offsetsSum = constraints.rightOffset() + constraints.leftOffset(); | |
Julien - ping for review
2014/05/16 13:17:49
We should rename this to a better name: verticalOf
ostap
2014/05/22 04:33:19
Done.
| |
333 if (offsetsSum > containerContentRect.width().toFloat() | |
334 || offsetsSum + containerContentRect.width().toFloat() > constrainingRec t.width()) { | |
335 if (style()->isLeftToRightDirection()) { | |
336 constraints.setRightOffset(0); | |
337 constraints.removeAnchorEdge(ViewportConstraints::AnchorEdgeRight); | |
338 } else { | |
339 constraints.setLeftOffset(0); | |
340 constraints.removeAnchorEdge(ViewportConstraints::AnchorEdgeLeft); | |
Julien - ping for review
2014/05/16 13:17:49
It would be cleaner if we didn't set the anchor ed
ostap
2014/05/22 04:33:19
Done
| |
341 } | |
342 } | |
343 | |
332 if (!style()->top().isAuto()) { | 344 if (!style()->top().isAuto()) { |
333 constraints.setTopOffset(floatValueForLength(style()->top(), constrainin gRect.height())); | 345 constraints.setTopOffset(floatValueForLength(style()->top(), constrainin gRect.height())); |
334 constraints.addAnchorEdge(ViewportConstraints::AnchorEdgeTop); | 346 constraints.addAnchorEdge(ViewportConstraints::AnchorEdgeTop); |
335 } | 347 } |
336 | 348 |
337 if (!style()->bottom().isAuto()) { | 349 if (!style()->bottom().isAuto()) { |
338 constraints.setBottomOffset(floatValueForLength(style()->bottom(), const rainingRect.height() )); | 350 constraints.setBottomOffset(floatValueForLength(style()->bottom(), const rainingRect.height())); |
339 constraints.addAnchorEdge(ViewportConstraints::AnchorEdgeBottom); | 351 constraints.addAnchorEdge(ViewportConstraints::AnchorEdgeBottom); |
340 } | 352 } |
353 | |
354 offsetsSum = constraints.topOffset() + constraints.bottomOffset(); | |
355 if (offsetsSum > containerContentRect.height().toFloat() | |
356 || offsetsSum + containerContentRect.height().toFloat() > constrainingRe ct.height()) { | |
357 constraints.setBottomOffset(0); | |
358 constraints.removeAnchorEdge(ViewportConstraints::AnchorEdgeBottom); | |
359 } | |
Julien - ping for review
2014/05/16 13:17:49
Shouldn't you check if our writing mode is not bot
ostap
2014/05/22 04:33:19
The over-constrained behavior is done similar to p
| |
341 } | 360 } |
342 | 361 |
343 LayoutSize RenderBoxModelObject::stickyPositionOffset() const | 362 LayoutSize RenderBoxModelObject::stickyPositionOffset() const |
344 { | 363 { |
345 FloatRect constrainingRect; | 364 FloatRect constrainingRect; |
346 | 365 |
347 ASSERT(hasLayer()); | 366 ASSERT(hasLayer()); |
348 RenderLayer* enclosingClippingLayer = layer()->enclosingOverflowClipLayer(Ex cludeSelf); | 367 RenderLayer* enclosingClippingLayer = layer()->enclosingOverflowClipLayer(Ex cludeSelf); |
349 if (enclosingClippingLayer) { | 368 if (enclosingClippingLayer) { |
350 RenderBox* enclosingClippingBox = toRenderBox(enclosingClippingLayer->re nderer()); | 369 RenderBox* enclosingClippingBox = toRenderBox(enclosingClippingLayer->re nderer()); |
(...skipping 2473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2824 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); | 2843 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); |
2825 for (RenderObject* child = startChild; child && child != endChild; ) { | 2844 for (RenderObject* child = startChild; child && child != endChild; ) { |
2826 // Save our next sibling as moveChildTo will clear it. | 2845 // Save our next sibling as moveChildTo will clear it. |
2827 RenderObject* nextSibling = child->nextSibling(); | 2846 RenderObject* nextSibling = child->nextSibling(); |
2828 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); | 2847 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); |
2829 child = nextSibling; | 2848 child = nextSibling; |
2830 } | 2849 } |
2831 } | 2850 } |
2832 | 2851 |
2833 } // namespace WebCore | 2852 } // namespace WebCore |
OLD | NEW |