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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutBox.h

Issue 1375673004: Keep block pagination struts after layout, and store them before any type of break. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: code review Created 5 years, 2 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
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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 69
70 LayoutUnit m_overrideLogicalContentHeight; 70 LayoutUnit m_overrideLogicalContentHeight;
71 LayoutUnit m_overrideLogicalContentWidth; 71 LayoutUnit m_overrideLogicalContentWidth;
72 72
73 // Set by LayoutBox::savePreviousBoxSizesIfNeeded(). 73 // Set by LayoutBox::savePreviousBoxSizesIfNeeded().
74 LayoutSize m_previousBorderBoxSize; 74 LayoutSize m_previousBorderBoxSize;
75 LayoutRect m_previousContentBoxRect; 75 LayoutRect m_previousContentBoxRect;
76 LayoutRect m_previousLayoutOverflowRect; 76 LayoutRect m_previousLayoutOverflowRect;
77 77
78 LayoutUnit m_pageLogicalOffset; 78 LayoutUnit m_pageLogicalOffset;
79
80 LayoutUnit m_paginationStrut;
79 }; 81 };
80 82
81 class CORE_EXPORT LayoutBox : public LayoutBoxModelObject { 83 class CORE_EXPORT LayoutBox : public LayoutBoxModelObject {
82 public: 84 public:
83 explicit LayoutBox(ContainerNode*); 85 explicit LayoutBox(ContainerNode*);
84 86
85 PaintLayerType layerTypeRequired() const override; 87 PaintLayerType layerTypeRequired() const override;
86 88
87 bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const ov erride; 89 bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect) const ov erride;
88 90
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 // the replaced LayoutObject to quickly determine what line it is contained on and to easily 478 // the replaced LayoutObject to quickly determine what line it is contained on and to easily
477 // iterate over structures on the line. 479 // iterate over structures on the line.
478 InlineBox* inlineBoxWrapper() const { return m_rareData ? m_rareData->m_inli neBoxWrapper : 0; } 480 InlineBox* inlineBoxWrapper() const { return m_rareData ? m_rareData->m_inli neBoxWrapper : 0; }
479 void setInlineBoxWrapper(InlineBox*); 481 void setInlineBoxWrapper(InlineBox*);
480 void deleteLineBoxWrapper(); 482 void deleteLineBoxWrapper();
481 483
482 void setSpannerPlaceholder(LayoutMultiColumnSpannerPlaceholder&); 484 void setSpannerPlaceholder(LayoutMultiColumnSpannerPlaceholder&);
483 void clearSpannerPlaceholder(); 485 void clearSpannerPlaceholder();
484 LayoutMultiColumnSpannerPlaceholder* spannerPlaceholder() const final { retu rn m_rareData ? m_rareData->m_spannerPlaceholder : 0; } 486 LayoutMultiColumnSpannerPlaceholder* spannerPlaceholder() const final { retu rn m_rareData ? m_rareData->m_spannerPlaceholder : 0; }
485 487
488 // A pagination strut is the amount of space needed to push an in-flow block -level object (or
489 // float) to the logical top of the next page or column. It will be set both for forced breaks
490 // (e.g. page-break-before:always) and soft breaks (when there's not enough space in the current
491 // page / column for the object). The strut is baked into the logicalTop() o f the object, so
492 // that logicalTop() - paginationStrut() == the original position in the pre vious column before
493 // deciding to break.
494 //
495 // Pagination struts are either set in front of a block-level box (here) or before a line
496 // (RootInlineBox::paginationStrut()).
497 LayoutUnit paginationStrut() const { return m_rareData ? m_rareData->m_pagin ationStrut : LayoutUnit(); }
498 void setPaginationStrut(LayoutUnit);
499 void resetPaginationStrut()
500 {
501 if (m_rareData)
502 m_rareData->m_paginationStrut = LayoutUnit();
503 }
504
486 LayoutRect clippedOverflowRectForPaintInvalidation(const LayoutBoxModelObjec t* paintInvalidationContainer, const PaintInvalidationState* = nullptr) const ov erride; 505 LayoutRect clippedOverflowRectForPaintInvalidation(const LayoutBoxModelObjec t* paintInvalidationContainer, const PaintInvalidationState* = nullptr) const ov erride;
487 void mapRectToPaintInvalidationBacking(const LayoutBoxModelObject* paintInva lidationContainer, LayoutRect&, const PaintInvalidationState*) const override; 506 void mapRectToPaintInvalidationBacking(const LayoutBoxModelObject* paintInva lidationContainer, LayoutRect&, const PaintInvalidationState*) const override;
488 virtual void invalidatePaintForOverhangingFloats(bool paintAllDescendants); 507 virtual void invalidatePaintForOverhangingFloats(bool paintAllDescendants);
489 508
490 LayoutUnit containingBlockLogicalHeightForGetComputedStyle() const; 509 LayoutUnit containingBlockLogicalHeightForGetComputedStyle() const;
491 510
492 LayoutUnit containingBlockLogicalWidthForContent() const override; 511 LayoutUnit containingBlockLogicalWidthForContent() const override;
493 LayoutUnit containingBlockLogicalHeightForContent(AvailableLogicalHeightType ) const; 512 LayoutUnit containingBlockLogicalHeightForContent(AvailableLogicalHeightType ) const;
494 513
495 LayoutUnit containingBlockAvailableLineWidth() const; 514 LayoutUnit containingBlockAvailableLineWidth() const;
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 if (UNLIKELY(inlineBoxWrapper() != nullptr)) 956 if (UNLIKELY(inlineBoxWrapper() != nullptr))
938 deleteLineBoxWrapper(); 957 deleteLineBoxWrapper();
939 } 958 }
940 959
941 ensureRareData().m_inlineBoxWrapper = boxWrapper; 960 ensureRareData().m_inlineBoxWrapper = boxWrapper;
942 } 961 }
943 962
944 } // namespace blink 963 } // namespace blink
945 964
946 #endif // LayoutBox_h 965 #endif // LayoutBox_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutBox.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698