I’ve now updated my branch to use the public SwipeArea component from
the UITK, and I’m still seeing an issue similar to the one originally
reported. I can reproduce it with a minimal standalone example:

import QtQuick 2.4
import Ubuntu.Components 1.3
import com.canonical.Oxide 1.11
WebView {
  url: "https://en.wikipedia.org/wiki/Ubuntu_(operating_system)"
  SwipeArea {
    direction: SwipeArea.Upwards
    onDraggingChanged: console.log("dragging:", dragging)
    onDistanceChanged: console.log("distance:", distance)
    anchors {
      left: parent.left
      right: parent.right
      bottom: parent.bottom
    }
    height: units.gu(2)
  }
}

I instrumented oxide to print a log statement every time a touch event
is detected, and when starting a drag even from the bottom edge, the
following happens:

qml: distance: 0
virtual void OxideQQuickWebView::touchEvent(QTouchEvent*) 
QTouchEvent(TouchBegin states: QFlags(0x1), 1 points: (TouchPoint(0 
QRectF(599.979,1848.5 2.9974x2.9974) pressed)))
virtual void OxideQQuickWebView::touchEvent(QTouchEvent*) 
QTouchEvent(TouchUpdate states: QFlags(0x2), 1 points: (TouchPoint(0 
QRectF(613.967,1676.09 2.9974x1.99827) moved)))
virtual void OxideQQuickWebView::touchEvent(QTouchEvent*) 
QTouchEvent(TouchUpdate states: QFlags(0x2), 1 points: (TouchPoint(0 
QRectF(618.213,1623.12 4.99566x2.9974) moved)))
virtual void OxideQQuickWebView::touchEvent(QTouchEvent*) 
QTouchEvent(TouchUpdate states: QFlags(0x2), 1 points: (TouchPoint(0 
QRectF(620.961,1507.47 2.9974x1.99827) moved)))
virtual void OxideQQuickWebView::touchEvent(QTouchEvent*) 
QTouchEvent(TouchUpdate states: QFlags(0x2), 1 points: (TouchPoint(0 
QRectF(620.961,1492.02 2.9974x1.99827) moved)))
qml: dragging: true
qml: distance: 148.6371093749999
[…]
qml: distance: 513.631586442578
qml: dragging: false

It appears the webview is getting a TouchBegin event, followed by a
number of TouchUpdate events, before the SwipeArea even detects a drag.
When it does, events stop being sent to the webview, which as a
consequence never gets a TouchEnd event to match the first TouchBegin
event, leaving it in an inconsistent state.

** Summary changed:

- SwipeArea lets touch events through when a drag is detected
+ SwipeArea lets touch events through before a drag is detected

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1459362

Title:
  SwipeArea lets touch events through before a drag is detected

To manage notifications about this bug go to:
https://bugs.launchpad.net/oxide/+bug/1459362/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to