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

Side by Side Diff: Source/core/rendering/RenderBox.h

Issue 802813003: Skip PositionedMovementLayout when descendants depend on element's height (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Updated Created 5 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderBlock.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. 4 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 virtual LayoutRect controlClipRect(const LayoutPoint&) const { return Layout Rect(); } 517 virtual LayoutRect controlClipRect(const LayoutPoint&) const { return Layout Rect(); }
518 518
519 virtual void paintObject(const PaintInfo&, const LayoutPoint&) { ASSERT_NOT_ REACHED(); } 519 virtual void paintObject(const PaintInfo&, const LayoutPoint&) { ASSERT_NOT_ REACHED(); }
520 virtual void paintBoxDecorationBackground(const PaintInfo&, const LayoutPoin t&); 520 virtual void paintBoxDecorationBackground(const PaintInfo&, const LayoutPoin t&);
521 virtual void paintMask(const PaintInfo&, const LayoutPoint&); 521 virtual void paintMask(const PaintInfo&, const LayoutPoint&);
522 virtual void paintClippingMask(const PaintInfo&, const LayoutPoint&); 522 virtual void paintClippingMask(const PaintInfo&, const LayoutPoint&);
523 virtual void imageChanged(WrappedImagePtr, const IntRect* = 0) override; 523 virtual void imageChanged(WrappedImagePtr, const IntRect* = 0) override;
524 524
525 void logicalExtentAfterUpdatingLogicalWidth(const LayoutUnit& logicalTop, Lo gicalExtentComputedValues&); 525 void logicalExtentAfterUpdatingLogicalWidth(const LayoutUnit& logicalTop, Lo gicalExtentComputedValues&);
526 526
527 // Called when a positioned object moves but doesn't necessarily change size . A simplified layout is attempted
528 // that just updates the object's position. If the size does change, the obj ect remains dirty.
529 bool tryLayoutDoingPositionedMovementOnly()
530 {
531 LayoutUnit oldWidth = logicalWidth();
532 LogicalExtentComputedValues computedValues;
533 logicalExtentAfterUpdatingLogicalWidth(logicalTop(), computedValues);
534 // If we shrink to fit our width may have changed, so we still need full layout.
535 if (oldWidth != computedValues.m_extent)
536 return false;
537 setLogicalWidth(computedValues.m_extent);
538 setLogicalLeft(computedValues.m_position);
539 setMarginStart(computedValues.m_margins.m_start);
540 setMarginEnd(computedValues.m_margins.m_end);
541 updateLogicalHeight();
542 return true;
543 }
544
545 virtual PositionWithAffinity positionForPoint(const LayoutPoint&) override; 527 virtual PositionWithAffinity positionForPoint(const LayoutPoint&) override;
546 528
547 void removeFloatingOrPositionedChildFromBlockLists(); 529 void removeFloatingOrPositionedChildFromBlockLists();
548 530
549 RenderLayer* enclosingFloatPaintingLayer() const; 531 RenderLayer* enclosingFloatPaintingLayer() const;
550 532
551 virtual int firstLineBoxBaseline() const { return -1; } 533 virtual int firstLineBoxBaseline() const { return -1; }
552 virtual int inlineBlockBaseline(LineDirectionMode) const { return -1; } // R eturns -1 if we should skip this box when computing the baseline of an inline-bl ock. 534 virtual int inlineBlockBaseline(LineDirectionMode) const { return -1; } // R eturns -1 if we should skip this box when computing the baseline of an inline-bl ock.
553 535
554 bool shrinkToAvoidFloats() const; 536 bool shrinkToAvoidFloats() const;
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 if (UNLIKELY(inlineBoxWrapper() != 0)) 851 if (UNLIKELY(inlineBoxWrapper() != 0))
870 deleteLineBoxWrapper(); 852 deleteLineBoxWrapper();
871 } 853 }
872 854
873 ensureRareData().m_inlineBoxWrapper = boxWrapper; 855 ensureRareData().m_inlineBoxWrapper = boxWrapper;
874 } 856 }
875 857
876 } // namespace blink 858 } // namespace blink
877 859
878 #endif // RenderBox_h 860 #endif // RenderBox_h
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderBlock.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698