OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights |
3 * reserved. | 3 * reserved. |
4 * | 4 * |
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
6 * | 6 * |
7 * Other contributors: | 7 * Other contributors: |
8 * Robert O'Callahan <roc+@cs.cmu.edu> | 8 * Robert O'Callahan <roc+@cs.cmu.edu> |
9 * David Baron <dbaron@fas.harvard.edu> | 9 * David Baron <dbaron@fas.harvard.edu> |
10 * Christian Biesinger <cbiesinger@web.de> | 10 * Christian Biesinger <cbiesinger@web.de> |
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
786 // needs the m_has3DTransformedDescendant set. | 786 // needs the m_has3DTransformedDescendant set. |
787 if (preserves3D()) | 787 if (preserves3D()) |
788 return has3DTransform() || m_has3DTransformedDescendant; | 788 return has3DTransform() || m_has3DTransformedDescendant; |
789 | 789 |
790 return has3DTransform(); | 790 return has3DTransform(); |
791 } | 791 } |
792 | 792 |
793 void PaintLayer::updateLayerPosition() { | 793 void PaintLayer::updateLayerPosition() { |
794 LayoutPoint localPoint; | 794 LayoutPoint localPoint; |
795 | 795 |
| 796 bool didResize = false; |
796 if (layoutObject()->isInline() && layoutObject()->isLayoutInline()) { | 797 if (layoutObject()->isInline() && layoutObject()->isLayoutInline()) { |
797 LayoutInline* inlineFlow = toLayoutInline(layoutObject()); | 798 LayoutInline* inlineFlow = toLayoutInline(layoutObject()); |
798 IntRect lineBox = enclosingIntRect(inlineFlow->linesBoundingBox()); | 799 IntRect lineBox = enclosingIntRect(inlineFlow->linesBoundingBox()); |
799 m_size = lineBox.size(); | 800 m_size = lineBox.size(); |
800 } else if (LayoutBox* box = layoutBox()) { | 801 } else if (LayoutBox* box = layoutBox()) { |
801 m_size = pixelSnappedIntSize(box->size(), box->location()); | 802 IntSize newSize = pixelSnappedIntSize(box->size(), box->location()); |
| 803 didResize = newSize != m_size; |
| 804 m_size = newSize; |
802 localPoint.moveBy(box->topLeftLocation()); | 805 localPoint.moveBy(box->topLeftLocation()); |
803 } | 806 } |
804 | 807 |
805 if (!layoutObject()->isOutOfFlowPositioned() && | 808 if (!layoutObject()->isOutOfFlowPositioned() && |
806 !layoutObject()->isColumnSpanAll() && layoutObject()->parent()) { | 809 !layoutObject()->isColumnSpanAll() && layoutObject()->parent()) { |
807 // We must adjust our position by walking up the layout tree looking for the | 810 // We must adjust our position by walking up the layout tree looking for the |
808 // nearest enclosing object with a layer. | 811 // nearest enclosing object with a layer. |
809 LayoutObject* curr = layoutObject()->parent(); | 812 LayoutObject* curr = layoutObject()->parent(); |
810 while (curr && !curr->hasLayer()) { | 813 while (curr && !curr->hasLayer()) { |
811 if (curr->isBox() && !curr->isTableRow()) { | 814 if (curr->isBox() && !curr->isTableRow()) { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
849 LayoutSize newOffset = layoutObject()->offsetForInFlowPosition(); | 852 LayoutSize newOffset = layoutObject()->offsetForInFlowPosition(); |
850 if (m_rareData || !newOffset.isZero()) | 853 if (m_rareData || !newOffset.isZero()) |
851 ensureRareData().offsetForInFlowPosition = newOffset; | 854 ensureRareData().offsetForInFlowPosition = newOffset; |
852 localPoint.move(newOffset); | 855 localPoint.move(newOffset); |
853 } else if (m_rareData) { | 856 } else if (m_rareData) { |
854 m_rareData->offsetForInFlowPosition = LayoutSize(); | 857 m_rareData->offsetForInFlowPosition = LayoutSize(); |
855 } | 858 } |
856 | 859 |
857 m_location = localPoint; | 860 m_location = localPoint; |
858 | 861 |
| 862 if (m_scrollableArea && didResize) |
| 863 m_scrollableArea->visibleSizeChanged(); |
| 864 |
859 #if DCHECK_IS_ON() | 865 #if DCHECK_IS_ON() |
860 m_needsPositionUpdate = false; | 866 m_needsPositionUpdate = false; |
861 #endif | 867 #endif |
862 } | 868 } |
863 | 869 |
864 TransformationMatrix PaintLayer::perspectiveTransform() const { | 870 TransformationMatrix PaintLayer::perspectiveTransform() const { |
865 if (!layoutObject()->hasTransformRelatedProperty()) | 871 if (!layoutObject()->hasTransformRelatedProperty()) |
866 return TransformationMatrix(); | 872 return TransformationMatrix(); |
867 | 873 |
868 const ComputedStyle& style = layoutObject()->styleRef(); | 874 const ComputedStyle& style = layoutObject()->styleRef(); |
(...skipping 2354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3223 } | 3229 } |
3224 | 3230 |
3225 void showLayerTree(const blink::LayoutObject* layoutObject) { | 3231 void showLayerTree(const blink::LayoutObject* layoutObject) { |
3226 if (!layoutObject) { | 3232 if (!layoutObject) { |
3227 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); | 3233 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); |
3228 return; | 3234 return; |
3229 } | 3235 } |
3230 showLayerTree(layoutObject->enclosingLayer()); | 3236 showLayerTree(layoutObject->enclosingLayer()); |
3231 } | 3237 } |
3232 #endif | 3238 #endif |
OLD | NEW |