<!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>[168049] trunk/Source/WebCore</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/168049">168049</a></dd>
<dt>Author</dt> <dd>bdakin@apple.com</dd>
<dt>Date</dt> <dd>2014-04-30 15:05:15 -0700 (Wed, 30 Apr 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Always-visible scrollbars continuously repaint after non-momentum scrollling
https://bugs.webkit.org/show_bug.cgi?id=132403
-and corresponding-
&lt;rdar://problem/16553878&gt;

Reviewed by Simon Fraser.

No longer universally opt into presentation value mode whenever the scroll 
position changes on the scrolling thread. We really only want it for momentum 
scrolls, and this will ensure that we always set it to NO once we have set it to 
YES.
* page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:
(WebCore::ScrollingTreeScrollingNodeMac::handleWheelEvent):
(WebCore::ScrollingTreeScrollingNodeMac::setScrollLayerPosition):

Expose shouldUsePresentationValue.
* platform/mac/NSScrollerImpDetails.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepagescrollingmacScrollingTreeScrollingNodeMacmm">trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformmacNSScrollerImpDetailsh">trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (168048 => 168049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-04-30 22:03:57 UTC (rev 168048)
+++ trunk/Source/WebCore/ChangeLog        2014-04-30 22:05:15 UTC (rev 168049)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2014-04-30  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+        Always-visible scrollbars continuously repaint after non-momentum scrollling
+        https://bugs.webkit.org/show_bug.cgi?id=132403
+        -and corresponding-
+        &lt;rdar://problem/16553878&gt;
+
+        Reviewed by Simon Fraser.
+
+        No longer universally opt into presentation value mode whenever the scroll 
+        position changes on the scrolling thread. We really only want it for momentum 
+        scrolls, and this will ensure that we always set it to NO once we have set it to 
+        YES.
+        * page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:
+        (WebCore::ScrollingTreeScrollingNodeMac::handleWheelEvent):
+        (WebCore::ScrollingTreeScrollingNodeMac::setScrollLayerPosition):
+
+        Expose shouldUsePresentationValue.
+        * platform/mac/NSScrollerImpDetails.h:
+
</ins><span class="cx"> 2014-04-30  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Move the legacy WebKit API into WebKitLegacy.framework and move it inside WebKit.framework
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingmacScrollingTreeScrollingNodeMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm (168048 => 168049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm        2014-04-30 22:03:57 UTC (rev 168048)
+++ trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm        2014-04-30 22:05:15 UTC (rev 168049)
</span><span class="lines">@@ -136,13 +136,13 @@
</span><span class="cx">     if (!canHaveScrollbars())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    if (wheelEvent.momentumPhase() == PlatformWheelEventPhaseBegan) {
+        [m_verticalScrollbarPainter setUsePresentationValue:YES];
+        [m_horizontalScrollbarPainter setUsePresentationValue:YES];
+    }
</ins><span class="cx">     if (wheelEvent.momentumPhase() == PlatformWheelEventPhaseEnded || wheelEvent.momentumPhase() == PlatformWheelEventPhaseCancelled) {
</span><del>-        // If the wheel event is ending or cancelled, then we can tell the ScrollbarPainter API that we won't
-        // be updating the position from our scrolling thread anymore for the time being.
-        if (m_verticalScrollbarPainter)
-            [m_verticalScrollbarPainter setUsePresentationValue:NO];
-        if (m_horizontalScrollbarPainter)
-            [m_horizontalScrollbarPainter setUsePresentationValue:NO];
</del><ins>+        [m_verticalScrollbarPainter setUsePresentationValue:NO];
+        [m_horizontalScrollbarPainter setUsePresentationValue:NO];
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_scrollElasticityController.handleWheelEvent(wheelEvent);
</span><span class="lines">@@ -371,16 +371,14 @@
</span><span class="cx">         [CATransaction begin];
</span><span class="cx">         [CATransaction lock];
</span><span class="cx"> 
</span><del>-        if (m_verticalScrollbarPainter) {
-            [m_verticalScrollbarPainter setUsePresentationValue:YES];
</del><ins>+        if ([m_verticalScrollbarPainter shouldUsePresentationValue]) {
</ins><span class="cx">             float presentationValue;
</span><span class="cx">             float overhangAmount;
</span><span class="cx">             ScrollableArea::computeScrollbarValueAndOverhang(position.y(), totalContentsSize().height(), viewportRect.height(), presentationValue, overhangAmount);
</span><span class="cx">             [m_verticalScrollbarPainter setPresentationValue:presentationValue];
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (m_horizontalScrollbarPainter) {
-            [m_horizontalScrollbarPainter setUsePresentationValue:YES];
</del><ins>+        if ([m_horizontalScrollbarPainter shouldUsePresentationValue]) {
</ins><span class="cx">             float presentationValue;
</span><span class="cx">             float overhangAmount;
</span><span class="cx">             ScrollableArea::computeScrollbarValueAndOverhang(position.x(), totalContentsSize().width(), viewportRect.width(), presentationValue, overhangAmount);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacNSScrollerImpDetailsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.h (168048 => 168049)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.h        2014-04-30 22:03:57 UTC (rev 168048)
+++ trunk/Source/WebCore/platform/mac/NSScrollerImpDetails.h        2014-04-30 22:05:15 UTC (rev 168049)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> - (void)setBoundsSize:(NSSize)boundsSize;
</span><span class="cx"> - (void)setDoubleValue:(double)doubleValue;
</span><span class="cx"> - (void)setPresentationValue:(double)presentationValue;
</span><ins>+- (BOOL)shouldUsePresentationValue;
</ins><span class="cx"> - (void)setUsePresentationValue:(BOOL)usePresentationValue;
</span><span class="cx"> - (void)setKnobProportion:(CGFloat)proportion;
</span><span class="cx"> - (void)setKnobStyle:(NSScrollerKnobStyle)knobStyle;
</span></span></pre>
</div>
</div>

</body>
</html>