on xenial help sign in
Use a MouseArea to eat touch events while edge gesture, because the second touch point will cause the valuse of contendX of the spreadView unpredictable
commit459eec45aeee241140087999c34d554f8769da2b authorhandsome_feng <445865575@qq.com> dateTue 26 May 2015, 16:28 (11 years ago) parent1a612cd
3 files changed+19−15
qml/Stages/PhoneStage.qml+8−1 qml/Stages/TabletStage.qml+7−1 tests/qmltests/Stages/tst_PhoneStage.qml+4−13
qml/Stages/PhoneStage.qml+8−1
@@ -319,7 +319,7 @@ Rectangle {
319319 otherSelected: spreadView.selectedIndex >= 0 && !selected
320320 interactive: !spreadView.interactive && spreadView.phase === 0
321321 && spreadView.shiftedContentX === 0 && root.interactive && isFocused
322− swipeToCloseEnabled: !spreadDragArea.dragging && spreadView.interactive && root.interactive && !snapAnimation.running
322+ swipeToCloseEnabled: spreadView.interactive && root.interactive && !snapAnimation.running
323323 maximizedAppTopMargin: root.maximizedAppTopMargin
324324 dropShadow: spreadView.active ||
325325 (priv.focusedAppDelegate && priv.focusedAppDelegate.x !== 0)
@@ -449,6 +449,13 @@ Rectangle {
449449 }
450450 }
451451
452+ //eat touch events during the right edge gesture
453+ MouseArea {
454+ objectName: "MouseArea"
455+ anchors.fill: parent
456+ enabled: spreadDragArea.dragging
457+ }
458+
452459 DirectionalDragArea {
453460 id: spreadDragArea
454461 objectName: "spreadDragArea"
qml/Stages/TabletStage.qml+7−1
@@ -503,7 +503,7 @@ Rectangle {
503503 otherSelected: spreadView.selectedIndex >= 0 && !selected
504504 isInSideStage: priv.sideStageAppId == model.appId
505505 interactive: !spreadView.interactive && spreadView.phase === 0 && root.interactive
506− swipeToCloseEnabled: !spreadDragArea.dragging && spreadView.interactive && !snapAnimation.running
506+ swipeToCloseEnabled: spreadView.interactive && !snapAnimation.running
507507 maximizedAppTopMargin: root.maximizedAppTopMargin
508508 dragOffset: !isDash && model.appId == priv.mainStageAppId && root.inverseProgress > 0 && spreadView.phase === 0 ? root.inverseProgress : 0
509509 application: ApplicationManager.get(index)
@@ -597,6 +597,12 @@ Rectangle {
597597 }
598598 }
599599
600+ //eat touch events during the right edge gesture
601+ MouseArea {
602+ anchors.fill: parent
603+ enabled: spreadDragArea.dragging
604+ }
605+
600606 DirectionalDragArea {
601607 id: spreadDragArea
602608 anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
tests/qmltests/Stages/tst_PhoneStage.qml+4−13
@@ -399,14 +399,9 @@ Item {
399399 tryCompare(spreadView, "contentX", -spreadView.shift)
400400 }
401401
402− function test_cantCloseAppWhileRightEdgeGesture() {
403− addApps(2)
404−
402+ function test_cantAccessPhoneStageWhileRightEdgeGesture() {
405403 var spreadView = findChild(phoneStage, "spreadView");
406−
407− var app0 = findChild(spreadView, "appDelegate0");
408− var app1 = findChild(spreadView, "appDelegate1");
409− var app2 = findChild(spreadView, "appDelegate2");
404+ var mouseArea = findChild(phoneStage, "MouseArea")
410405
411406 var startX = phoneStage.width - 2;
412407 var startY = phoneStage.height / 2;
@@ -416,15 +411,11 @@ Item {
416411 touchFlick(phoneStage, startX, startY, endX, endY,
417412 true /* beginTouch */, false /* endTouch */, units.gu(10), 50);
418413
419− tryCompare(app0, "swipeToCloseEnabled", false);
420− tryCompare(app1, "swipeToCloseEnabled", false);
421− tryCompare(app2, "swipeToCloseEnabled", false);
414+ compare(mouseArea.enabled, true);
422415
423416 touchRelease(phoneStage, endX, endY);
424417
425− tryCompare(app0,"swipeToCloseEnabled", true);
426− tryCompare(app1, "swipeToCloseEnabled", true);
427− tryCompare(app2, "swipeToCloseEnabled", true);
418+ compare(mouseArea.enabled, false);
428419 }
429420
430421 function test_leftEdge_data() {