<!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>[163388] trunk/Source/WebKit2</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/163388">163388</a></dd>
<dt>Author</dt> <dd>enrica@apple.com</dd>
<dt>Date</dt> <dd>2014-02-04 10:41:07 -0800 (Tue, 04 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>WK2: Selection callout bar does not scroll with the selection.
https://bugs.webkit.org/show_bug.cgi?id=128142
&lt;rdar://problem/15970812&gt;

Reviewed by Benjamin Poulain.

Adding notifications to WKContentView to all the delegates
for scrolling and zooming to let WKInteractionView about it.
This allows the interaction assistants to hide the callout
while scrolling or zooming and to fade it in again at the end.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView scrollViewWillBeginZooming:withView:]):
(-[WKWebView scrollViewWillBeginDragging:]):
* UIProcess/API/ios/WKContentView.h:
* UIProcess/API/ios/WKContentView.mm:
(-[WKContentView didFinishScrollTo:]):
(-[WKContentView willStartZoomOrScroll]):
(-[WKContentView didZoomToScale:]):
* UIProcess/API/ios/WKInteractionView.h:
* UIProcess/API/ios/WKInteractionView.mm:
(-[WKInteractionView _willStartScrollingOrZooming]):
(-[WKInteractionView _didEndScrollingOrZooming]):
* UIProcess/API/ios/WKViewIOS.mm:
(-[WKView scrollViewWillBeginZooming:withView:]):
(-[WKView scrollViewWillBeginDragging:]):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIiosWKContentViewh">trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIiosWKContentViewmm">trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIiosWKInteractionViewh">trunk/Source/WebKit2/UIProcess/API/ios/WKInteractionView.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIiosWKInteractionViewmm">trunk/Source/WebKit2/UIProcess/API/ios/WKInteractionView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIiosWKViewIOSmm">trunk/Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (163387 => 163388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-02-04 18:05:06 UTC (rev 163387)
+++ trunk/Source/WebKit2/ChangeLog        2014-02-04 18:41:07 UTC (rev 163388)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2014-02-04  Enrica Casucci  &lt;enrica@apple.com&gt;
+
+        WK2: Selection callout bar does not scroll with the selection.
+        https://bugs.webkit.org/show_bug.cgi?id=128142
+        &lt;rdar://problem/15970812&gt;
+
+        Reviewed by Benjamin Poulain.
+
+        Adding notifications to WKContentView to all the delegates
+        for scrolling and zooming to let WKInteractionView about it.
+        This allows the interaction assistants to hide the callout
+        while scrolling or zooming and to fade it in again at the end.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView scrollViewWillBeginZooming:withView:]):
+        (-[WKWebView scrollViewWillBeginDragging:]):
+        * UIProcess/API/ios/WKContentView.h:
+        * UIProcess/API/ios/WKContentView.mm:
+        (-[WKContentView didFinishScrollTo:]):
+        (-[WKContentView willStartZoomOrScroll]):
+        (-[WKContentView didZoomToScale:]):
+        * UIProcess/API/ios/WKInteractionView.h:
+        * UIProcess/API/ios/WKInteractionView.mm:
+        (-[WKInteractionView _willStartScrollingOrZooming]):
+        (-[WKInteractionView _didEndScrollingOrZooming]):
+        * UIProcess/API/ios/WKViewIOS.mm:
+        (-[WKView scrollViewWillBeginZooming:withView:]):
+        (-[WKView scrollViewWillBeginDragging:]):
+
</ins><span class="cx"> 2014-02-04  Tamas Gergely  &lt;tgergely.u-szeged@partner.samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Code cleanup: remove leftover occurrence of ENABLE(GESTURE_EVENTS)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (163387 => 163388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2014-02-04 18:05:06 UTC (rev 163387)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2014-02-04 18:41:07 UTC (rev 163388)
</span><span class="lines">@@ -271,8 +271,14 @@
</span><span class="cx"> {
</span><span class="cx">     if (scrollView.pinchGestureRecognizer.state == UIGestureRecognizerStateBegan)
</span><span class="cx">         _userHasChangedPageScale = YES;
</span><ins>+    [_contentView willStartZoomOrScroll];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
+{
+    [_contentView willStartZoomOrScroll];
+}
+
</ins><span class="cx"> - (void)_didFinishScroll
</span><span class="cx"> {
</span><span class="cx">     CGPoint position = [_scrollView convertPoint:[_scrollView contentOffset] toView:_contentView.get()];
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIiosWKContentViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.h (163387 => 163388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.h        2014-02-04 18:05:06 UTC (rev 163387)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.h        2014-02-04 18:41:07 UTC (rev 163388)
</span><span class="lines">@@ -70,5 +70,6 @@
</span><span class="cx"> - (void)didFinishScrollTo:(CGPoint)contentOffset;
</span><span class="cx"> - (void)didScrollTo:(CGPoint)contentOffset;
</span><span class="cx"> - (void)didZoomToScale:(CGFloat)scale;
</span><ins>+- (void)willStartZoomOrScroll;
</ins><span class="cx"> 
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIiosWKContentViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm (163387 => 163388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm        2014-02-04 18:05:06 UTC (rev 163387)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm        2014-02-04 18:41:07 UTC (rev 163388)
</span><span class="lines">@@ -215,6 +215,7 @@
</span><span class="cx">     _page-&gt;didFinishScrolling(contentOffset);
</span><span class="cx">     [self _updateViewExposedRect];
</span><span class="cx">     [self _updateFixedPositionRect];
</span><ins>+    [_interactionView _didEndScrollingOrZooming];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)didScrollTo:(CGPoint)contentOffset
</span><span class="lines">@@ -225,11 +226,17 @@
</span><span class="cx">     _page-&gt;scrollingCoordinatorProxy()-&gt;scrollPositionChangedViaDelegatedScrolling(_page-&gt;scrollingCoordinatorProxy()-&gt;rootScrollingNodeID(), roundedIntPoint(contentOffset));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)willStartZoomOrScroll
+{
+    [_interactionView _willStartScrollingOrZooming];
+}
+
</ins><span class="cx"> - (void)didZoomToScale:(CGFloat)scale
</span><span class="cx"> {
</span><span class="cx">     _page-&gt;didFinishZooming(scale);
</span><span class="cx">     [self _updateViewExposedRect];
</span><span class="cx">     [self _updateFixedPositionRect];
</span><ins>+    [_interactionView _didEndScrollingOrZooming];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #pragma mark Internal
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIiosWKInteractionViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKInteractionView.h (163387 => 163388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/ios/WKInteractionView.h        2014-02-04 18:05:06 UTC (rev 163387)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKInteractionView.h        2014-02-04 18:41:07 UTC (rev 163388)
</span><span class="lines">@@ -63,6 +63,7 @@
</span><span class="cx"> - (void)_attemptClickAtLocation:(CGPoint)location;
</span><span class="cx"> - (void)_updatePositionInformation;
</span><span class="cx"> - (void)_performAction:(WebKit::WKSheetActions)action;
</span><del>-
</del><ins>+- (void)_willStartScrollingOrZooming;
+- (void)_didEndScrollingOrZooming;
</ins><span class="cx"> @property (readonly, nonatomic) WebKit::InteractionInformationAtPosition positionInformation;
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIiosWKInteractionViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKInteractionView.mm (163387 => 163388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/ios/WKInteractionView.mm        2014-02-04 18:05:06 UTC (rev 163387)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKInteractionView.mm        2014-02-04 18:41:07 UTC (rev 163388)
</span><span class="lines">@@ -679,6 +679,18 @@
</span><span class="cx">         [_actionSheetAssistant updateSheetPosition];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)_willStartScrollingOrZooming
+{
+    [_webSelectionAssistant willStartScrollingOrZoomingPage];
+    [_textSelectionAssistant willStartScrollingOverflow];
+}
+
+- (void)_didEndScrollingOrZooming
+{
+    [_webSelectionAssistant didEndScrollingOrZoomingPage];
+    [_textSelectionAssistant didEndScrollingOverflow];
+}
+
</ins><span class="cx"> - (UIView *)inputAccessoryView
</span><span class="cx"> {
</span><span class="cx">     if (!_isEditable)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIiosWKViewIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm (163387 => 163388)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm        2014-02-04 18:05:06 UTC (rev 163387)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm        2014-02-04 18:41:07 UTC (rev 163388)
</span><span class="lines">@@ -191,8 +191,14 @@
</span><span class="cx"> {
</span><span class="cx">     if (scrollView.pinchGestureRecognizer.state == UIGestureRecognizerStateBegan)
</span><span class="cx">         _userHasChangedPageScale = YES;
</span><ins>+    [_contentView willStartZoomOrScroll];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
+{
+    [_contentView willStartZoomOrScroll];
+}
+
</ins><span class="cx"> - (void)_didFinishScroll
</span><span class="cx"> {
</span><span class="cx">     CGPoint position = [_scrollView convertPoint:[_scrollView contentOffset] toView:_contentView.get()];
</span></span></pre>
</div>
</div>

</body>
</html>