[webkit-dev] Scrolling overflow:hidden boxes..

2013-08-16 Thread Antonio Gomes
Hi.

Bug https://bugs.webkit.org/show_bug.cgi?id=119760 (Text dragging can
scroll overflow:hidden boxes) caught  my attention to the following
situation:

- imagine a page has an input field within a overflow:hidden div,
and user starts text selecting from the input field text by dragging
with the mouse. At some point it goes outside of the input boundary,
reaches the outer div boundary. By then, 'autoscroll' takes place
(see WebCore/page/AutoscrollController.cpp/h), and scrolls the outter
div. In my opinion, it should not happen, due to div's
overflow:hidden style.

A natural solution for that could be hardening
RenderLayer::scrollRectToVisible, when its upwards recursion occurs;
so instead of picking the current layer parent, it picks the enclosing
scrollable layer instead.

However, it seems acceptable that overflow:hidden div's RenderLayers
are  scrollable in certain situations. Consider the case of
Element.scrollIntoView(), for example: as of now, WebKit scrolls an
container overflow:hidden div, if it is to bring an HTML element into
view.

Both situations go through the same RenderLayer::scrollRectToVisible method.

Introducing a ScrollSource parameter to indicate where the scrolling
action came from (user interaction or not), and relax or harden the
recursion criteria accordingly would not help, because it would break
autoscrolling within shadow DOM content (think of autoscrolling an
input's shadow DOM div).

Do you guys have thoughts on that?

Cheers,

--Antonio
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev


Re: [webkit-dev] Scrolling overflow:hidden boxes..

2013-08-16 Thread Simon Fraser
On Aug 16, 2013, at 2:45 PM, Antonio Gomes toniki...@webkit.org wrote:

 Hi.
 
 Bug https://bugs.webkit.org/show_bug.cgi?id=119760 (Text dragging can
 scroll overflow:hidden boxes) caught  my attention to the following
 situation:
 
 - imagine a page has an input field within a overflow:hidden div,
 and user starts text selecting from the input field text by dragging
 with the mouse. At some point it goes outside of the input boundary,
 reaches the outer div boundary. By then, 'autoscroll' takes place
 (see WebCore/page/AutoscrollController.cpp/h), and scrolls the outter
 div. In my opinion, it should not happen, due to div's
 overflow:hidden style.
 
 A natural solution for that could be hardening
 RenderLayer::scrollRectToVisible, when its upwards recursion occurs;
 so instead of picking the current layer parent, it picks the enclosing
 scrollable layer instead.
 
 However, it seems acceptable that overflow:hidden div's RenderLayers
 are  scrollable in certain situations. Consider the case of
 Element.scrollIntoView(), for example: as of now, WebKit scrolls an
 container overflow:hidden div, if it is to bring an HTML element into
 view.
 
 Both situations go through the same RenderLayer::scrollRectToVisible method.
 
 Introducing a ScrollSource parameter to indicate where the scrolling
 action came from (user interaction or not), and relax or harden the
 recursion criteria accordingly would not help, because it would break
 autoscrolling within shadow DOM content (think of autoscrolling an
 input's shadow DOM div).
 
 Do you guys have thoughts on that?

How do other browsers behave in terms of drag-scrolling of overflow:hidden, 
revealing content in overflow:hidden, and programmatic scrolling of 
overflow:hidden?

Simon

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev


Re: [webkit-dev] Scrolling overflow:hidden boxes..

2013-08-16 Thread Antonio Gomes
I did not test exhaustively (various different scenarios), but
hopefully it is of help:

- text selection drag-scrolling of overflow:hidden :
http://jsfiddle.net/auk9S/8/

Safari/Chrome/Opera15: perform scroll
Mozilla: does not perform scroll
Opera12 (pre-blink): does not perform scroll

- programmatic scrolling of overflow:hidden (via
element.scrollIntoView):
LayoutTests/fast/transforms/scrollIntoView-transformed.html

Sarafi/Chrome/Opera15: perform scroll
Mozilla: perform scroll
Opera12 (pre-blink): perform scroll


On Fri, Aug 16, 2013 at 6:26 PM, Simon Fraser simon.fra...@apple.com wrote:
 On Aug 16, 2013, at 2:45 PM, Antonio Gomes toniki...@webkit.org wrote:

 Hi.

 Bug https://bugs.webkit.org/show_bug.cgi?id=119760 (Text dragging can
 scroll overflow:hidden boxes) caught  my attention to the following
 situation:

 - imagine a page has an input field within a overflow:hidden div,
 and user starts text selecting from the input field text by dragging
 with the mouse. At some point it goes outside of the input boundary,
 reaches the outer div boundary. By then, 'autoscroll' takes place
 (see WebCore/page/AutoscrollController.cpp/h), and scrolls the outter
 div. In my opinion, it should not happen, due to div's
 overflow:hidden style.

 A natural solution for that could be hardening
 RenderLayer::scrollRectToVisible, when its upwards recursion occurs;
 so instead of picking the current layer parent, it picks the enclosing
 scrollable layer instead.

 However, it seems acceptable that overflow:hidden div's RenderLayers
 are  scrollable in certain situations. Consider the case of
 Element.scrollIntoView(), for example: as of now, WebKit scrolls an
 container overflow:hidden div, if it is to bring an HTML element into
 view.

 Both situations go through the same RenderLayer::scrollRectToVisible method.

 Introducing a ScrollSource parameter to indicate where the scrolling
 action came from (user interaction or not), and relax or harden the
 recursion criteria accordingly would not help, because it would break
 autoscrolling within shadow DOM content (think of autoscrolling an
 input's shadow DOM div).

 Do you guys have thoughts on that?

 How do other browsers behave in terms of drag-scrolling of overflow:hidden,
 revealing content in overflow:hidden, and programmatic scrolling of 
 overflow:hidden?

 Simon

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev