-
Notifications
You must be signed in to change notification settings - Fork 29.7k
SelectableRegion should not show flutter rendered context menu when web context menu is enabled
#176855
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
SelectableRegion should not show flutter rendered context menu when web context menu is enabled
#176855
Conversation
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 correctly fixes an issue where the Flutter-rendered context menu would appear on top of the native web context menu after a selection handle drag. The approach of centralizing the toolbar showing logic in _showToolbar and using a _webContextMenuEnabled getter is clean.
I've left a couple of comments: one suggestion to simplify the code by removing a now-redundant conditional block, and another pointing out a potential bug in the new handlesAreVisible getter which could cause issues with handle visibility checks.
88af992 to
80b1da5
Compare
SelectableRegion should not show flutter rendered context menu when web context menu is enabled
244f2b4 to
486de9b
Compare
| _selectionOverlay != null && | ||
| (_selectionOverlay!.isDraggingStartHandle || _selectionOverlay!.isDraggingEndHandle); | ||
| if (widget.selectionControls is! TextSelectionHandleControls) { | ||
| if (!draggingHandles) { |
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.
Why this change, I think this may be code to handle custom context menu (although we shouldn't probably use runtimetype check to infer this)
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.
It ends up being the same before/after. The code to handle the context menu TextSelectionControls vs ContextMenuBuilder is in _showToolbar.
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.
oh I see, sounds good then. Can you add a todo in the runtitmeType check in _showToolbar to refactor that?
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.
LGTM!
chunhtai
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
| _selectionOverlay != null && | ||
| (_selectionOverlay!.isDraggingStartHandle || _selectionOverlay!.isDraggingEndHandle); | ||
| if (widget.selectionControls is! TextSelectionHandleControls) { | ||
| if (!draggingHandles) { |
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.
oh I see, sounds good then. Can you add a todo in the runtitmeType check in _showToolbar to refactor that?
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 👍
| /// Whether the native browser context menu is enabled. | ||
| bool get _webContextMenuEnabled => kIsWeb && BrowserContextMenu.enabled; |
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.
Ah same strategy used in EditableText. More evidence that having two separate implementations of text selection leads to bugs.
|
autosubmit label was removed for flutter/flutter/176855, because - The status or check suite Mac_arm64 build_tests_3_4 has failed. Please fix the issues identified (or deflake) before re-applying this label.
|
0187953 to
e819be3
Compare
…electionOverlay to prevent double context menus
… is fully removed
e819be3 to
941376a
Compare
… menu when web context menu is enabled (flutter/flutter#176855)
… menu when web context menu is enabled (flutter/flutter#176855)
… menu when web context menu is enabled (flutter/flutter#176855)
… menu when web context menu is enabled (flutter/flutter#176855)
… menu when web context menu is enabled (flutter/flutter#176855)
…10244) Manual roll requested by [email protected] flutter/flutter@7cd821c...a873a27 2025-10-16 [email protected] [tool] makes listing a shader also as an asset a build failure (flutter/flutter#176866) 2025-10-16 [email protected] Roll Packages from d062181 to 835dccb (7 revisions) (flutter/flutter#177100) 2025-10-16 [email protected] Handle the new location of Perfetto in create_updated_flutter_deps.py (flutter/flutter#177099) 2025-10-16 [email protected] Implement dialog windows for the win32 platform (flutter/flutter#176309) 2025-10-16 [email protected] `SelectableRegion` should not show flutter rendered context menu when web context menu is enabled (flutter/flutter#176855) 2025-10-16 [email protected] Manual roll Skia to 2d9df7c70b6f (flutter/flutter#177074) 2025-10-16 [email protected] feat: add `OptionsViewOpenDirection.mostSpace` to `RawAutocomplete` (flutter/flutter#172997) 2025-10-16 [email protected] [Android] Refactor `ImageReaderSurfaceProducer` restoration after app resumes (flutter/flutter#175937) 2025-10-15 [email protected] Refactor: migrate fade upwards page transition builder to widgets (flutter/flutter#175560) 2025-10-15 [email protected] Marks Windows windowing_test to be unflaky (flutter/flutter#176701) 2025-10-15 [email protected] fix: 🐛 Add equality and hashCode implementations to ScrollAwareImageProvider (flutter/flutter#175038) 2025-10-15 [email protected] Updates `sliver_tree.1.dart` to use `MediaQuery.widthOf(context)` (flutter/flutter#176888) 2025-10-15 [email protected] [web] Fix focus issues in newer versions of Chrome (flutter/flutter#176938) 2025-10-15 [email protected] [Android 16] Update `android_engine_vulkan_tests` to Test Against SDK 36 Emulator (flutter/flutter#176985) 2025-10-15 [email protected] Fix key events interception by RadioGroup when no Radio is focused. (flutter/flutter#176335) 2025-10-15 [email protected] Update cherry-pick instructions to include instructions for pre-release CPs (flutter/flutter#177020) 2025-10-15 [email protected] Manual roll Skia to c501c727a007 (flutter/flutter#177015) 2025-10-15 [email protected] Update examples to latest Linux runner style (flutter/flutter#177033) 2025-10-15 [email protected] [material/menu_anchor.dart] Create internal menu controller if external controller is changed to null. (flutter/flutter#176375) 2025-10-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fix - TalkBack does not announce list information (#174374)" (flutter/flutter#177062) 2025-10-14 [email protected] Implement Regular Windows for Linux (flutter/flutter#176187) 2025-10-14 [email protected] Fix - TalkBack does not announce list information (flutter/flutter#174374) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
… web context menu is enabled (flutter#176855) This change fixes an issue where the flutter rendered menu would show up when ending a drag on a selection handle, even when the web context menu was enabled. This led to issues where both context menus would show up leading to a unfavorable experience. Fixes flutter#175114 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. --------- Co-authored-by: Renzo Olivares <[email protected]>
This change fixes an issue where the flutter rendered menu would show up when ending a drag on a selection handle, even when the web context menu was enabled. This led to issues where both context menus would show up leading to a unfavorable experience.
Fixes #175114
Pre-launch Checklist
///).