Skip to content

Writing Flow: fix reverse selection after block deletion from rich text#22292

Merged
ellatrix merged 3 commits intomasterfrom
fix/image-merge-selection
May 12, 2020
Merged

Writing Flow: fix reverse selection after block deletion from rich text#22292
ellatrix merged 3 commits intomasterfrom
fix/image-merge-selection

Conversation

@ellatrix
Copy link
Copy Markdown
Member

@ellatrix ellatrix commented May 12, 2020

Description

See also #22290.

Currently, when you press Backspace in an empty paragraph that is preceded by an image block (for example), the caret selection ends up at the last text field (caption) but not at end of that field.

It seems that some blocks are passing onReplace( [] ) as onRemove to RichText, which is really strange. Semantically, this should be just onRemove, which also handles setting the selection correctly.

How has this been tested?

Screenshots

Types of changes

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 12, 2020

Size Change: +18 B (0%)

Total Size: 827 kB

Filename Size Change
build/block-editor/index.js 104 kB +24 B (0%)
build/block-library/index.js 115 kB -6 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/annotations/index.js 3.62 kB 0 B
build/api-fetch/index.js 4.08 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.62 kB 0 B
build/block-directory/style-rtl.css 764 B 0 B
build/block-directory/style.css 764 B 0 B
build/block-editor/style-rtl.css 10.6 kB 0 B
build/block-editor/style.css 10.6 kB 0 B
build/block-library/editor-rtl.css 7.12 kB 0 B
build/block-library/editor.css 7.12 kB 0 B
build/block-library/style-rtl.css 7.38 kB 0 B
build/block-library/style.css 7.38 kB 0 B
build/block-library/theme-rtl.css 683 B 0 B
build/block-library/theme.css 685 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 48.1 kB 0 B
build/components/index.js 181 kB 0 B
build/components/style-rtl.css 17 kB 0 B
build/components/style.css 16.9 kB 0 B
build/compose/index.js 6.66 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.43 kB 0 B
build/date/index.js 5.47 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.1 kB 0 B
build/edit-navigation/index.js 4.42 kB 0 B
build/edit-navigation/style-rtl.css 618 B 0 B
build/edit-navigation/style.css 617 B 0 B
build/edit-post/index.js 28 kB 0 B
build/edit-post/style-rtl.css 12.2 kB 0 B
build/edit-post/style.css 12.2 kB 0 B
build/edit-site/index.js 12.1 kB 0 B
build/edit-site/style-rtl.css 5.22 kB 0 B
build/edit-site/style.css 5.22 kB 0 B
build/edit-widgets/index.js 8.37 kB 0 B
build/edit-widgets/style-rtl.css 4.69 kB 0 B
build/edit-widgets/style.css 4.69 kB 0 B
build/editor/editor-styles-rtl.css 425 B 0 B
build/editor/editor-styles.css 428 B 0 B
build/editor/index.js 44.3 kB 0 B
build/editor/style-rtl.css 5.07 kB 0 B
build/editor/style.css 5.08 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 734 B 0 B
build/format-library/index.js 7.63 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 2.14 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.51 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.12 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 5.29 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 14.8 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.02 kB 0 B
build/viewport/index.js 1.84 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

@ellatrix ellatrix requested review from nerrad and ntwb as code owners May 12, 2020 12:53
@ellatrix ellatrix added the [Type] Bug An existing feature does not function as intended label May 12, 2020
@ellatrix ellatrix merged commit 903e52c into master May 12, 2020
@ellatrix ellatrix deleted the fix/image-merge-selection branch May 12, 2020 13:54
@github-actions github-actions Bot added this to the Gutenberg 8.2 milestone May 12, 2020
@ZebulanStanphill
Copy link
Copy Markdown
Member

It seems that some blocks are passing onReplace( [] ) as onRemove to RichText, which is really strange. Semantically, this should be just onRemove, which also handles setting the selection correctly.

I suspect that a bunch of blocks are doing it that way because one block did it that way first, and all the other blocks just copied the approach, so now doing it that way appears to be correct because all the other blocks do it that way.

@youknowriad
Copy link
Copy Markdown
Contributor

Do you think we can treat the onReplace([]) exactly like onRemove on the reducer level (update selection)?

@ellatrix
Copy link
Copy Markdown
Member Author

The selection doesn't happen in the reducer, but rather in the action. I guess we could add it in the replace action?

@youknowriad
Copy link
Copy Markdown
Contributor

or maybe forward the replace action to the "remove" one if the array is empty. Also, I'm wondering if we need to update the selection if the array is not empty and if the behavior there should be different?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Type] Bug An existing feature does not function as intended

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants