[go: nahoru, domu]

Skip to content
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

Ability to disable the browser's context menu on web #118194

Merged
merged 14 commits into from
Jan 30, 2023

Conversation

justinmc
Copy link
Contributor
@justinmc justinmc commented Jan 9, 2023

This PR provides an API to disable (and re-enable) the browser's context menu on web. It also shows EditableText's context menu on web when the browser's context menu is disabled.

Screenshot 2023-01-18 at 4 57 53 PM

API

I've created some platform channel messages and a simple API so that users can disable the context menu like this:

await BrowserContextMenu.disableContextMenu();
// ...
await BrowserContextMenu.enableContextMenu();

If someone really wants to, it's also possible to enable/disable the context menu for a specific gesture:

  onSecondaryTapDown: (TapDownDetails details) {
    await BrowserContextMenu.disableContextMenu();
    await Future.delayed(const Duration(seconds: 0));
    BrowserContextMenu.enableContextMenu();
  }

For a full example app that uses this feature, see the bottom of the engine PR's description (flutter/engine#38682).

References

Depends on engine PR flutter/engine#38682.
Fixes #78671
Fixes #84219

@justinmc justinmc requested a review from mdebbar January 9, 2023 18:56
@justinmc justinmc self-assigned this Jan 9, 2023
@flutter-dashboard flutter-dashboard bot added a: text input Entering text in a text field or keyboard related problems framework flutter/packages/flutter repository. See also f: labels. labels Jan 9, 2023
@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact Hixie on the #hackers channel in Chat (don't just cc him here, he won't see it! He's on Discord!).

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.


import 'system_channels.dart';

// TODO(justinmc): Document, and explain that this controls the browser context menu, not Flutter's context menus.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then let's call it BrowserContextMenu or similar?

@justinmc justinmc force-pushed the disablable-context-menus branch 2 times, most recently from 7b1850a to 634a5e1 Compare January 20, 2023 00:14
@justinmc justinmc changed the title (WIP) Ability to disable the browser's context menu on web Ability to disable the browser's context menu on web Jan 20, 2023
@flutter-dashboard flutter-dashboard bot added the f: material design flutter/packages/flutter/material repository. label Jan 20, 2023
@justinmc justinmc marked this pull request as ready for review January 20, 2023 21:11
@justinmc justinmc requested a review from mdebbar January 20, 2023 21:11
@flutter-dashboard
Copy link

Golden file changes have been found for this pull request. Click here to view and triage (e.g. because this is an intentional change).

If you are still iterating on this change and are not ready to resolve the images on the Flutter Gold dashboard, consider marking this PR as a draft pull request above. You will still be able to view image results on the dashboard, commenting will be silenced, and the check will not try to resolve itself until marked ready for review.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Changes reported for pull request #118194 at sha 2b91011

@flutter-dashboard flutter-dashboard bot added the will affect goldens Changes to golden files label Jan 20, 2023
@flutter-dashboard
Copy link

Golden file changes are available for triage from new commit, Click here to view.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Changes reported for pull request #118194 at sha 712ace5

@mdebbar
Copy link
Contributor
mdebbar commented Jan 23, 2023

From the goldens, it looks like the cursor is disappearing from some screenshots. Is that expected?

@justinmc justinmc merged commit 17eb2e8 into flutter:master Jan 30, 2023
@justinmc justinmc deleted the disablable-context-menus branch January 30, 2023 17:03
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 30, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 30, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 30, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 31, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 31, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 31, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 31, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 31, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 31, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 31, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Feb 1, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Feb 1, 2023
auto-submit bot pushed a commit to flutter/plugins that referenced this pull request Feb 1, 2023
* 472b887 0ec8e2802 Roll Fuchsia Mac SDK from 9y7C2oamTv6Py4JSC... to EAFnGijD0l5QxaPxF... (flutter/engine#39236) (flutter/flutter#119461)

* 15cd00f a7bb0e410 Roll Fuchsia Linux SDK from 1D63BqURfJdG4r3CK... to xTXbcsPr5GJvFSLha... (flutter/engine#39238) (flutter/flutter#119482)

* 530c3f2 [Re-land#2] Button padding M3 (flutter/flutter#119498)

* 17eb2e8 Ability to disable the browser's context menu on web (flutter/flutter#118194)

* df8ad3d roll packages (flutter/flutter#119370)

* b68cebd roll packages (flutter/flutter#119530)

* 59d80dc [Android] Add explicit exported tag to Linux_android flavors test (flutter/flutter#117542)

* 458b298 Refactoring to use `ver` command instead of `systeminfo` (flutter/flutter#119304)

* 54405bf fixes PointerEventConverter to handle malformed scrolling event (flutter/flutter#118124)

* e69ea6d Support flipping mouse scrolling axes through modifier keys (flutter/flutter#115610)

* 92df6b4 396c7fd0b Reland "Remove references to Observatory (#38919)" (flutter/engine#39139) (flutter/flutter#119546)

* 7477d7a Reland "Add --serve-observatory flag to run, attach, and test (#118402)" (flutter/flutter#119529)

* 6c12e39 Introduce ParagraphBoundary subclass for text editing (flutter/flutter#116549)

* b227df3 Hint text semantics to be excluded in a11y read out if hintText is not visible. (flutter/flutter#119198)

* 18c7f8a Fix typo in --machine help text (flutter/flutter#119563)

* 329f86a Make a few values non-nullable in cupertino (flutter/flutter#119478)

* c4520bc b2efe0175 [web] Expose felt flag for building CanvasKit Chromium (flutter/engine#39201) (flutter/flutter#119567)

* 8898f4f Marks Mac_android run_debug_test_android to be unflaky (flutter/flutter#117468)

* 1f0b6fb Remove deprecated AppBar/SliverAppBar/AppBarTheme.textTheme member (flutter/flutter#119253)

* edaeec8 Roll Flutter Engine from b2efe01754ef to 5011144c0b46 (3 revisions) (flutter/flutter#119578)

* 865dc5c Roll Flutter Engine from 5011144c0b46 to daa8eeb7fc0b (2 revisions) (flutter/flutter#119584)

* 1148a2a Migrate EditableTextState from addPostFrameCallbacks to compositionCallbacks (flutter/flutter#119359)

* 2340902 Roll Flutter Engine from daa8eeb7fc0b to 77218818138f (3 revisions) (flutter/flutter#119586)

* 65900b7 Remove deprecated AnimatedSize.vsync parameter (flutter/flutter#119186)

* 5b6572f Add debug diagnostics to channels integration test (flutter/flutter#119579)

* 504e565 Roll Flutter Engine from 77218818138f to 9448f2966c11 (3 revisions) (flutter/flutter#119592)

* 7ba4406 Revert "[Re-land#2] Button padding M3 (#119498)" (flutter/flutter#119597)

* 2c34a88 Roll Flutter Engine from 9448f2966c11 to 72abe0e4b828 (3 revisions) (flutter/flutter#119603)

* df0ab40 Roll Plugins from ff84c44 to 9da327c (15 revisions) (flutter/flutter#119629)

* 67d07a6 [flutter_tools] Fix parsing of existing DDS URIs from exceptions (flutter/flutter#119506)

* d272a3a Reland: [macos] add flavor options to tool commands (flutter/flutter#119564)

* a16d82c aa00da3c1 Roll Skia from fc31f43cc40a to 3c6eb76a683a (1 revision) (flutter/engine#39280) (flutter/flutter#119605)

* f6b0c6d Use first Dart VM Service found with mDNS if there are duplicates (flutter/flutter#119545)

* d4c7485 Make Decoration.padding non-nullable (flutter/flutter#119581)

* 2fccf4d Remove MediaQuery from WidgetsApp (flutter/flutter#119377)

* 9b3b9cf Roll Flutter Engine from aa00da3c1612 to cd2e8885e491 (6 revisions) (flutter/flutter#119639)

* 6a54059 Make MultiChildRenderObjectWidget const (flutter/flutter#119195)

* e2b3d89 Fix CupertinoNavigationBar should create a backward compatible Annota… (flutter/flutter#119515)

* 7bf95f4 1aaf3db31 Roll Dart SDK from 4fdbc7c28141 to 9bcc1773ebf0 (1 revision) (flutter/engine#39290) (flutter/flutter#119640)

* 0e22aca Add support for image insertion on Android (flutter/flutter#110052)

* ff22813 separatorBuilder can't return null (flutter/flutter#119566)

* 60c1f29 2471f430f Update buildroot to c02da5072d1bb2. (flutter/engine#39292) (flutter/flutter#119645)

* fbe9ff3 Disable an inaccurate test assertion that will be fixed by an engine roll (flutter/flutter#119653)

* 8f90e2a Roll Flutter Engine from 2471f430ff4b to bb7b7006f4a3 (2 revisions) (flutter/flutter#119655)

* 3884381 Make gen-l10n error handling independent of logger state (flutter/flutter#119644)

* 198a51a Migrate the Material Date pickers to M3 Reprise (flutter/flutter#119033)

* dc86565 Roll Flutter Engine from bb7b7006f4a3 to 521b975449ba (4 revisions) (flutter/flutter#119670)

* 82df235 Undo making Flex,Row,Column const (flutter/flutter#119669)

* 6f9a896 Roll Flutter Engine from 521b975449ba to 38913c5484cf (2 revisions) (flutter/flutter#119675)

* 8d0af36 🥅 Produce warning instead of error for storage base url overrides (flutter/flutter#119595)

* 3894d24 1703a3966 Roll Skia from c29211525dac to 654f4805e8b8 (21 revisions) (flutter/engine#39309) (flutter/flutter#119683)

* a752c2f Expose enableIMEPersonalizedLearning on CupertinoSearchTextField (flutter/flutter#119439)

* e1f0b1d d92e23cb5 Roll Skia from 654f4805e8b8 to da41cf18f651 (1 revision) (flutter/engine#39311) (flutter/flutter#119686)

* 97d273c CupertinoThemeData equality (flutter/flutter#119480)

* 4167835 5b549950f Roll Fuchsia Linux SDK from 71lEeibIyrq0V8jId... to TFcelQ5SwrzkcYK2d... (flutter/engine#39312) (flutter/flutter#119688)

* b4a6e34 0d87b1562 Roll Dart SDK from 8b57d23a7246 to de03e1f41b50 (1 revision) (flutter/engine#39313) (flutter/flutter#119695)

* 3af30ff Roll Flutter Engine from 0d87b156265c to c08a286d60e9 (3 revisions) (flutter/flutter#119706)

* d278808 [Re-land] Exposed tooltip longPress (flutter/flutter#118796)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a: text input Entering text in a text field or keyboard related problems f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels. will affect goldens Changes to golden files
Projects
None yet
4 participants