Merge lp:~flscogna/ubuntu-terminal-app/fix-1431558 into lp:~ubuntu-terminal-dev/ubuntu-terminal-app/reboot

Proposed by Filippo Scognamiglio
Status: Merged
Approved by: Alan Pope 🍺🐧🐱 πŸ¦„
Approved revision: 66
Merged at revision: 66
Proposed branch: lp:~flscogna/ubuntu-terminal-app/fix-1431558
Merge into: lp:~ubuntu-terminal-dev/ubuntu-terminal-app/reboot
Diff against target: 155 lines (+79/-30)
2 files modified
src/app/qml/TerminalInputArea.qml (+20/-24)
src/app/qml/TerminalPage.qml (+59/-6)
To merge this branch: bzr merge lp:~flscogna/ubuntu-terminal-app/fix-1431558
Reviewer Review Type Date Requested Status
Stefano Verzegnassi Approve
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Ubuntu Terminal Developers Pending
Review via email: mp+253011@code.launchpad.net

Commit message

Fix inconsistent scrolling behaviour.

Description of the change

Fix inconsistent scrolling behaviour.

To post a comment you must log in.
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Stefano Verzegnassi (verzegnassi-stefano) wrote :

LGTM! Great work Filippo, this fixes the issue!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/app/qml/TerminalInputArea.qml'
2--- src/app/qml/TerminalInputArea.qml 2015-02-20 13:03:59 +0000
3+++ src/app/qml/TerminalInputArea.qml 2015-03-16 01:33:38 +0000
4@@ -16,12 +16,11 @@
5 signal touchClick(int x, int y);
6 signal touchPress(int x, int y);
7 signal touchRelease(int x, int y);
8- signal swipeUpDetected();
9- signal swipeDownDetected();
10- signal swipeLeftDetected();
11- signal swipeRightDetected();
12- signal twoFingerSwipeUp();
13- signal twoFingerSwipeDown();
14+
15+ signal swipeYDetected(int steps);
16+ signal swipeXDetected(int steps);
17+ signal twoFingerSwipeYDetected(int steps);
18+ signal twoFingerSwipeXDetected(int steps);
19
20 // Semantic signals
21 signal alternateAction(int x, int y);
22@@ -87,25 +86,22 @@
23 var dragSteps = dragValue / swipeDelta;
24 var dragStepsX = dragValueX / swipeDelta;
25
26+ var dragStepsFloorY = absFloor(dragSteps);
27+ var dragStepsFloorX = absFloor(dragStepsX);
28+
29 if (!__moved && distance(touchPoints[0], __pressPosition) > swipeDelta)
30 __moved = true;
31
32- if (__dragging !== xDragging && absFloor(dragSteps) < absFloor(__prevDragStepsY)) {
33- swipeUpDetected();
34- __dragging = yDragging;
35- } else if (__dragging !== xDragging && absFloor(dragSteps) > absFloor(__prevDragStepsY)) {
36- swipeDownDetected();
37- __dragging = yDragging;
38- } else if (__dragging !== yDragging && absFloor(dragStepsX) < absFloor(__prevDragStepsX)) {
39- swipeLeftDetected();
40- __dragging = xDragging;
41- } else if (__dragging !== yDragging && absFloor(dragStepsX) > absFloor(__prevDragStepsX)) {
42- swipeRightDetected();
43+ if (__dragging !== xDragging && dragStepsFloorY !== __prevDragStepsY) {
44+ swipeYDetected(dragStepsFloorY - __prevDragStepsY);
45+ __dragging = yDragging;
46+ } else if (__dragging !== yDragging && dragStepsFloorX !== __prevDragStepsX) {
47+ swipeXDetected(dragStepsFloorX - __prevDragStepsX);
48 __dragging = xDragging;
49 }
50
51- __prevDragStepsY = dragSteps;
52- __prevDragStepsX = dragStepsX;
53+ __prevDragStepsY = dragStepsFloorY;
54+ __prevDragStepsX = dragStepsFloorX;
55 }
56 onReleased: {
57 var timerRunning = pressAndHoldTimer.running;
58@@ -142,13 +138,13 @@
59 var dragValue = touchPoint.y - __pressPosition.y;
60 var dragSteps = dragValue / swipeDelta;
61
62- if (absFloor(dragSteps) < absFloor(__prevDragSteps)) {
63- twoFingerSwipeUp();
64- } else if (absFloor(dragSteps) > absFloor(__prevDragSteps)) {
65- twoFingerSwipeDown();
66+ var dragStepsFloorY = absFloor(dragSteps);
67+
68+ if (dragStepsFloorY !== __prevDragSteps) {
69+ twoFingerSwipeYDetected(dragStepsFloorY - __prevDragSteps);
70 }
71
72- __prevDragSteps = dragSteps;
73+ __prevDragSteps = dragStepsFloorY;
74 }
75
76 mouseEnabled: false
77
78=== modified file 'src/app/qml/TerminalPage.qml'
79--- src/app/qml/TerminalPage.qml 2015-02-20 13:03:59 +0000
80+++ src/app/qml/TerminalPage.qml 2015-03-16 01:33:38 +0000
81@@ -55,15 +55,68 @@
82 onMouseWheelDetected: terminal.simulateWheel(x, y, buttons, modifiers, angleDelta);
83
84 // Touch actions
85- onSwipeUpDetected: terminal.simulateWheel(width * 0.5, height * 0.5, Qt.NoButton, Qt.NoModifier, Qt.point(0, -wheelValue));
86- onSwipeDownDetected: terminal.simulateWheel(width * 0.5, height * 0.5, Qt.NoButton, Qt.NoModifier, Qt.point(0, wheelValue));
87 onTouchClick: terminal.simulateKeyPress(Qt.Key_Tab, Qt.NoModifier, true, 0, "");
88- onTwoFingerSwipeUp: terminal.simulateKeyPress(Qt.Key_Up, Qt.NoModifier, true, 0, "");
89- onTwoFingerSwipeDown: terminal.simulateKeyPress(Qt.Key_Down, Qt.NoModifier, true, 0, "");
90 onTouchPressAndHold: alternateAction(x, y);
91
92- onSwipeLeftDetected: terminal.simulateKeyPress(Qt.Key_Left, Qt.NoModifier, true, 0, "");
93- onSwipeRightDetected: terminal.simulateKeyPress(Qt.Key_Right, Qt.NoModifier, true, 0, "");
94+ // Swipe actions
95+ onSwipeYDetected: {
96+ if (steps > 0) {
97+ simulateSwipeDown(steps);
98+ } else {
99+ simulateSwipeUp(-steps);
100+ }
101+ }
102+ onSwipeXDetected: {
103+ if (steps > 0) {
104+ simulateSwipeRight(steps);
105+ } else {
106+ simulateSwipeLeft(-steps);
107+ }
108+ }
109+ onTwoFingerSwipeYDetected: {
110+ if (steps > 0) {
111+ simulateDualSwipeDown(steps);
112+ } else {
113+ simulateDualSwipeUp(-steps);
114+ }
115+ }
116+
117+ function simulateSwipeUp(steps) {
118+ while(steps > 0) {
119+ terminal.simulateWheel(width * 0.5, height * 0.5, Qt.NoButton, Qt.NoModifier, Qt.point(0, -wheelValue));
120+ steps--;
121+ }
122+ }
123+ function simulateSwipeDown(steps) {
124+ while(steps > 0) {
125+ terminal.simulateWheel(width * 0.5, height * 0.5, Qt.NoButton, Qt.NoModifier, Qt.point(0, wheelValue));
126+ steps--;
127+ }
128+ }
129+ function simulateSwipeLeft(steps) {
130+ while(steps > 0) {
131+ terminal.simulateKeyPress(Qt.Key_Left, Qt.NoModifier, true, 0, "");
132+ steps--;
133+ }
134+ }
135+ function simulateSwipeRight(steps) {
136+ while(steps > 0) {
137+ terminal.simulateKeyPress(Qt.Key_Right, Qt.NoModifier, true, 0, "");
138+ steps--;
139+ }
140+ }
141+ function simulateDualSwipeUp(steps) {
142+ while(steps > 0) {
143+ terminal.simulateKeyPress(Qt.Key_Up, Qt.NoModifier, true, 0, "");
144+ steps--;
145+ }
146+ }
147+ function simulateDualSwipeDown(steps) {
148+ while(steps > 0) {
149+ terminal.simulateKeyPress(Qt.Key_Down, Qt.NoModifier, true, 0, "");
150+ steps--;
151+ }
152+ }
153
154 // Semantic actions
155 onAlternateAction: {

Subscribers

People subscribed via source and target branches