[Development] QML - PathView not responding on drag event with touch

Rutledge Shawn Shawn.Rutledge at digia.com
Fri May 3 09:30:34 CEST 2013


On 30 Apr 2013, at 9:13 AM, Matteo Brichese wrote:

>> PathView, like many QtQuick components that you might think of as touch-oriented, is actually only handling mouse >events.  So it works because it will get synthesized mouse events on devices that don't already provide them.  (The >upside is it should work the same with mouse and touch.  The downside is the circuitous path the touch events take >to get there.)
>> If your device is running Linux with x11 you might try xev or xinput or mttest to see if it sends any events >otherwise.  It's strange that just having multitouch makes it worse.  Can you send the output of lsinput?
> 
> I don't have lsinput command on my board, it's an angstrom distribution.

You say that like it's a bad thing.  ;-)  Angstrom is a meta-distribution built with openembedded (or yocto), so if you're developing a product you have a lot of flexibility to customize it and build whatever packages you want; no need to depend on some vendor to keep it up to date either.  You can also install gcc right on the embedded system if that makes it easier to quickly build and test things.  But there is a learning curve to fix the inevitable build problems when you start using bitbake to rebuild the whole distro.

>> If you are using evdevtouch, I guess it's because the X11 driver isn't working or isn't installed or you aren't running >X?  So probably Qt will only see touch events, not mouse events, by reading them directly from evdev, and there >are about 3 places mouse events could be synthesized, but we expect that they should be synthesized in >QQuickWindow.  Hopefully you are using QGuiApplication, but if you have a QApplication you might need to turn >off the Qt::AA_SynthesizeMouseForUnhandledTouchEvents attribute to make sure it can't happen twice.  (That >type of synthesis will probably be removed, by this patch:  https://codereview.qt-project.org/#change,54816  >because it seems redundant.)
> 
> I'm using X and xcb plugin, no eglfs by now, it's a Tegra2 device, touchscreen is an eGalax touchscreen (USB+DVI), I'm using QApplication, and the only thing I do is to launch the main.qml file.

With qmlscene or your own C++?

>> Nowadays Qt has support for multitouch via xinput 2.2, so if you have a recent X server, xinput and evdev, you >shouldn't need the evdevtouch plugin anymore.
> 
> I don't know why I'm using evdevtouch, but it's seems that the multitouch capabilities only works if I specify the evdevtouch parameter, if I don't specify anything or some other options like "-plugin evdev:/dev/input/event1" or with tslib or xinput, multitouch simply doesn't work.
> 
> My Xorg version is :
> X.Org X Server 1.11.2
> Release Date: 2011-11-04

So it's too old for xinput 2.2; that was done early in 2012.

I tried on my Lenovo S10-3t, disabling the touchscreen evdev support in X and using the evdevtouch plugin instead, with a path view.  It seems OK (except for the physics being a bit "off" as documented in bug 29801).  You can try the qml from that bug too, to see if it's just PathView or some combination that is behaving strangely.




More information about the Development mailing list