[webkit-qt] Gestures

Misha Tyutyunik michael.tyutyunik at nokia.com
Mon Oct 17 06:42:26 PDT 2011


Hi,

1. I think we need to be clear on terminology here.
Touch events are events that platform (Qt in our case) sends when user 
touches the screen or move his fingers on the screen or lifts fingers 
from the screen.
Gestures are sequence of touch events. Several touch events may produce 
only one gesture.

2. Touch events are propagated to JavaScript and can be used there. 
There are no gesture events that can be used in JavaScript. Because of 
this if the web page needs some gesture (flick, swipe, pinch etc) it has 
to implement its own gesture recognition in JavaScript. That is what 
happens on several Google pages (maps, gmail).

3. Yes, you are right. You have to first give the page the chance to 
deal with touch events. Although, you have to be careful here as page 
might have a gesture that override behavior of your app.
For example, in you app pinch zooms the whole page, while pinch in 
JavaScript zooms just one div or something like this.
But in general you can do something like this:

---------------------
Assumption:
For each touch begin system will send one and only one touch end.
mouse events are sent to web engine only if touch event has only one 
touch point (tuch was done by just one finger).


Pseudo Code:

Platform_touch_begin_event_handler()
{
     touchBeginConsumed = sendTouchBeginEventToWebEngine()
     if (!touchBeginConsumed) {
         sendMouseMoveEventToWebEngine(); // to trigger mouse over
         sendMousePressEventToWebEngine();
     }
}

Platform_touch_update_event_handler()
{
     touchUpdateConsumed = sendTouchUpdateToWebEngine();
     if (!touchUpdateConsumed) {
        if (needMouseMoveEvents())
            sendMouseMoveEventToWebEngine(); // to select text in text 
area, for example.
                                                                         
// only for one finger touch
        if (needToScroll()) // for example, if it's one finger move.
             scrollPage();
     }
}

Platform_touch_end_handler()
{
     touchEndConsumed = sendTouchEndToWebengine();
     if (!touchBeginConsumed && !touchEndConsumed) {

         //optional?? It seems that iPhone does it.
         if (!contentChangedAfterMouseMove())
             sendMouseReleaseEventToWebEngine();
     }
}



Br,
Misha


On 10/17/2011 07:55 AM, ext Felipe Crochik wrote:
> Hi Ariya,
>
> That is the problem: how can I "separate" the touch events implemented 
> by web sites (e.g. pinching on the map on google maps or swiping on a 
> results page of a google images search to switch page) from "gestures 
> for user interaction" (e.g. change the zoom factor, scroll the page)?
>
> It seems that I should first give the "page" a chance to deal with the 
> gestures and only if they are not "needed" have them interact with the 
> whole view. Every "sample" I have seen will start by intercepting any 
> user mouse/touch/gesture events and just forward to "webkit" the mouse 
> clicks.
>
> p.s. I really enjoy reading your blog and many times came across your 
> work. Thanks!
>
> Felipe
>
> On Sun, Oct 16, 2011 at 11:15 PM, Ariya Hidayat 
> <ariya.hidayat at gmail.com <mailto:ariya.hidayat at gmail.com>> wrote:
>
>     On Sun, Oct 16, 2011 at 6:40 PM, Felipe Crochik
>     <felipe at crochik.com <mailto:felipe at crochik.com>> wrote:
>     > I can't seem to find a definitive answer where Qt Webkit "can"
>     or can't
>     > support gestures (pinch, swipe, ...)
>
>     Do you mean the gestures for user interactions? For example, pinch can
>     be used to zoom in and out, swipe to flick the view, etc. In that
>     case, those gestures are application-specific gestures and should be
>     handled at the application level, e.g. the browser which uses
>     QtWebKit.
>
>     If what you mean is touch events (http://www.w3.org/TR/touch-events/),
>     then see http://trac.webkit.org/wiki/QtWebKitFeatures21.
>
>
>
>
>     --
>     Ariya Hidayat, http://ariya.ofilabs.com
>
>
>
>
> _______________________________________________
> webkit-qt mailing list
> webkit-qt at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-qt/attachments/20111017/acb94bdc/attachment.html>


More information about the webkit-qt mailing list