-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Add support for Shift-Delete, Ctrl-Insert and Shift-Insert #178561
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for Shift-Delete, Ctrl-Insert and Shift-Insert #178561
Conversation
|
It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging. If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request adds support for IBM CUA style clipboard shortcuts (Shift+Delete for cut, Ctrl+Insert for copy, and Shift+Insert for paste) on non-Apple platforms. The implementation correctly adds these shortcuts to the common shortcuts map.
My review focuses on two main points: improving the clarity of an overridden shortcut and adding test coverage for the new functionality, both of which are guided by the repository's style guide. I've provided a detailed comment with a code suggestion to address these.
|
Alright, this is now considerably more nuanced.
All tests pass. |
bleroux
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thanks for this great contribution 🙏
Some minor nits and see my comment about the fluent API.
| // Xerox/Apple: ^X ^C ^V | ||
| // -> Standard on Windows | ||
| // -> Standard on Linux | ||
| // -> Standard on OS X (with Command as modifier) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // -> Standard on OS X (with Command as modifier) | |
| // -> Standard on macOS (with Command as modifier) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In context here, these aren't the enum TargetPlatform members. I did a quick search of the source code and found precedent elsewhere for a human-readable version being expressed as Mac OS X (change_mach_o_flags.py, util.dart under web_ui, ax_platform_node.h, etc.).
packages/flutter/lib/src/widgets/default_text_editing_shortcuts.dart
Outdated
Show resolved
Hide resolved
packages/flutter/test/widgets/default_text_editing_shortcuts_test.dart
Outdated
Show resolved
Hide resolved
The |
|
About the ci.yaml validation failure, usually rebasing the PR to the tip of the tree fixes it, can you try? |
- Added SingleActivator mappings for Shift-Delete, Ctrl-Insert and Shift-Insert (equivalent to ^X ^C ^V). - Added comment blocks explaining the provenance.
…d" in default_text_editing_shortcuts.dart.
…delete the character forward in default_text_editing_shortcuts.dart.
- Moved the clipboard shortcuts into their own dedicated map _clipboardShortcuts. - Updated _androidShortcuts, _linuxShortcuts and _windowsShortcuts to include _clipboardShortcuts. - Updated _webDisablingTextShortcuts to generate disabling shortcuts dynamically for everything in _clipboardShortcuts, removing the explicit ^X, ^C and ^V.
… in widget_tester.dart to allow fluent syntax for configuring a specific set of target variants. Updated clipboard shortcuts tests in default_text_editing_shortcuts_test.dart to target desktop except macOS, and android. Updated ActionSpyState in default_text_editing_shortcuts_test.dart to capture the intent for CopySelectionTextIntent and PasteTextIntent.
…shortcuts_test.dart for clarity.
… a SingleActivator line moved out of the pressShift loop.
…test_editing_shortcuts_test.dart.
…o match similar references elsewhere in the codebase. Removed the fluent TargetPlatformVariant syntax and replaced its uses with explicit sets.
61a9d6f to
d3fb297
Compare
loic-sharma
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the contribution!
|
autosubmit label was removed for flutter/flutter/178561, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR. |
|
autosubmit label was removed for flutter/flutter/178561, because - The status or check suite Linux analyzer_benchmark has failed. Please fix the issues identified (or deflake) before re-applying this label. |
|
@logiclrd It looks like there's a few lints you'll need to address before we can merge this in: https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8695004791188624433/+/u/run_test.dart_for_analyze_shard_and_subshard_None/stdout |
justinmc
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍 . Thanks for catching this. I'm always worried there are a few obscure keyboard shortcuts that Flutter is missing.
|
autosubmit label was removed for flutter/flutter/178561, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR. |

This PR adds
SingleActivatormappings for IBM CUA style clipboard accessors, with which Shift-Delete, Ctrl-Insert and Shift-Insert are equivalent to ^X ^C ^V. These mappings are natively supported on Windows and Linux (but not OS X).Not sure what to do about:Documentation: Are ^X ^C ^V already documented?Tests: Are there existing tests for ^X ^C ^V already? Is it possible to mock out the clipboard so that a test of this functionality doesn't hit the actual system clipboard?OS X: Is it a problem that, with this change, Flutter will accept these additional shortcuts even though they aren't a part of the platform paradigm?UPDATE:
I'm not aware of existing documentation of clipboard shortcuts.
I have added tests, both of the existing ^X ^C ^V and of the IBM CUA style mappings added by this PR, and in the current iteration the changes do not add IBM CUA style mappings on OS X.
Fixes: #178483
Pre-launch Checklist
///).