Changeset 154382 in webkit
- Timestamp:
- Aug 21, 2013, 5:52:31 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/events/autoscroll-upwards-propagation-expected.txt (added)
-
LayoutTests/fast/events/autoscroll-upwards-propagation.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderLayer.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r154379 r154382 1 2013-08-19 Antonio Gomes <a1.gomes@sisa.samsung.com> 2 3 Text dragging can scroll overflow:hidden boxes 4 https://bugs.webkit.org/show_bug.cgi?id=119760 5 6 Reviewed by Darin Adler. 7 Patch by Antonio Gomes <a1.gomes@sisa.samsung.com> 8 9 * fast/events/autoscroll-upwards-propagation-expected.txt: Added. 10 * fast/events/autoscroll-upwards-propagation.html: Added. 11 1 12 2013-08-20 Gavin Barraclough <barraclough@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r154378 r154382 1 2013-08-19 Antonio Gomes <a1.gomes@sisa.samsung.com> 2 3 Text dragging can scroll overflow:hidden boxes 4 https://bugs.webkit.org/show_bug.cgi?id=119760 5 6 Reviewed by Darin Adler. 7 8 Consider the case of the following HTML: 9 <div style="overflow:hidden; width: 100px; height: 100px" > 10 <input id="input" type="text" size=10 value="any text here!"/> 11 <button style="position:relative; top: 100px; left: 100px"/> 12 </div> 13 14 If ones starts a text selection by dragging the mouse from within the input 15 field, and continues to drag beyong the outer div boundary, the latter will 16 be scrolled no matter its overflow:hidden style. 17 That happens because when the autoscroll has started, it gets propagated up 18 to the current layer's parent layer, instead of the to current layer's enclosing 19 scrollable layer. 20 21 Patch fixes the issue by hardening the way scrolling is 22 propagated upwards when autoscroll is being performed. 23 24 RenderLayer::enclosingScrollableLayer method also got rewritten 25 in terms of RenderLayer tree traversing, instead of RenderObject tree. 26 The rewrite adds support for cross frame upwards traversal. 27 28 Test: fast/events/autoscroll-upwards-propagation.html 29 30 * rendering/RenderLayer.cpp: 31 (WebCore::parentLayerCrossFrame): 32 (WebCore::RenderLayer::enclosingScrollableLayer): 33 (WebCore::RenderLayer::scrollRectToVisible): 34 1 35 2013-08-20 Jer Noble <jer.noble@apple.com> 2 36 -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r154286 r154382 1380 1380 } 1381 1381 1382 static RenderLayer* parentLayerCrossFrame(const RenderLayer* layer) 1383 { 1384 ASSERT(layer); 1385 if (layer->parent()) 1386 return layer->parent(); 1387 1388 RenderObject* renderer = layer->renderer(); 1389 Document* document = renderer->document(); 1390 if (!document) 1391 return 0; 1392 1393 HTMLFrameOwnerElement* ownerElement = document->ownerElement(); 1394 if (!ownerElement) 1395 return 0; 1396 1397 RenderObject* ownerRenderer = ownerElement->renderer(); 1398 if (!ownerRenderer) 1399 return 0; 1400 1401 return ownerRenderer->enclosingLayer(); 1402 } 1403 1382 1404 RenderLayer* RenderLayer::enclosingScrollableLayer() const 1383 1405 { 1384 for (Render Object* nextRenderer = renderer()->parent(); nextRenderer; nextRenderer = nextRenderer->parent()) {1385 if (next Renderer->isBox() && toRenderBox(nextRenderer)->canBeScrolledAndHasScrollableArea())1386 return next Renderer->enclosingLayer();1406 for (RenderLayer* nextLayer = parentLayerCrossFrame(this); nextLayer; nextLayer = parentLayerCrossFrame(nextLayer)) { 1407 if (nextLayer->renderer()->isBox() && toRenderBox(nextLayer->renderer())->canBeScrolledAndHasScrollableArea()) 1408 return nextLayer; 1387 1409 } 1388 1410 … … 2367 2389 } 2368 2390 2391 if (renderer()->frame()->eventHandler().autoscrollInProgress()) 2392 parentLayer = enclosingScrollableLayer(); 2393 2369 2394 if (parentLayer) 2370 2395 parentLayer->scrollRectToVisible(newRect, alignX, alignY);
Note:
See TracChangeset
for help on using the changeset viewer.