Skip to content

Commit 55881f7

Browse files
authored
Reland "Fix crash from alt-tab'ing just after startup" (#103093)
1 parent 543cc60 commit 55881f7

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

packages/flutter/lib/src/rendering/mouse_tracker.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,8 @@ class MouseTracker extends ChangeNotifier {
319319
// so that [mouseIsConnected], which is decided by `_mouseStates`, is
320320
// correct during the callbacks.
321321
if (existingState == null) {
322-
assert(event is! PointerRemovedEvent);
322+
if (event is PointerRemovedEvent)
323+
return;
323324
_mouseStates[device] = _MouseState(initialEvent: event);
324325
} else {
325326
assert(event is! PointerAddedEvent);

packages/flutter/test/rendering/mouse_tracker_test.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,16 @@ void main() {
133133
listenerLogs.clear();
134134
});
135135

136+
// Regression test for https://github.com/flutter/flutter/issues/90838
137+
test('should not crash if the first event is a Removed event', () {
138+
final List<PointerEvent> events = <PointerEvent>[];
139+
setUpWithOneAnnotation(logEvents: events);
140+
ui.window.onPointerDataPacket!(ui.PointerDataPacket(data: <ui.PointerData>[
141+
_pointerData(PointerChange.remove, Offset.zero),
142+
]));
143+
events.clear();
144+
});
145+
136146
test('should correctly handle multiple devices', () {
137147
final List<PointerEvent> events = <PointerEvent>[];
138148
setUpWithOneAnnotation(logEvents: events);

0 commit comments

Comments
 (0)