Changeset 107650 in webkit
- Timestamp:
- Feb 13, 2012 5:34:31 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r107643 r107650 1 2012-02-13 Raul Hudea <rhudea@adobe.com> 2 3 Implement Element.webkitRegionOverflow 4 5 [CSSRegions][CSSOM] Implement Element.regionOverflow 6 https://bugs.webkit.org/show_bug.cgi?id=77863 7 8 Reviewed by David Hyatt. 9 10 * fast/regions/element-region-overflow-state-expected.txt: Added. 11 * fast/regions/element-region-overflow-state-vertical-rl-expected.txt: Added. 12 * fast/regions/element-region-overflow-state-vertical-rl.html: Added. 13 * fast/regions/element-region-overflow-state.html: Added. 14 1 15 2012-02-13 Tony Chang <tony@chromium.org> 2 16 -
trunk/Source/WebCore/ChangeLog
r107649 r107650 1 2012-02-13 Raul Hudea <rhudea@adobe.com> 2 3 Implement Element.webkitRegionOverflow 4 5 [CSSRegions][CSSOM] Implement Element.regionOverflow 6 https://bugs.webkit.org/show_bug.cgi?id=77863 7 8 Reviewed by David Hyatt. 9 10 On each layout, compute the overflowState for each region belonging to the flow thread 11 12 Tests: fast/regions/element-region-overflow-state-vertical-rl.html 13 fast/regions/element-region-overflow-state.html 14 15 * dom/Element.cpp: 16 (WebCore::Element::webkitRegionOverflow): 17 (WebCore): 18 * dom/Element.h: 19 * dom/Element.idl: 20 * rendering/RenderBlock.cpp: 21 (WebCore::RenderBlock::computeOverflow): 22 * rendering/RenderFlowThread.cpp: 23 (WebCore::RenderFlowThread::computeOverflowStateForRegions): 24 (WebCore): 25 * rendering/RenderFlowThread.h: 26 * rendering/RenderRegion.cpp: 27 (WebCore::RenderRegion::RenderRegion): 28 * rendering/RenderRegion.h: 29 (RenderRegion): 30 (WebCore::RenderRegion::regionState): 31 (WebCore::RenderRegion::setRegionState): 32 1 33 2012-02-13 Alexey Proskuryakov <ap@apple.com> 2 34 -
trunk/Source/WebCore/dom/Element.cpp
r107570 r107650 58 58 #include "Page.h" 59 59 #include "RenderLayer.h" 60 #include "RenderRegion.h" 60 61 #include "RenderView.h" 61 62 #include "RenderWidget.h" … … 1990 1991 } 1991 1992 1993 const AtomicString& Element::webkitRegionOverflow() const 1994 { 1995 if (renderer() && renderer()->isRenderRegion()) { 1996 RenderRegion* region = toRenderRegion(renderer()); 1997 switch (region->regionState()) { 1998 case RenderRegion::RegionFit: 1999 DEFINE_STATIC_LOCAL(AtomicString, fitState, ("fit")); 2000 return fitState; 2001 case RenderRegion::RegionEmpty: 2002 DEFINE_STATIC_LOCAL(AtomicString, emptyState, ("empty")); 2003 return emptyState; 2004 case RenderRegion::RegionOverflow: 2005 DEFINE_STATIC_LOCAL(AtomicString, overflowState, ("overflow")); 2006 return overflowState; 2007 default: 2008 break; 2009 } 2010 } 2011 DEFINE_STATIC_LOCAL(AtomicString, undefinedState, ("undefined")); 2012 return undefinedState; 2013 } 2014 1992 2015 #ifndef NDEBUG 1993 2016 bool Element::fastAttributeLookupAllowed(const QualifiedName& name) const -
trunk/Source/WebCore/dom/Element.h
r107570 r107650 403 403 PassRefPtr<Attribute> createAttribute(const QualifiedName&, const AtomicString& value); 404 404 405 const AtomicString& webkitRegionOverflow() const; 406 405 407 protected: 406 408 Element(const QualifiedName& tagName, Document* document, ConstructionType type) -
trunk/Source/WebCore/dom/Element.idl
r107530 r107650 134 134 [V8EnabledAtRuntime] void webkitRequestFullScreen(in [Optional=DefaultIsUndefined] unsigned short flags); 135 135 #endif 136 137 // CSS Regions API 138 readonly attribute DOMString webkitRegionOverflow; 136 139 137 140 #if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r107627 r107650 1506 1506 // Add visual overflow from theme. 1507 1507 addVisualOverflowFromTheme(); 1508 1509 if (isRenderFlowThread()) 1510 enclosingRenderFlowThread()->computeOverflowStateForRegions(oldClientAfterEdge); 1508 1511 } 1509 1512 -
trunk/Source/WebCore/rendering/RenderFlowThread.cpp
r107622 r107650 873 873 } 874 874 875 void RenderFlowThread::computeOverflowStateForRegions(LayoutUnit oldClientAfterEdge) 876 { 877 LayoutUnit height = oldClientAfterEdge; 878 // FIXME: the visual overflow of middle region (if it is the last one to contain any content in a render flow thread) 879 // might not be taken into account because the render flow thread height is greater that that regions height + its visual overflow 880 // because of how computeLogicalHeight is implemented for RenderFlowThread (as a sum of all regions height). 881 // This means that the middle region will be marked as fit (even if it has visual overflow flowing into the next region) 882 if (hasRenderOverflow()) 883 height = isHorizontalWritingMode() ? visualOverflowRect().maxY() : visualOverflowRect().maxX(); 884 885 for (RenderRegionList::iterator iter = m_regionList.begin(); iter != m_regionList.end(); ++iter) { 886 RenderRegion* region = *iter; 887 if (!region->isValid()) { 888 region->setRegionState(RenderRegion::RegionUndefined); 889 continue; 890 } 891 LayoutUnit flowMin = height - (isHorizontalWritingMode() ? region->regionRect().y() : region->regionRect().x()); 892 LayoutUnit flowMax = height - (isHorizontalWritingMode() ? region->regionRect().maxY() : region->regionRect().maxX()); 893 RenderRegion::RegionState state = RenderRegion::RegionFit; 894 if (flowMin <= 0) 895 state = RenderRegion::RegionEmpty; 896 if (flowMax > 0) 897 state = RenderRegion::RegionOverflow; 898 region->setRegionState(state); 899 } 900 } 901 875 902 } // namespace WebCore -
trunk/Source/WebCore/rendering/RenderFlowThread.h
r107622 r107650 134 134 const RenderRegion* newStartRegion = 0, const RenderRegion* newEndRegion = 0); 135 135 WebKitNamedFlow* ensureNamedFlow(); 136 void computeOverflowStateForRegions(LayoutUnit oldClientAfterEdge); 136 137 137 138 private: -
trunk/Source/WebCore/rendering/RenderRegion.cpp
r107605 r107650 48 48 , m_isValid(false) 49 49 , m_hasCustomRegionStyle(false) 50 , m_regionState(RegionUndefined) 50 51 { 51 52 } -
trunk/Source/WebCore/rendering/RenderRegion.h
r106694 r107650 82 82 83 83 void clearBoxStyleInRegion(const RenderBox*); 84 85 enum RegionState { 86 RegionUndefined, 87 RegionEmpty, 88 RegionFit, 89 RegionOverflow 90 }; 91 92 RegionState regionState() const { return isValid() ? m_regionState : RegionUndefined; } 93 void setRegionState(RegionState regionState) { m_regionState = regionState; } 84 94 private: 85 95 virtual const char* renderName() const { return "RenderRegion"; } … … 110 120 bool m_isValid; 111 121 bool m_hasCustomRegionStyle; 122 RegionState m_regionState; 112 123 }; 113 124
Note: See TracChangeset
for help on using the changeset viewer.