Add discrete scale pointer signal (flutter/engine#36342)
This commit is contained in:
@@ -130,6 +130,9 @@ enum PointerSignalKind {
|
||||
/// A pointer-generated scroll-inertia cancel.
|
||||
scrollInertiaCancel,
|
||||
|
||||
/// A pointer-generated scale event (e.g. trackpad pinch).
|
||||
scale,
|
||||
|
||||
/// An unknown pointer signal kind.
|
||||
unknown
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ struct alignas(8) PointerData {
|
||||
kNone,
|
||||
kScroll,
|
||||
kScrollInertiaCancel,
|
||||
kScale,
|
||||
};
|
||||
|
||||
int64_t embedder_id;
|
||||
|
||||
@@ -298,7 +298,8 @@ void PointerDataPacketConverter::ConvertPointerData(
|
||||
} else {
|
||||
switch (pointer_data.signal_kind) {
|
||||
case PointerData::SignalKind::kScroll:
|
||||
case PointerData::SignalKind::kScrollInertiaCancel: {
|
||||
case PointerData::SignalKind::kScrollInertiaCancel:
|
||||
case PointerData::SignalKind::kScale: {
|
||||
// Makes sure we have an existing pointer
|
||||
auto iter = states_.find(pointer_data.device);
|
||||
PointerState state;
|
||||
|
||||
@@ -558,6 +558,7 @@ TEST(PointerDataPacketConverterTest, CanConvertPointerSignals) {
|
||||
PointerData::SignalKind signal_kinds[] = {
|
||||
PointerData::SignalKind::kScroll,
|
||||
PointerData::SignalKind::kScrollInertiaCancel,
|
||||
PointerData::SignalKind::kScale,
|
||||
};
|
||||
for (const PointerData::SignalKind& kind : signal_kinds) {
|
||||
PointerDataPacketConverter converter;
|
||||
|
||||
@@ -30,6 +30,7 @@ enum PointerSignalKind {
|
||||
none,
|
||||
scroll,
|
||||
scrollInertiaCancel,
|
||||
scale,
|
||||
unknown
|
||||
}
|
||||
|
||||
|
||||
@@ -624,6 +624,7 @@ class PointerDataConverter {
|
||||
switch (signalKind) {
|
||||
case ui.PointerSignalKind.scroll:
|
||||
case ui.PointerSignalKind.scrollInertiaCancel:
|
||||
case ui.PointerSignalKind.scale:
|
||||
final bool alreadyAdded = _pointers.containsKey(device);
|
||||
_ensureStateForPointer(device, physicalX, physicalY);
|
||||
if (!alreadyAdded) {
|
||||
|
||||
@@ -65,13 +65,15 @@ public class AndroidTouchProcessor {
|
||||
PointerSignalKind.NONE,
|
||||
PointerSignalKind.SCROLL,
|
||||
PointerSignalKind.SCROLL_INERTIA_CANCEL,
|
||||
PointerSignalKind.SCALE,
|
||||
PointerSignalKind.UNKNOWN
|
||||
})
|
||||
public @interface PointerSignalKind {
|
||||
int NONE = 0;
|
||||
int SCROLL = 1;
|
||||
int SCROLL_INERTIA_CANCEL = 2;
|
||||
int UNKNOWN = 3;
|
||||
int SCALE = 3;
|
||||
int UNKNOWN = 4;
|
||||
}
|
||||
|
||||
// Must match the unpacking code in hooks.dart.
|
||||
|
||||
@@ -1924,6 +1924,8 @@ inline flutter::PointerData::SignalKind ToPointerDataSignalKind(
|
||||
return flutter::PointerData::SignalKind::kScroll;
|
||||
case kFlutterPointerSignalKindScrollInertiaCancel:
|
||||
return flutter::PointerData::SignalKind::kScrollInertiaCancel;
|
||||
case kFlutterPointerSignalKindScale:
|
||||
return flutter::PointerData::SignalKind::kScale;
|
||||
}
|
||||
return flutter::PointerData::SignalKind::kNone;
|
||||
}
|
||||
|
||||
@@ -875,6 +875,7 @@ typedef enum {
|
||||
kFlutterPointerSignalKindNone,
|
||||
kFlutterPointerSignalKindScroll,
|
||||
kFlutterPointerSignalKindScrollInertiaCancel,
|
||||
kFlutterPointerSignalKindScale,
|
||||
} FlutterPointerSignalKind;
|
||||
|
||||
typedef struct {
|
||||
|
||||
Reference in New Issue
Block a user