Skip to content

Commit 6711411

Browse files
Revert "Fix bug with clicking Copy or Select All within contextMenu (#120081)" (#122832)
Revert "Fix bug with clicking `Copy` or `Select All` within contextMenu"
1 parent 5bea4d9 commit 6711411

File tree

2 files changed

+3
-143
lines changed

2 files changed

+3
-143
lines changed

packages/flutter/lib/src/widgets/selectable_region.dart

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -319,12 +319,6 @@ class SelectableRegionState extends State<SelectableRegion> with TextSelectionDe
319319
/// {@macro flutter.rendering.RenderEditable.lastSecondaryTapDownPosition}
320320
Offset? lastSecondaryTapDownPosition;
321321

322-
/// The [SelectionOverlay] that is currently visible on the screen.
323-
///
324-
/// Can be null if there is no visible [SelectionOverlay].
325-
@visibleForTesting
326-
SelectionOverlay? get selectionOverlay => _selectionOverlay;
327-
328322
@override
329323
void initState() {
330324
super.initState();
@@ -994,37 +988,11 @@ class SelectableRegionState extends State<SelectableRegion> with TextSelectionDe
994988
selectionGeometry: _selectionDelegate.value,
995989
onCopy: () {
996990
_copy();
997-
998-
// In Android copy should clear the selection.
999-
switch (defaultTargetPlatform) {
1000-
case TargetPlatform.android:
1001-
case TargetPlatform.fuchsia:
1002-
_clearSelection();
1003-
break;
1004-
case TargetPlatform.iOS:
1005-
hideToolbar(false);
1006-
break;
1007-
case TargetPlatform.linux:
1008-
case TargetPlatform.macOS:
1009-
case TargetPlatform.windows:
1010-
hideToolbar();
1011-
break;
1012-
}
991+
hideToolbar();
1013992
},
1014993
onSelectAll: () {
1015-
switch (defaultTargetPlatform) {
1016-
case TargetPlatform.android:
1017-
case TargetPlatform.iOS:
1018-
case TargetPlatform.fuchsia:
1019-
selectAll(SelectionChangedCause.toolbar);
1020-
break;
1021-
case TargetPlatform.linux:
1022-
case TargetPlatform.macOS:
1023-
case TargetPlatform.windows:
1024-
selectAll();
1025-
hideToolbar();
1026-
break;
1027-
}
994+
selectAll();
995+
hideToolbar();
1028996
},
1029997
);
1030998
}

packages/flutter/test/widgets/selectable_region_test.dart

Lines changed: 0 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -926,7 +926,6 @@ void main() {
926926
),
927927
),
928928
);
929-
930929
final RenderParagraph paragraph2 = tester.renderObject<RenderParagraph>(find.descendant(of: find.text('Good, and you?'), matching: find.byType(RichText)));
931930
final TestGesture gesture = await tester.startGesture(textOffsetToPosition(paragraph2, 7)); // at the 'a'
932931
addTearDown(gesture.removePointer);
@@ -1709,113 +1708,6 @@ void main() {
17091708
variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS, TargetPlatform.android }),
17101709
);
17111710

1712-
testWidgets('the selection behavior when clicking `Copy` item in mobile platforms', (WidgetTester tester) async {
1713-
List<ContextMenuButtonItem> buttonItems = <ContextMenuButtonItem>[];
1714-
await tester.pumpWidget(
1715-
MaterialApp(
1716-
home: SelectableRegion(
1717-
focusNode: FocusNode(),
1718-
selectionControls: materialTextSelectionHandleControls,
1719-
contextMenuBuilder: (
1720-
BuildContext context,
1721-
SelectableRegionState selectableRegionState,
1722-
) {
1723-
buttonItems = selectableRegionState.contextMenuButtonItems;
1724-
return const SizedBox.shrink();
1725-
},
1726-
child: const Text('How are you?'),
1727-
),
1728-
),
1729-
);
1730-
1731-
final RenderParagraph paragraph1 = tester.renderObject<RenderParagraph>(find.descendant(of: find.text('How are you?'), matching: find.byType(RichText)));
1732-
await tester.longPressAt(textOffsetToPosition(paragraph1, 6)); // at the 'r'
1733-
await tester.pump(kLongPressTimeout);
1734-
// `are` is selected.
1735-
expect(paragraph1.selections[0], const TextSelection(baseOffset: 4, extentOffset: 7));
1736-
1737-
expect(buttonItems.length, 2);
1738-
expect(buttonItems[0].type, ContextMenuButtonType.copy);
1739-
1740-
// Press `Copy` item
1741-
buttonItems[0].onPressed.call();
1742-
1743-
final SelectableRegionState regionState = tester.state<SelectableRegionState>(find.byType(SelectableRegion));
1744-
1745-
// In Android copy should clear the selection.
1746-
switch(defaultTargetPlatform) {
1747-
case TargetPlatform.android:
1748-
case TargetPlatform.fuchsia:
1749-
expect(regionState.selectionOverlay, isNull);
1750-
expect(regionState.selectionOverlay?.startHandleLayerLink, isNull);
1751-
expect(regionState.selectionOverlay?.endHandleLayerLink, isNull);
1752-
break;
1753-
case TargetPlatform.iOS:
1754-
expect(regionState.selectionOverlay, isNotNull);
1755-
expect(regionState.selectionOverlay?.startHandleLayerLink, isNotNull);
1756-
expect(regionState.selectionOverlay?.endHandleLayerLink, isNotNull);
1757-
break;
1758-
case TargetPlatform.linux:
1759-
case TargetPlatform.macOS:
1760-
case TargetPlatform.windows:
1761-
expect(regionState.selectionOverlay, isNotNull);
1762-
break;
1763-
}
1764-
});
1765-
1766-
testWidgets('the handles do not disappear when clicking `Select all` item in mobile platforms', (WidgetTester tester) async {
1767-
List<ContextMenuButtonItem> buttonItems = <ContextMenuButtonItem>[];
1768-
await tester.pumpWidget(
1769-
MaterialApp(
1770-
home: SelectableRegion(
1771-
focusNode: FocusNode(),
1772-
selectionControls: materialTextSelectionHandleControls,
1773-
contextMenuBuilder: (
1774-
BuildContext context,
1775-
SelectableRegionState selectableRegionState,
1776-
) {
1777-
buttonItems = selectableRegionState.contextMenuButtonItems;
1778-
return const SizedBox.shrink();
1779-
},
1780-
child: const Text('How are you?'),
1781-
),
1782-
),
1783-
);
1784-
1785-
final RenderParagraph paragraph1 = tester.renderObject<RenderParagraph>(find.descendant(of: find.text('How are you?'), matching: find.byType(RichText)));
1786-
await tester.longPressAt(textOffsetToPosition(paragraph1, 6)); // at the 'r'
1787-
await tester.pump(kLongPressTimeout);
1788-
// `are` is selected.
1789-
expect(paragraph1.selections[0], const TextSelection(baseOffset: 4, extentOffset: 7));
1790-
1791-
expect(buttonItems.length, 2);
1792-
expect(buttonItems[1].type, ContextMenuButtonType.selectAll);
1793-
1794-
// Press `Select All` item
1795-
buttonItems[1].onPressed.call();
1796-
1797-
final SelectableRegionState regionState = tester.state<SelectableRegionState>(find.byType(SelectableRegion));
1798-
1799-
switch(defaultTargetPlatform) {
1800-
case TargetPlatform.android:
1801-
case TargetPlatform.iOS:
1802-
case TargetPlatform.fuchsia:
1803-
expect(regionState.selectionOverlay, isNotNull);
1804-
expect(regionState.selectionOverlay?.startHandleLayerLink, isNotNull);
1805-
expect(regionState.selectionOverlay?.endHandleLayerLink, isNotNull);
1806-
break;
1807-
case TargetPlatform.linux:
1808-
case TargetPlatform.macOS:
1809-
case TargetPlatform.windows:
1810-
// Test doesn't run these platforms.
1811-
break;
1812-
}
1813-
1814-
},
1815-
skip: kIsWeb, // [intended]
1816-
variant: const TargetPlatformVariant(<TargetPlatform>{ TargetPlatform.iOS, TargetPlatform.android, TargetPlatform.fuchsia }),
1817-
);
1818-
18191711
testWidgets('builds the correct button items', (WidgetTester tester) async {
18201712
Set<ContextMenuButtonType> buttonTypes = <ContextMenuButtonType>{};
18211713
await tester.pumpWidget(

0 commit comments

Comments
 (0)