Skip to content
This repository was archived by the owner on Apr 29, 2021. It is now read-only.

Commit d9601b2

Browse files
author
Yuncong Zhang
authored
Merge pull request #275 from IIzzaya/hook1.5.4
[1.5.4] Upgrade gestures.
2 parents bffd0b4 + 8620576 commit d9601b2

File tree

9 files changed

+364
-48
lines changed

9 files changed

+364
-48
lines changed

Runtime/gestures/binding.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ void _flushPointerEventQueue() {
4848

4949
public readonly GestureArenaManager gestureArena;
5050

51+
public readonly PointerSignalResolver pointerSignalResolver = new PointerSignalResolver();
52+
5153
public readonly Dictionary<int, HitTestResult> _hitTests = new Dictionary<int, HitTestResult>();
5254

5355
public readonly HashSet<HitTestTarget> lastMoveTargets = new HashSet<HitTestTarget>();
@@ -61,10 +63,13 @@ void _handlePointerEvent(PointerEvent evt) {
6163
}
6264

6365
HitTestResult hitTestResult = null;
64-
if (evt is PointerDownEvent) {
66+
if (evt is PointerDownEvent || evt is PointerSignalResolver) {
6567
D.assert(!this._hitTests.ContainsKey(evt.pointer));
6668
hitTestResult = new HitTestResult();
6769
this.hitTest(hitTestResult, evt.position);
70+
if (evt is PointerDownEvent) {
71+
this._hitTests[evt.pointer] = hitTestResult;
72+
}
6873

6974
this._hitTests[evt.pointer] = hitTestResult;
7075
D.assert(() => {
@@ -160,6 +165,9 @@ public void handleEvent(PointerEvent evt, HitTestEntry entry) {
160165
else if (evt is PointerUpEvent) {
161166
this.gestureArena.sweep(evt.pointer);
162167
}
168+
else if (evt is PointerSignalEvent) {
169+
this.pointerSignalResolver.resolve((PointerSignalEvent) evt);
170+
}
163171
}
164172
}
165173
}

Runtime/gestures/constants.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public static class Constants {
1616

1717
public static readonly TimeSpan kDoubleTapTimeout = new TimeSpan(0, 0, 0, 0, 300);
1818

19+
public static readonly TimeSpan kDoubleTapMinTime = new TimeSpan(0, 0, 0, 0, 40);
20+
1921
public static readonly TimeSpan kLongPressTimeout = new TimeSpan(0, 0, 0, 0, 500);
2022

2123
public const float kMinFlingVelocity = 50.0f;

Runtime/gestures/converter.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,25 @@ public void setUp() {
4848

4949
public Offset lastPosition;
5050

51+
public Offset deltaTo(Offset to) {
52+
return to - this.lastPosition;
53+
}
54+
5155
public override string ToString() {
5256
return $"_PointerState(pointer: {this.pointer}, down: {this.down}, lastPosition: {this.lastPosition})";
5357
}
58+
59+
public int _synthesiseDownButtons(int buttons, PointerDeviceKind kind) {
60+
switch (kind) {
61+
case PointerDeviceKind.touch:
62+
return buttons;
63+
default:
64+
return buttons;
65+
}
66+
}
5467
}
5568

69+
5670
public static class PointerEventConverter {
5771
static readonly Dictionary<int, _PointerState> _pointers = new Dictionary<int, _PointerState>();
5872

Runtime/gestures/events.cs

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ public PointerAddedEvent(
5252
kind: kind,
5353
device: device,
5454
position: position
55-
) {
56-
}
55+
) { }
5756
}
5857

5958
public class PointerRemovedEvent : PointerEvent {
@@ -65,8 +64,7 @@ public PointerRemovedEvent(
6564
timeStamp: timeStamp,
6665
kind: kind,
6766
device: device
68-
) {
69-
}
67+
) { }
7068
}
7169

7270
public class PointerScrollEvent : PointerEvent {
@@ -84,8 +82,7 @@ public PointerScrollEvent(
8482
device: device,
8583
position: position,
8684
down: true,
87-
delta: delta) {
88-
}
85+
delta: delta) { }
8986
}
9087

9188
public class PointerDragFromEditorEnterEvent : PointerEvent {
@@ -101,8 +98,7 @@ public PointerDragFromEditorEnterEvent(
10198
kind: kind,
10299
device: device,
103100
position: position
104-
) {
105-
}
101+
) { }
106102

107103
public static PointerDragFromEditorEnterEvent fromDragFromEditorEvent(PointerEvent evt) {
108104
return new PointerDragFromEditorEnterEvent(
@@ -128,8 +124,7 @@ public PointerDragFromEditorExitEvent(
128124
kind: kind,
129125
device: device,
130126
position: position
131-
) {
132-
}
127+
) { }
133128

134129
public static PointerDragFromEditorExitEvent fromDragFromEditorEvent(PointerEvent evt) {
135130
return new PointerDragFromEditorExitEvent(
@@ -155,8 +150,7 @@ public PointerDragFromEditorHoverEvent(
155150
kind: kind,
156151
device: device,
157152
position: position
158-
) {
159-
}
153+
) { }
160154

161155
public static PointerDragFromEditorHoverEvent fromDragFromEditorEvent(PointerEvent evt) {
162156
return new PointerDragFromEditorHoverEvent(
@@ -215,8 +209,7 @@ public PointerHoverEvent(
215209
kind: kind,
216210
device: device,
217211
position: position,
218-
down: false) {
219-
}
212+
down: false) { }
220213

221214
public static PointerHoverEvent fromHoverEvent(PointerEvent hover) {
222215
return new PointerHoverEvent(
@@ -242,8 +235,7 @@ public PointerEnterEvent(
242235
kind: kind,
243236
device: device,
244237
position: position,
245-
down: false) {
246-
}
238+
down: false) { }
247239

248240
public static PointerEnterEvent fromHoverEvent(PointerEvent hover) {
249241
return new PointerEnterEvent(
@@ -269,8 +261,7 @@ public PointerExitEvent(
269261
kind: kind,
270262
device: device,
271263
position: position,
272-
down: false) {
273-
}
264+
down: false) { }
274265

275266
public static PointerExitEvent fromHoverEvent(PointerEvent hover) {
276267
return new PointerExitEvent(
@@ -296,8 +287,7 @@ public PointerDownEvent(
296287
kind: kind,
297288
device: device,
298289
position: position,
299-
down: true) {
300-
}
290+
down: true) { }
301291
}
302292

303293
public class PointerMoveEvent : PointerEvent {
@@ -317,8 +307,7 @@ public PointerMoveEvent(
317307
position: position,
318308
delta: delta,
319309
down: true,
320-
synthesized: synthesized) {
321-
}
310+
synthesized: synthesized) { }
322311
}
323312

324313
public class PointerUpEvent : PointerEvent {
@@ -334,8 +323,7 @@ public PointerUpEvent(
334323
kind: kind,
335324
device: device,
336325
position: position,
337-
down: false) {
338-
}
326+
down: false) { }
339327
}
340328

341329
public class PointerCancelEvent : PointerEvent {
@@ -351,7 +339,22 @@ public PointerCancelEvent(
351339
kind: kind,
352340
device: device,
353341
position: position,
354-
down: false) {
355-
}
342+
down: false) { }
343+
}
344+
345+
public class PointerSignalEvent : PointerEvent {
346+
public PointerSignalEvent(
347+
TimeSpan timeStamp,
348+
int pointer = 0,
349+
PointerDeviceKind kind = PointerDeviceKind.mouse,
350+
int device = 0,
351+
Offset position = null
352+
) : base(
353+
timeStamp,
354+
pointer: pointer,
355+
kind: kind,
356+
device: device,
357+
position: position
358+
) { }
356359
}
357360
}

0 commit comments

Comments
 (0)