RESOLVED FIXED 113066
[Qt][WK2] WebView's interactive property is not fully respected
https://bugs.webkit.org/show_bug.cgi?id=113066
Summary [Qt][WK2] WebView's interactive property is not fully respected
Andras Becsi
Reported 2013-03-22 08:40:19 PDT
[Qt][WK2] WebView's interactive property is not fully respected
Attachments
Patch (1.96 KB, patch)
2013-03-22 08:40 PDT, Andras Becsi
no flags
Patch (4.15 KB, patch)
2013-03-22 11:05 PDT, Andras Becsi
no flags
Patch (4.08 KB, patch)
2013-03-25 10:35 PDT, Andras Becsi
no flags
Andras Becsi
Comment 1 2013-03-22 08:40:55 PDT
Andras Becsi
Comment 2 2013-03-22 08:44:43 PDT
Flickable also disables wheel scrolling if set to non-interactive, but disabling scrolling would mean that we would also ignore scroll requests coming from the web content which would not be a preferable behaviour.
Jocelyn Turcotte
Comment 3 2013-03-22 08:57:50 PDT
Comment on attachment 194557 [details] Patch Do we disable pinching somehow already?
Andras Becsi
Comment 4 2013-03-22 11:05:14 PDT
Andras Becsi
Comment 5 2013-03-22 11:06:53 PDT
(In reply to comment #3) > (From update of attachment 194557 [details]) > Do we disable pinching somehow already? Indeed, that's also circumventing the Flickable, so we need to ignore requests.
Jocelyn Turcotte
Comment 6 2013-03-25 08:15:41 PDT
Comment on attachment 194601 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=194601&action=review > Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp:433 > + if (!m_controller->allowsUserScaling() || !m_viewportItem->isInteractive()) An edge case would be if the user code sets interactive = false as a response of a certain pinch, or just randomly while a pinch is ongoing. In that case we should avoid inconsistent states, which I think could happen if we just stop listening in every callback from the recognizer. Handling this in the gesture recognizer itself would allow us to force a pinchGestureCancelled(), but this wouldn't allow us to easily send pinch gestures to the web page in the future if interactive == false. So that might not be better. Any idea?
Andras Becsi
Comment 7 2013-03-25 09:14:07 PDT
(In reply to comment #6) > (From update of attachment 194601 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=194601&action=review > > > Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp:433 > > + if (!m_controller->allowsUserScaling() || !m_viewportItem->isInteractive()) > > An edge case would be if the user code sets interactive = false as a response of a certain pinch, or just randomly while a pinch is ongoing. > In that case we should avoid inconsistent states, which I think could happen if we just stop listening in every callback from the recognizer. This corner case does not seem possible since we do not expose any gesture state in QML, thus there is no direct way to switch interactivity upon a pinch gesture. Indirectly it is possible to change interactivity in response to page size changes, but this does not only happen during pinch zoom. > > Handling this in the gesture recognizer itself would allow us to force a pinchGestureCancelled(), but this wouldn't allow us to easily send pinch gestures to the web page in the future if interactive == false. So that might not be better. > Any idea? I don't think changes in interactivity should force panGestureCancelled() since the gesture would not actually be cancelled it would only be ignored. Although the condition in pinchGestureEnded() has to be improved so that no such case can result in an inconsistent state.
Andras Becsi
Comment 8 2013-03-25 10:35:42 PDT
Jocelyn Turcotte
Comment 9 2013-03-26 03:57:24 PDT
LGTM Benjamin, could you have a look?
Andras Becsi
Comment 10 2013-04-03 03:19:54 PDT
Ping for review?
Benjamin Poulain
Comment 11 2013-04-05 12:25:50 PDT
Comment on attachment 194884 [details] Patch Good to go for WebKit2.
Andras Becsi
Comment 12 2013-04-08 04:11:55 PDT
Andras Becsi
Comment 13 2013-04-08 04:12:33 PDT
Comment on attachment 194884 [details] Patch Clearing flags from attachment.
Note You need to log in before you can comment on or make changes to this bug.