on xenial help sign in
Fix pull to refresh on short windows
commit24e6f4295646fa5f34cf978035df6e1b5f70ce09 authorAndrea Cimitan <andrea.cimitan@gmail.com> dateTue 7 Jun 2016, 11:46 (10 years ago) parent7fdbae9
2 files changed+48−1
qml/Dash/PullToRefreshScopeStyle.qml+20−1 tests/qmltests/Dash/tst_GenericScopeView.qml+28
qml/Dash/PullToRefreshScopeStyle.qml+20−1
@@ -24,7 +24,17 @@ import Ubuntu.Components.Styles 1.3
2424 * a subclass of the Ambiance version with a hidden ActivityIndicator.
2525 */
2626PullToRefreshStyle {
27− releaseToRefresh: styledItem.target.originY - styledItem.target.contentY > activationThreshold
27+ id: pullToRefreshScopeStyle
28+ readonly property Item rootItem: QuickUtils.rootItem(pullToRefreshScopeStyle)
29+ readonly property bool timerEnabled: activationThreshold > rootItem.height / 3
30+ property bool timerTriggered: false
31+ releaseToRefresh: timerTriggered || styledItem.target.originY - styledItem.target.contentY > activationThreshold
32+
33+ Timer {
34+ id: timer
35+ interval: 1000
36+ onTriggered: pullToRefreshScopeStyle.timerTriggered = true
37+ }
2838
2939 Connections {
3040 property bool willRefresh: false
@@ -34,6 +44,15 @@ PullToRefreshStyle {
3444 if (!styledItem.target.dragging && releaseToRefresh) {
3545 willRefresh = true
3646 }
47+
48+ if (!timerEnabled) return;
49+
50+ if (styledItem.target.dragging) {
51+ timer.start()
52+ } else {
53+ timer.stop()
54+ pullToRefreshScopeStyle.timerTriggered = false
55+ }
3756 }
3857 onContentYChanged: {
3958 if (styledItem.target.originY - styledItem.target.contentY == 0 && willRefresh) {
tests/qmltests/Dash/tst_GenericScopeView.qml+28
@@ -583,6 +583,34 @@ Item {
583583
584584 spy.wait()
585585 compare(spy.count, 1)
586+
587+ // test short swipe doesn't refresh on tall window
588+ mouseFlick(genericScopeView,
589+ genericScopeView.width/2, units.gu(10),
590+ genericScopeView.width/2, units.gu(15),
591+ true, false)
592+ mouseRelease(genericScopeView)
593+ compare(spy.count, 1)
594+
595+ // resize window, repeat the test
596+ var initialHeight = shell.height
597+ shell.height = units.gu(30)
598+ waitForRendering(shell)
599+ mouseFlick(genericScopeView,
600+ genericScopeView.width/2, units.gu(10),
601+ genericScopeView.width/2, units.gu(15),
602+ true, false)
603+
604+ tryCompare(pullToRefresh, "releaseToRefresh", true)
605+
606+ mouseRelease(genericScopeView)
607+ tryCompare(pullToRefresh, "releaseToRefresh", false)
608+
609+ spy.wait()
610+ compare(spy.count, 2)
611+
612+ shell.height = initialHeight
613+ waitForRendering(shell)
586614 }
587615
588616 function test_item_noninteractive() {