Title: [136947] trunk/Source/WebCore
- Revision
- 136947
- Author
- [email protected]
- Date
- 2012-12-07 05:03:24 -0800 (Fri, 07 Dec 2012)
Log Message
Rework bug 97927 to not depend on RenderLayer::allowsScrolling
https://bugs.webkit.org/show_bug.cgi?id=103999
Reviewed by James Robinson.
Patch by Antonio Gomes <[email protected]>
Patch makes it possible for methods like
RenderLayer::{updateScrollbarsAfterLayout,updateScrollbarsAfterStyleChange}
to not depend on RenderLayer::allowsScrolling to determine if a layer should
be added or removed from its FrameView's ScrollableArea set.
Following the same logic, the patch also fixes RenderBox::canBeScrolledAndHasScrollableArea
method to take into account the box' scroll allowance in a given direction only
when it overflows. This allows simplifying custom methods like InRegionScrollerPrivate::canScrollRenderBox
(@WebKit/blackberry/Api/InRegionScroller.cpp).
The naming pattern for the newly added methods were chosen to keep the consistency
with the existing ones, in the same class.
No new test: it is already covered by ScrollingCoordinatorChromiumTest.clippedBodyTest.
* rendering/RenderBox.cpp:
(WebCore::RenderBox::canBeScrolledAndHasScrollableArea):
* rendering/RenderBox.h:
(RenderBox):
(WebCore::RenderBox::hasScrollableOverflowX):
(WebCore::RenderBox::hasScrollableOverflowY):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::hasScrollableHorizontalOverflow):
(WebCore):
(WebCore::RenderLayer::hasScrollableVerticalOverflow):
(WebCore::RenderLayer::updateScrollbarsAfterLayout):
(WebCore::RenderLayer::updateScrollbarsAfterStyleChange):
* rendering/RenderLayer.h:
(RenderLayer):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (136946 => 136947)
--- trunk/Source/WebCore/ChangeLog 2012-12-07 12:57:51 UTC (rev 136946)
+++ trunk/Source/WebCore/ChangeLog 2012-12-07 13:03:24 UTC (rev 136947)
@@ -1,3 +1,40 @@
+2012-12-05 Antonio Gomes <[email protected]>
+
+ Rework bug 97927 to not depend on RenderLayer::allowsScrolling
+ https://bugs.webkit.org/show_bug.cgi?id=103999
+
+ Reviewed by James Robinson.
+
+ Patch makes it possible for methods like
+ RenderLayer::{updateScrollbarsAfterLayout,updateScrollbarsAfterStyleChange}
+ to not depend on RenderLayer::allowsScrolling to determine if a layer should
+ be added or removed from its FrameView's ScrollableArea set.
+
+ Following the same logic, the patch also fixes RenderBox::canBeScrolledAndHasScrollableArea
+ method to take into account the box' scroll allowance in a given direction only
+ when it overflows. This allows simplifying custom methods like InRegionScrollerPrivate::canScrollRenderBox
+ (@WebKit/blackberry/Api/InRegionScroller.cpp).
+
+ The naming pattern for the newly added methods were chosen to keep the consistency
+ with the existing ones, in the same class.
+
+ No new test: it is already covered by ScrollingCoordinatorChromiumTest.clippedBodyTest.
+
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::canBeScrolledAndHasScrollableArea):
+ * rendering/RenderBox.h:
+ (RenderBox):
+ (WebCore::RenderBox::hasScrollableOverflowX):
+ (WebCore::RenderBox::hasScrollableOverflowY):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::hasScrollableHorizontalOverflow):
+ (WebCore):
+ (WebCore::RenderLayer::hasScrollableVerticalOverflow):
+ (WebCore::RenderLayer::updateScrollbarsAfterLayout):
+ (WebCore::RenderLayer::updateScrollbarsAfterStyleChange):
+ * rendering/RenderLayer.h:
+ (RenderLayer):
+
2012-12-07 Max Feil <[email protected]>
[BlackBerry] make "isVideo" information available to platform media player
Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (136946 => 136947)
--- trunk/Source/WebCore/rendering/RenderBox.cpp 2012-12-07 12:57:51 UTC (rev 136946)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp 2012-12-07 13:03:24 UTC (rev 136947)
@@ -615,7 +615,8 @@
bool RenderBox::canBeScrolledAndHasScrollableArea() const
{
- return canBeProgramaticallyScrolled() && (scrollHeight() != clientHeight() || scrollWidth() != clientWidth());
+ bool hasScrollableOverflow = hasScrollableOverflowX() || hasScrollableOverflowY();
+ return hasScrollableOverflow && canBeProgramaticallyScrolled();
}
bool RenderBox::canBeProgramaticallyScrolled() const
Modified: trunk/Source/WebCore/rendering/RenderBox.h (136946 => 136947)
--- trunk/Source/WebCore/rendering/RenderBox.h 2012-12-07 12:57:51 UTC (rev 136946)
+++ trunk/Source/WebCore/rendering/RenderBox.h 2012-12-07 13:03:24 UTC (rev 136947)
@@ -440,11 +440,14 @@
virtual void autoscroll();
virtual void stopAutoscroll() { }
virtual void panScroll(const IntPoint&);
+
bool hasAutoVerticalScrollbar() const { return hasOverflowClip() && (style()->overflowY() == OAUTO || style()->overflowY() == OOVERLAY); }
bool hasAutoHorizontalScrollbar() const { return hasOverflowClip() && (style()->overflowX() == OAUTO || style()->overflowX() == OOVERLAY); }
bool scrollsOverflow() const { return scrollsOverflowX() || scrollsOverflowY(); }
bool scrollsOverflowX() const { return hasOverflowClip() && (style()->overflowX() == OSCROLL || hasAutoHorizontalScrollbar()); }
bool scrollsOverflowY() const { return hasOverflowClip() && (style()->overflowY() == OSCROLL || hasAutoVerticalScrollbar()); }
+ bool hasScrollableOverflowX() const { return scrollsOverflowX() && scrollWidth() != clientWidth(); }
+ bool hasScrollableOverflowY() const { return scrollsOverflowY() && scrollHeight() != clientHeight(); }
bool usesCompositedScrolling() const;
bool hasUnsplittableScrollingOverflow() const;
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (136946 => 136947)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2012-12-07 12:57:51 UTC (rev 136946)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2012-12-07 13:03:24 UTC (rev 136947)
@@ -2636,6 +2636,16 @@
setScrollOrigin(IntPoint(-scrollableLeftOverflow, -scrollableTopOverflow));
}
+bool RenderLayer::hasScrollableHorizontalOverflow() const
+{
+ return hasHorizontalOverflow() && renderBox()->scrollsOverflowX();
+}
+
+bool RenderLayer::hasScrollableVerticalOverflow() const
+{
+ return hasVerticalOverflow() && renderBox()->scrollsOverflowY();
+}
+
bool RenderLayer::hasHorizontalOverflow() const
{
ASSERT(!m_scrollDimensionsDirty);
@@ -2718,7 +2728,7 @@
m_vBar->setProportion(clientHeight, m_scrollSize.height());
}
- updateScrollableAreaSet((hasHorizontalOverflow || hasVerticalOverflow) && scrollsOverflow() && allowsScrolling());
+ updateScrollableAreaSet(hasScrollableHorizontalOverflow() || hasScrollableVerticalOverflow());
}
void RenderLayer::updateScrollInfoAfterLayout()
@@ -5098,7 +5108,7 @@
}
if (!m_scrollDimensionsDirty)
- updateScrollableAreaSet((hasHorizontalOverflow() || hasVerticalOverflow()) && scrollsOverflow() && allowsScrolling());
+ updateScrollableAreaSet(hasScrollableHorizontalOverflow() || hasScrollableVerticalOverflow());
}
void RenderLayer::styleChanged(StyleDifference, const RenderStyle* oldStyle)
Modified: trunk/Source/WebCore/rendering/RenderLayer.h (136946 => 136947)
--- trunk/Source/WebCore/rendering/RenderLayer.h 2012-12-07 12:57:51 UTC (rev 136946)
+++ trunk/Source/WebCore/rendering/RenderLayer.h 2012-12-07 13:03:24 UTC (rev 136947)
@@ -825,6 +825,8 @@
void computeScrollDimensions();
bool hasHorizontalOverflow() const;
bool hasVerticalOverflow() const;
+ bool hasScrollableHorizontalOverflow() const;
+ bool hasScrollableVerticalOverflow() const;
bool shouldBeNormalFlowOnly() const;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes