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) 2007 David Smith (catfish.man@gmail.com) | 4 * (C) 2007 David Smith (catfish.man@gmail.com) |
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 // we are, estimate its logical top now. We need to know this up-fro
nt, to correctly | 719 // we are, estimate its logical top now. We need to know this up-fro
nt, to correctly |
720 // evaluate if we need to mark for relayout, and, if our estimate is
correct, we'll | 720 // evaluate if we need to mark for relayout, and, if our estimate is
correct, we'll |
721 // even be able to insert correct pagination struts on the first att
empt. | 721 // even be able to insert correct pagination struts on the first att
empt. |
722 LogicalExtentComputedValues computedValues; | 722 LogicalExtentComputedValues computedValues; |
723 positionedObject->computeLogicalHeight(positionedObject->logicalHeig
ht(), positionedObject->logicalTop(), computedValues); | 723 positionedObject->computeLogicalHeight(positionedObject->logicalHeig
ht(), positionedObject->logicalTop(), computedValues); |
724 logicalTopEstimate = computedValues.m_position; | 724 logicalTopEstimate = computedValues.m_position; |
725 positionedObject->setLogicalTop(logicalTopEstimate); | 725 positionedObject->setLogicalTop(logicalTopEstimate); |
726 } | 726 } |
727 | 727 |
728 if (!positionedObject->needsLayout()) | 728 if (!positionedObject->needsLayout()) |
729 positionedObject->markForPaginationRelayoutIfNeeded(layoutScope); | 729 markChildForPaginationRelayoutIfNeeded(*positionedObject, layoutScop
e); |
730 | 730 |
731 // FIXME: We should be able to do a r->setNeedsPositionedMovementLayout(
) here instead of a full layout. Need | 731 // FIXME: We should be able to do a r->setNeedsPositionedMovementLayout(
) here instead of a full layout. Need |
732 // to investigate why it does not trigger the correct invalidations in t
hat case. crbug.com/350756 | 732 // to investigate why it does not trigger the correct invalidations in t
hat case. crbug.com/350756 |
733 if (info == ForcedLayoutAfterContainingBlockMoved) | 733 if (info == ForcedLayoutAfterContainingBlockMoved) |
734 positionedObject->setNeedsLayout(LayoutInvalidationReason::AncestorM
oved, MarkOnlyThis); | 734 positionedObject->setNeedsLayout(LayoutInvalidationReason::AncestorM
oved, MarkOnlyThis); |
735 | 735 |
736 positionedObject->layoutIfNeeded(); | 736 positionedObject->layoutIfNeeded(); |
737 | 737 |
738 LayoutObject* parent = positionedObject->parent(); | 738 LayoutObject* parent = positionedObject->parent(); |
739 bool layoutChanged = false; | 739 bool layoutChanged = false; |
(...skipping 12 matching lines...) Expand all Loading... |
752 } | 752 } |
753 | 753 |
754 void LayoutBlock::markPositionedObjectsForLayout() | 754 void LayoutBlock::markPositionedObjectsForLayout() |
755 { | 755 { |
756 if (TrackedLayoutBoxListHashSet* positionedDescendants = positionedObjects()
) { | 756 if (TrackedLayoutBoxListHashSet* positionedDescendants = positionedObjects()
) { |
757 for (auto* descendant : *positionedDescendants) | 757 for (auto* descendant : *positionedDescendants) |
758 descendant->setChildNeedsLayout(); | 758 descendant->setChildNeedsLayout(); |
759 } | 759 } |
760 } | 760 } |
761 | 761 |
762 void LayoutBlock::markForPaginationRelayoutIfNeeded(SubtreeLayoutScope& layoutSc
ope) | |
763 { | |
764 ASSERT(!needsLayout()); | |
765 if (needsLayout()) | |
766 return; | |
767 | |
768 if (view()->layoutState()->pageLogicalHeightChanged() || (view()->layoutStat
e()->pageLogicalHeight() && view()->layoutState()->pageLogicalOffset(*this, logi
calTop()) != pageLogicalOffset())) | |
769 layoutScope.setChildNeedsLayout(this); | |
770 } | |
771 | |
772 void LayoutBlock::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffs
et) const | 762 void LayoutBlock::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffs
et) const |
773 { | 763 { |
774 BlockPainter(*this).paint(paintInfo, paintOffset); | 764 BlockPainter(*this).paint(paintInfo, paintOffset); |
775 } | 765 } |
776 | 766 |
777 void LayoutBlock::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& p
aintOffset) const | 767 void LayoutBlock::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& p
aintOffset) const |
778 { | 768 { |
779 BlockPainter(*this).paintChildren(paintInfo, paintOffset); | 769 BlockPainter(*this).paintChildren(paintInfo, paintOffset); |
780 } | 770 } |
781 | 771 |
(...skipping 1166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1948 | 1938 |
1949 return availableHeight; | 1939 return availableHeight; |
1950 } | 1940 } |
1951 | 1941 |
1952 bool LayoutBlock::hasDefiniteLogicalHeight() const | 1942 bool LayoutBlock::hasDefiniteLogicalHeight() const |
1953 { | 1943 { |
1954 return availableLogicalHeightForPercentageComputation() != LayoutUnit(-1); | 1944 return availableLogicalHeightForPercentageComputation() != LayoutUnit(-1); |
1955 } | 1945 } |
1956 | 1946 |
1957 } // namespace blink | 1947 } // namespace blink |
OLD | NEW |