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

Rutledge Shawn Shawn.Rutledge at digia.com
Tue Apr 30 07:57:54 CEST 2013


On 29 Apr 2013, at 5:25 PM, Matteo Brichese wrote:

> Hi everyone, I'm having some trouble using a PathView on QtQuick2.0 (Qt5.0.2) with my multitouch panel.
> 
> If I use a ListView and I drag it, it scroll smooth and istantly, same as with mouse.
> If I use a PathView and I drag it, it don't scroll istantly bu after some delay, the movement isn't smooth too, it's unusable. onDragStarted and onDragEnded events went in the right moment (as I start dragging)

We were looking at this bug recently, maybe it's related, but I don't think it's as severe as what you are describing:

https://bugreports.qt-project.org/browse/QTBUG-29801

> I launch my test with the option: -plugin evdevtouch:/dev/input/event1 for enable the multitouch, if I launch it with -plugin evdevtouch:/dev/input/event0 I enable only one touch at a time (mapped over the mouse) and everything goes fine.
> 
> So, my question is: is it possible to remap the touch events on the PathView? It's an unhandled situation or there is some hack that I didn't know? Google didn't help me much.
> 
> It could be a problem of my panel as well, but before starting to debug my panel I want to know if some of you is using a PathView with his multitouch device.

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?

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.)

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.




More information about the Development mailing list