RESOLVED FIXED Bug 90550
Wheel events on a page with frames are not handled in fixed layout
https://bugs.webkit.org/show_bug.cgi?id=90550
Summary Wheel events on a page with frames are not handled in fixed layout
Andras Becsi
Reported 2012-07-04 07:51:13 PDT
Since r117069 we also use ScrollView::updateScrollbars() if scroll is delegated (invisible scrollbars). This results in erroneous behavior in fixed layout mode on pages which use frames. This is due to fixed layout enabling frame flattening in which case updateScrollbars disables the scrollbars on the page since the document size is equal to the frame size. This is reproducible with MiniBrowser on the given URL by double tapping to zoom in and then trying to scroll.
Attachments
proposed patch (2.57 KB, patch)
2012-07-04 08:04 PDT, Andras Becsi
no flags
Patch (2.78 KB, patch)
2012-07-25 08:30 PDT, Allan Sandfeld Jensen
tonikitoo: review+
Andras Becsi
Comment 1 2012-07-04 08:04:09 PDT
Created attachment 150797 [details] proposed patch
Andras Becsi
Comment 2 2012-07-04 08:13:07 PDT
Comment on attachment 150797 [details] proposed patch View in context: https://bugs.webkit.org/attachment.cgi?id=150797&action=review > Source/WebCore/ChangeLog:17 > + Need to figure out a way to test this, probably with > + a QML API test since WTR does not use frame flattening. Turns out that there is testRunner.setFrameFlatteningEnabled(true), and there are layout tests for this. Need to check the Skipped list as well.
Andras Becsi
Comment 3 2012-07-04 08:16:03 PDT
This patch in combination with the patch of bug 90547 also fixes the scrolling in a simple QML WebView loading a simple local html.
Andras Becsi
Comment 4 2012-07-09 03:47:28 PDT
Comment on attachment 150797 [details] proposed patch Even though the patch fixes the scrolling issue it does not seem to be the right solution. I'll revisit this later. Removing patch from review queue.
Allan Sandfeld Jensen
Comment 5 2012-07-25 07:55:34 PDT
Comment on attachment 150797 [details] proposed patch View in context: https://bugs.webkit.org/attachment.cgi?id=150797&action=review > Source/WebCore/platform/ScrollView.cpp:509 > IntSize frameSize = frameRect().size(); > + bool usesFixedLayout = useFixedLayout(); > > if (hScroll == ScrollbarAuto) { > newHasHorizontalScrollbar = docSize.width() > visibleWidth(); > - if (newHasHorizontalScrollbar && !m_updateScrollbarsPass && docSize.width() <= frameSize.width() && docSize.height() <= frameSize.height()) > + if (newHasHorizontalScrollbar && !m_updateScrollbarsPass && !usesFixedLayout && docSize.width() <= frameSize.width() && docSize.height() <= frameSize.height()) I think the real problem here is the use of frameRect().size() since with fixedLayout the frameRect is always the size of the document. It should use visibleContentRect(true) instead.
Allan Sandfeld Jensen
Comment 6 2012-07-25 08:30:40 PDT
Created attachment 154364 [details] Patch A quick alternative patch based on my observersion. This solves most of the problems, though some frames does not create the invisible scroll-bars until the page has been manipulated in some way. Though that is probably a separate bug with a missing updateScrollbar() call somewhere.
Antonio Gomes
Comment 7 2012-07-25 10:43:21 PDT
Comment on attachment 154364 [details] Patch why is this Qt specific?
Allan Sandfeld Jensen
Comment 8 2012-07-25 11:09:45 PDT
(In reply to comment #7) > (From update of attachment 154364 [details]) > why is this Qt specific? I guess it isn't as such, it is only specific to the way Qt uses FrameView, anyone using it the same way would have the same problem.
Allan Sandfeld Jensen
Comment 9 2012-07-30 05:46:20 PDT
But besides the commit title, is there any other comments to the solution, or can it go in?
Antonio Gomes
Comment 10 2012-07-30 06:13:33 PDT
By any chance, do you set fixedLayout for non-mainframe ScrollViews?
Allan Sandfeld Jensen
Comment 11 2012-07-30 06:30:32 PDT
(In reply to comment #10) > By any chance, do you set fixedLayout for non-mainframe ScrollViews? I don't think so, not unless it is a part of frame-flattening (I haven't checked that code in that much detail yet).
Allan Sandfeld Jensen
Comment 12 2012-07-30 07:23:32 PDT
Note You need to log in before you can comment on or make changes to this bug.