<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[173320] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/173320">173320</a></dd>
<dt>Author</dt> <dd>bdakin@apple.com</dd>
<dt>Date</dt> <dd>2014-09-05 11:54:37 -0700 (Fri, 05 Sep 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>ScrollablArea::handleWheelEvent() should return early if the ScrollableArea is not
actually scrollable
https://bugs.webkit.org/show_bug.cgi?id=136558
Reviewed by Simon Fraser.
Source/WebCore:
This patch requires adding a new virtual function to ScrollableArea called
isScrollableOrRubberbandable(). Unfortunately, there is already a virtual function
of that name that exists on RenderLayerModelObject, which is only problematic
because RenderListBox inherits from both RenderLayerModelObject and
ScrollableArea. This patch resolves that conflict in the simplest way, by re-
naming the RenderLayerModelObject version of the function to
isScrollableOrRubberbandableBox(). It’s a little unfortunate, but simpler than the
other solutions I came up with.
New ScrollableArea virtual function.
* page/FrameView.cpp:
(WebCore::FrameView::isScrollableOrRubberbandable):
* page/FrameView.h:
The point of the whole patch! Return early if you can’t scroll or rubber band.
* platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::handleWheelEvent):
New ScrollableArea virtual function.
* platform/ScrollableArea.h:
* platform/win/PopupMenuWin.h:
Re-name.
* rendering/RenderBox.cpp:
(WebCore::RenderBox::isScrollableOrRubberbandableBox):
(WebCore::RenderBox::isScrollableOrRubberbandable): Deleted.
* rendering/RenderBox.h:
Implement new ScrollableArea virtual function, and adapt to the re-name.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::isScrollableOrRubberbandable):
(WebCore::RenderLayer::hasScrollableOrRubberbandableAncestor):
* rendering/RenderLayer.h:
Re-name.
* rendering/RenderLayerModelObject.h:
(WebCore::RenderLayerModelObject::isScrollableOrRubberbandableBox):
(WebCore::RenderLayerModelObject::isScrollableOrRubberbandable): Deleted.
Implement ScrollableArea virtual function.
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::isScrollableOrRubberbandable):
* rendering/RenderListBox.h:
Re-name.
* rendering/RenderView.cpp:
(WebCore::RenderView::isScrollableOrRubberbandableBox):
(WebCore::RenderView::isScrollableOrRubberbandable): Deleted.
* rendering/RenderView.h:
Source/WebKit2:
New ScrollableArea virtual function.
* WebProcess/Plugins/PDF/PDFPlugin.h:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewcpp">trunk/Source/WebCore/page/FrameView.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewh">trunk/Source/WebCore/page/FrameView.h</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollableAreacpp">trunk/Source/WebCore/platform/ScrollableArea.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollableAreah">trunk/Source/WebCore/platform/ScrollableArea.h</a></li>
<li><a href="#trunkSourceWebCoreplatformwinPopupMenuWinh">trunk/Source/WebCore/platform/win/PopupMenuWin.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxcpp">trunk/Source/WebCore/rendering/RenderBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderBoxh">trunk/Source/WebCore/rendering/RenderBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayercpp">trunk/Source/WebCore/rendering/RenderLayer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerh">trunk/Source/WebCore/rendering/RenderLayer.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerModelObjecth">trunk/Source/WebCore/rendering/RenderLayerModelObject.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListBoxcpp">trunk/Source/WebCore/rendering/RenderListBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListBoxh">trunk/Source/WebCore/rendering/RenderListBox.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderViewcpp">trunk/Source/WebCore/rendering/RenderView.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderViewh">trunk/Source/WebCore/rendering/RenderView.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginh">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/ChangeLog        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -1,3 +1,61 @@
</span><ins>+2014-09-05 Beth Dakin <bdakin@apple.com>
+
+ ScrollablArea::handleWheelEvent() should return early if the ScrollableArea is not
+ actually scrollable
+ https://bugs.webkit.org/show_bug.cgi?id=136558
+
+ Reviewed by Simon Fraser.
+
+ This patch requires adding a new virtual function to ScrollableArea called
+ isScrollableOrRubberbandable(). Unfortunately, there is already a virtual function
+ of that name that exists on RenderLayerModelObject, which is only problematic
+ because RenderListBox inherits from both RenderLayerModelObject and
+ ScrollableArea. This patch resolves that conflict in the simplest way, by re-
+ naming the RenderLayerModelObject version of the function to
+ isScrollableOrRubberbandableBox(). It’s a little unfortunate, but simpler than the
+ other solutions I came up with.
+
+ New ScrollableArea virtual function.
+ * page/FrameView.cpp:
+ (WebCore::FrameView::isScrollableOrRubberbandable):
+ * page/FrameView.h:
+
+ The point of the whole patch! Return early if you can’t scroll or rubber band.
+ * platform/ScrollableArea.cpp:
+ (WebCore::ScrollableArea::handleWheelEvent):
+
+ New ScrollableArea virtual function.
+ * platform/ScrollableArea.h:
+ * platform/win/PopupMenuWin.h:
+
+ Re-name.
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::isScrollableOrRubberbandableBox):
+ (WebCore::RenderBox::isScrollableOrRubberbandable): Deleted.
+ * rendering/RenderBox.h:
+
+ Implement new ScrollableArea virtual function, and adapt to the re-name.
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::isScrollableOrRubberbandable):
+ (WebCore::RenderLayer::hasScrollableOrRubberbandableAncestor):
+ * rendering/RenderLayer.h:
+
+ Re-name.
+ * rendering/RenderLayerModelObject.h:
+ (WebCore::RenderLayerModelObject::isScrollableOrRubberbandableBox):
+ (WebCore::RenderLayerModelObject::isScrollableOrRubberbandable): Deleted.
+
+ Implement ScrollableArea virtual function.
+ * rendering/RenderListBox.cpp:
+ (WebCore::RenderListBox::isScrollableOrRubberbandable):
+ * rendering/RenderListBox.h:
+
+ Re-name.
+ * rendering/RenderView.cpp:
+ (WebCore::RenderView::isScrollableOrRubberbandableBox):
+ (WebCore::RenderView::isScrollableOrRubberbandable): Deleted.
+ * rendering/RenderView.h:
+
</ins><span class="cx"> 2014-06-06 Jer Noble <jer.noble@apple.com>
</span><span class="cx">
</span><span class="cx"> Refactoring: make MediaTime the primary time type for audiovisual times.
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.cpp (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.cpp        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/page/FrameView.cpp        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -3339,6 +3339,11 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool FrameView::isScrollableOrRubberbandable()
+{
+ return frame().isMainFrame() ? isScrollable(Scrollability::ScrollableOrRubberbandable) : isScrollable(Scrollability::Scrollable);
+}
+
</ins><span class="cx"> bool FrameView::hasScrollableOrRubberbandableAncestor()
</span><span class="cx"> {
</span><span class="cx"> if (frame().isMainFrame())
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/page/FrameView.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -403,6 +403,8 @@
</span><span class="cx"> // callers use Scrollability::ScrollableOrRubberbandable.
</span><span class="cx"> enum class Scrollability { Scrollable, ScrollableOrRubberbandable };
</span><span class="cx"> bool isScrollable(Scrollability definitionOfScrollable = Scrollability::Scrollable);
</span><ins>+
+ virtual bool isScrollableOrRubberbandable() override;
</ins><span class="cx"> virtual bool hasScrollableOrRubberbandableAncestor() override;
</span><span class="cx">
</span><span class="cx"> enum ScrollbarModesCalculationStrategy { RulesFromWebContentOnly, AnyRule };
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollableAreacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollableArea.cpp (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollableArea.cpp        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/platform/ScrollableArea.cpp        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -185,6 +185,9 @@
</span><span class="cx">
</span><span class="cx"> bool ScrollableArea::handleWheelEvent(const PlatformWheelEvent& wheelEvent)
</span><span class="cx"> {
</span><ins>+ if (!isScrollableOrRubberbandable())
+ return false;
+
</ins><span class="cx"> return scrollAnimator()->handleWheelEvent(wheelEvent);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollableAreah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollableArea.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollableArea.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/platform/ScrollableArea.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -207,6 +207,7 @@
</span><span class="cx"> // Note that this only returns scrollable areas that can actually be scrolled.
</span><span class="cx"> virtual ScrollableArea* enclosingScrollableArea() const = 0;
</span><span class="cx">
</span><ins>+ virtual bool isScrollableOrRubberbandable() = 0;
</ins><span class="cx"> virtual bool hasScrollableOrRubberbandableAncestor() = 0;
</span><span class="cx">
</span><span class="cx"> // Returns the bounding box of this scrollable area, in the coordinate system of the enclosing scroll view.
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformwinPopupMenuWinh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/win/PopupMenuWin.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/win/PopupMenuWin.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/platform/win/PopupMenuWin.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -95,6 +95,7 @@
</span><span class="cx"> virtual void invalidateScrollCornerRect(const IntRect&) override { }
</span><span class="cx"> virtual bool isActive() const override { return true; }
</span><span class="cx"> ScrollableArea* enclosingScrollableArea() const override { return 0; }
</span><ins>+ virtual bool isScrollableOrRubberbandable() override { return true; }
</ins><span class="cx"> virtual bool hasScrollableOrRubberbandableAncestor() override { return true; }
</span><span class="cx"> virtual bool isScrollCornerVisible() const override { return false; }
</span><span class="cx"> virtual IntRect scrollCornerRect() const override { return IntRect(); }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.cpp        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -843,7 +843,7 @@
</span><span class="cx"> return canBeProgramaticallyScrolled() && (scrollHeight() != clientHeight() || scrollWidth() != clientWidth());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool RenderBox::isScrollableOrRubberbandable() const
</del><ins>+bool RenderBox::isScrollableOrRubberbandableBox() const
</ins><span class="cx"> {
</span><span class="cx"> return canBeScrolledAndHasScrollableArea();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderBox.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderBox.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderBox.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -662,7 +662,7 @@
</span><span class="cx"> bool includeVerticalScrollbarSize() const;
</span><span class="cx"> bool includeHorizontalScrollbarSize() const;
</span><span class="cx">
</span><del>- virtual bool isScrollableOrRubberbandable() const override;
</del><ins>+ virtual bool isScrollableOrRubberbandableBox() const override;
</ins><span class="cx">
</span><span class="cx"> // Returns true if we did a full repaint
</span><span class="cx"> bool repaintLayerRectsForImage(WrappedImagePtr image, const FillLayer* layers, bool drawingBackground);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -3056,10 +3056,15 @@
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool RenderLayer::isScrollableOrRubberbandable()
+{
+ return renderer().isScrollableOrRubberbandableBox();
+}
+
</ins><span class="cx"> bool RenderLayer::hasScrollableOrRubberbandableAncestor()
</span><span class="cx"> {
</span><span class="cx"> for (RenderLayer* nextLayer = parentLayerCrossFrame(this); nextLayer; nextLayer = parentLayerCrossFrame(nextLayer)) {
</span><del>- if (nextLayer->renderer().isScrollableOrRubberbandable())
</del><ins>+ if (nextLayer->isScrollableOrRubberbandable())
</ins><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderLayer.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -439,6 +439,7 @@
</span><span class="cx"> virtual Scrollbar* horizontalScrollbar() const override { return m_hBar.get(); }
</span><span class="cx"> virtual Scrollbar* verticalScrollbar() const override { return m_vBar.get(); }
</span><span class="cx"> virtual ScrollableArea* enclosingScrollableArea() const override;
</span><ins>+ virtual bool isScrollableOrRubberbandable() override;
</ins><span class="cx"> virtual bool hasScrollableOrRubberbandableAncestor() override;
</span><span class="cx"> #if ENABLE(CSS_SCROLL_SNAP)
</span><span class="cx"> virtual void updateSnapOffsets() override;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerModelObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerModelObject.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerModelObject.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderLayerModelObject.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> // The query rect is given in local coordinate system.
</span><span class="cx"> virtual bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const { return false; }
</span><span class="cx">
</span><del>- virtual bool isScrollableOrRubberbandable() const { return false; }
</del><ins>+ virtual bool isScrollableOrRubberbandableBox() const { return false; }
</ins><span class="cx">
</span><span class="cx"> protected:
</span><span class="cx"> RenderLayerModelObject(Element&, PassRef<RenderStyle>, unsigned baseTypeFlags);
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListBox.cpp (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListBox.cpp        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderListBox.cpp        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -787,6 +787,11 @@
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool RenderListBox::isScrollableOrRubberbandable()
+{
+ return m_vBar;
+}
+
</ins><span class="cx"> bool RenderListBox::hasScrollableOrRubberbandableAncestor()
</span><span class="cx"> {
</span><span class="cx"> return enclosingLayer() && enclosingLayer()->hasScrollableOrRubberbandableAncestor();
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListBox.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListBox.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderListBox.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -131,6 +131,7 @@
</span><span class="cx"> virtual bool forceUpdateScrollbarsOnMainThreadForPerformanceTesting() const override;
</span><span class="cx">
</span><span class="cx"> virtual ScrollableArea* enclosingScrollableArea() const override;
</span><ins>+ virtual bool isScrollableOrRubberbandable() override;
</ins><span class="cx"> virtual bool hasScrollableOrRubberbandableAncestor() override;
</span><span class="cx"> virtual IntRect scrollableAreaBoundingBox() const override;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderView.cpp (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderView.cpp        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderView.cpp        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -708,7 +708,7 @@
</span><span class="cx"> rect = LayoutRect(layer()->transform()->mapRect(snapRectToDevicePixels(rect, document().deviceScaleFactor())));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool RenderView::isScrollableOrRubberbandable() const
</del><ins>+bool RenderView::isScrollableOrRubberbandableBox() const
</ins><span class="cx"> {
</span><span class="cx"> // The main frame might be allowed to rubber-band even if there is no content to scroll to. This is unique to
</span><span class="cx"> // the main frame; subframes and overflow areas have to have content that can be scrolled to in order to rubber-band.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderView.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderView.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebCore/rendering/RenderView.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -299,7 +299,7 @@
</span><span class="cx"> friend class LayoutStateMaintainer;
</span><span class="cx"> friend class LayoutStateDisabler;
</span><span class="cx">
</span><del>- virtual bool isScrollableOrRubberbandable() const override;
</del><ins>+ virtual bool isScrollableOrRubberbandableBox() const override;
</ins><span class="cx">
</span><span class="cx"> void splitSelectionBetweenSubtrees(RenderObject* start, int startPos, RenderObject* end, int endPos, SelectionRepaintMode blockRepaintMode);
</span><span class="cx"> void clearSubtreeSelection(const SelectionSubtreeRoot&, SelectionRepaintMode, OldSelectionData&);
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebKit2/ChangeLog        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2014-09-05 Beth Dakin <bdakin@apple.com>
+
+ ScrollablArea::handleWheelEvent() should return early if the ScrollableArea is not
+ actually scrollable
+ https://bugs.webkit.org/show_bug.cgi?id=136558
+
+ Reviewed by Simon Fraser.
+
+ New ScrollableArea virtual function.
+ * WebProcess/Plugins/PDF/PDFPlugin.h:
+
</ins><span class="cx"> 2014-09-04 Gyuyoung Kim <gyuyoung.kim@samsung.com>
</span><span class="cx">
</span><span class="cx"> Unreviewed, speculative build fix on GTK port since r173305.
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h (173319 => 173320)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h        2014-09-05 18:42:34 UTC (rev 173319)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h        2014-09-05 18:54:37 UTC (rev 173320)
</span><span class="lines">@@ -175,6 +175,7 @@
</span><span class="cx"> // ScrollableArea functions.
</span><span class="cx"> virtual WebCore::IntRect scrollCornerRect() const override;
</span><span class="cx"> virtual WebCore::ScrollableArea* enclosingScrollableArea() const override;
</span><ins>+ virtual bool isScrollableOrRubberbandable() override { return true; }
</ins><span class="cx"> virtual bool hasScrollableOrRubberbandableAncestor() override { return true; }
</span><span class="cx"> virtual WebCore::IntRect scrollableAreaBoundingBox() const override;
</span><span class="cx"> virtual void setScrollOffset(const WebCore::IntPoint&) override;
</span></span></pre>
</div>
</div>
</body>
</html>