Notes: Cancel in-flight hover highlight when focus leaves a note thread - #80752
Conversation
|
Size Change: +9 B (0%) Total Size: 7.75 MB 📦 View Changed
|
|
Flaky tests detected in 790efc5. 🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/30332761949
|
4573953 to
790efc5
Compare
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
|
This is a follow-up to #80222. So, labeling for backporting. |
…ad (#80752) Co-authored-by: Mamaduka <mamaduka@git.wordpress.org>
|
I just cherry-picked this PR to the wp/7.1 branch to get it included in the next release: 254b058 |
This updates the pinned commit hash of the Gutenberg repository from `4997026b75c922d8a6f77a03d72ed7cad04c7073` to `fd715a6833679d098d9fee84b642f8f1bc27341b`. A full list of changes included in this commit can be found on GitHub: WordPress/gutenberg@4997026...fd715a6 - Update view config API versioning (WordPress/gutenberg#80319) - Perf Tests: Fix 'Selecting blocks' metric reporting 0 ms (WordPress/gutenberg#80524) - Notes: Register the inline note format at import time (WordPress/gutenberg#80576) - Media: Stop forcing crossorigin on IMG tags in media templates (WordPress/gutenberg#80532) - GradientPicker: select by slug so two presets sharing a gradient keep their identity (WordPress/gutenberg#80554) - Media Editor: Show a loading state while the cropped file loads (WordPress/gutenberg#80460) - Remove default paragraph from tab-panel template (WordPress/gutenberg#80565) - Global Styles: Resolve link element styles in block inspector controls for blocks that are links (WordPress/gutenberg#80607) - Media REST API: Backport sideload from url path upload size check (WordPress/gutenberg#80659) - Rich text: remove tabIndex from editable elements again to fix shift+click selection (WordPress/gutenberg#80651) - Gallery: make dynamic mode conversion a single undo level (WordPress/gutenberg#80665) - Background image control: Remove duplicated focus ring (WordPress/gutenberg#80671) - Detach core's note mention kses filter in the baseline strip test (WordPress/gutenberg#80656) - wp-build: sync the page template preload field list with core-data (WordPress/gutenberg#80648) - Read the contentEditable attribute in ownsSelection, not isContentEditable (WordPress/gutenberg#80549) - Writing flow: extend block selections with shift+arrow when there is no native selection (WordPress/gutenberg#80687) - Notes: Capture the target block before saving a block-level note (WordPress/gutenberg#80690) - Theme JSON: Level block-level preset class specificity with :where() (WordPress/gutenberg#80657) - Notes: Sync the sidebar selection to the inline marker under the caret (WordPress/gutenberg#80610) - Writing flow: use isMultiSelecting for shift+click (WordPress/gutenberg#80286) (WordPress/gutenberg#80726) - Block supports: Return from layout support before resolving global settings (WordPress/gutenberg#80771) - Notes: Report save success consistently from note actions (WordPress/gutenberg#80748) - Dynamic Gallery: Rename toolbar button to Detach and add a modal explaining what will happen (WordPress/gutenberg#80727) (WordPress/gutenberg#80774) - ToolsPanel: Migrate styles to an SCSS Module (WordPress/gutenberg#80445) (WordPress/gutenberg#80800) - Add a responsiveEditingEnabled editor setting to hide the Responsive styles option (WordPress/gutenberg#80814) - iOS: remove jumping hack, add typewriter (WordPress/gutenberg#74596) - Writing flow: stop the page scrolling on caret moves within blocks taller than the viewport (WordPress/gutenberg#80708) - Global Styles: Put the inheritance UI behind a Gutenberg experiment (… (WordPress/gutenberg#80818) - Notes: Cancel in-flight hover highlight when focus leaves a note thread (WordPress/gutenberg#80752) - Block Editor: Try to fix typing performance regression (WordPress/gutenberg#80507) - List Block: Preserve ordered type on indent (WordPress/gutenberg#75353) - Make editableRoot a private block setting Symbol, not a public support (WordPress/gutenberg#80820) - Fix cursor position during forward delete of empty blocks (WordPress/gutenberg#80827) - Navigation: Fixes `aria-expanded` not updating on hover submenu inside overlay (WordPress/gutenberg#80828) - Remove redundant @jest-environment jsdom pragma and lint against it (WordPress/gutenberg#80676) - View config: reject shape-mismatched merges, define empty-array semantics, strip nulls from appended members (WordPress/gutenberg#80829) - Editor: leave undo to the browser in fields that handle their own undo (WordPress/gutenberg#80768) - Fix: New route-based admin pages are empty when no JS (WordPress/gutenberg#80839) Props wildworks. See #65529. git-svn-id: https://develop.svn.wordpress.org/trunk@62896 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned commit hash of the Gutenberg repository from `4997026b75c922d8a6f77a03d72ed7cad04c7073` to `fd715a6833679d098d9fee84b642f8f1bc27341b`. A full list of changes included in this commit can be found on GitHub: WordPress/gutenberg@4997026...fd715a6 - Update view config API versioning (WordPress/gutenberg#80319) - Perf Tests: Fix 'Selecting blocks' metric reporting 0 ms (WordPress/gutenberg#80524) - Notes: Register the inline note format at import time (WordPress/gutenberg#80576) - Media: Stop forcing crossorigin on IMG tags in media templates (WordPress/gutenberg#80532) - GradientPicker: select by slug so two presets sharing a gradient keep their identity (WordPress/gutenberg#80554) - Media Editor: Show a loading state while the cropped file loads (WordPress/gutenberg#80460) - Remove default paragraph from tab-panel template (WordPress/gutenberg#80565) - Global Styles: Resolve link element styles in block inspector controls for blocks that are links (WordPress/gutenberg#80607) - Media REST API: Backport sideload from url path upload size check (WordPress/gutenberg#80659) - Rich text: remove tabIndex from editable elements again to fix shift+click selection (WordPress/gutenberg#80651) - Gallery: make dynamic mode conversion a single undo level (WordPress/gutenberg#80665) - Background image control: Remove duplicated focus ring (WordPress/gutenberg#80671) - Detach core's note mention kses filter in the baseline strip test (WordPress/gutenberg#80656) - wp-build: sync the page template preload field list with core-data (WordPress/gutenberg#80648) - Read the contentEditable attribute in ownsSelection, not isContentEditable (WordPress/gutenberg#80549) - Writing flow: extend block selections with shift+arrow when there is no native selection (WordPress/gutenberg#80687) - Notes: Capture the target block before saving a block-level note (WordPress/gutenberg#80690) - Theme JSON: Level block-level preset class specificity with :where() (WordPress/gutenberg#80657) - Notes: Sync the sidebar selection to the inline marker under the caret (WordPress/gutenberg#80610) - Writing flow: use isMultiSelecting for shift+click (WordPress/gutenberg#80286) (WordPress/gutenberg#80726) - Block supports: Return from layout support before resolving global settings (WordPress/gutenberg#80771) - Notes: Report save success consistently from note actions (WordPress/gutenberg#80748) - Dynamic Gallery: Rename toolbar button to Detach and add a modal explaining what will happen (WordPress/gutenberg#80727) (WordPress/gutenberg#80774) - ToolsPanel: Migrate styles to an SCSS Module (WordPress/gutenberg#80445) (WordPress/gutenberg#80800) - Add a responsiveEditingEnabled editor setting to hide the Responsive styles option (WordPress/gutenberg#80814) - iOS: remove jumping hack, add typewriter (WordPress/gutenberg#74596) - Writing flow: stop the page scrolling on caret moves within blocks taller than the viewport (WordPress/gutenberg#80708) - Global Styles: Put the inheritance UI behind a Gutenberg experiment (… (WordPress/gutenberg#80818) - Notes: Cancel in-flight hover highlight when focus leaves a note thread (WordPress/gutenberg#80752) - Block Editor: Try to fix typing performance regression (WordPress/gutenberg#80507) - List Block: Preserve ordered type on indent (WordPress/gutenberg#75353) - Make editableRoot a private block setting Symbol, not a public support (WordPress/gutenberg#80820) - Fix cursor position during forward delete of empty blocks (WordPress/gutenberg#80827) - Navigation: Fixes `aria-expanded` not updating on hover submenu inside overlay (WordPress/gutenberg#80828) - Remove redundant @jest-environment jsdom pragma and lint against it (WordPress/gutenberg#80676) - View config: reject shape-mismatched merges, define empty-array semantics, strip nulls from appended members (WordPress/gutenberg#80829) - Editor: leave undo to the browser in fields that handle their own undo (WordPress/gutenberg#80768) - Fix: New route-based admin pages are empty when no JS (WordPress/gutenberg#80839) Props wildworks. See #65529. Built from https://develop.svn.wordpress.org/trunk@62896 git-svn-id: http://core.svn.wordpress.org/trunk@62163 1a063a9b-81f0-0310-95a4-ce76da25c4cd
What?
Fixes a minor race condition that is unnoticeable to users but causes an e2e test to fail from time to time.
A note thread highlights its related block from two places: hover (debounced 50ms) and focus/blur (immediate). A hover toggle scheduled but not yet fired could land after the blur handler had already cleared the highlight, re-highlighting the
block. Nothing undoes it until the pointer moves, so the block stays stuck in the highlighted state.
This also made the
should collapse a note when the focus moves outside the notee2e test flaky (~3 in 8 locally): whether it failed depended purely on whether the test's remaining steps finished inside that 50ms window.I originally swapped
Shift+Tabfor a direct.focus()call, but that didn't fix it.How
debouncedToggleBlockHighlight.cancel()before each immediate write, so a focus-driven toggle always supersedes a pending hover one.Testing Instructions
This is hard to reproduce manually. Running the mentioned tests multiple times on the trunk will fail.
Use of AI Tools
Assisted by Claude.