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

Prevent unexpected copying of the post title #41284

Merged
merged 4 commits into from
Oct 31, 2022

Conversation

t-hamano
Copy link
Contributor

@t-hamano t-hamano commented May 24, 2022

@edit: This PR originally attempted to solve the copying problem in the post title and the widget areas at the same time. However, I have decided to resolve the widget issues separately in a new issue #45398. For details, please see the edit history.

What?

This PR prevents copying of a post titles.

Why?

When text is selected in the post title, getSelectedBlockClientIds is executed.
The post title is a block, but the clientId is empty, so the correct block name cannot be obtained at this point:
https://github.com/WordPress/gutenberg/blob/trunk/packages/block-editor/src/components/copy-handler/index.js#L34

As a result, a message with an undefined value is displayed.

post-title.mp4

How?

Make getSelectedBlockClientIds return an empty array if clientId of the selected block is an empty string or undefined value.

Testing Instructions

  • Select one of the letters in the post title.
  • Click between the letters to deselect them.
  • Press Ctrl(Cmd) + C or Ctrl(Cmd) + X .
  • On trunk: Confirm that the notification message contains "undefined" text.
  • On this branch: Confirm that no notification message appears and nothing is copied to the clipboard.

@t-hamano t-hamano added [Type] Bug An existing feature does not function as intended [Package] Block editor /packages/block-editor labels May 24, 2022
@t-hamano t-hamano requested a review from ellatrix as a code owner May 24, 2022 16:23
@github-actions
Copy link

github-actions bot commented May 24, 2022

Size Change: +9.98 kB (+1%)

Total Size: 1.28 MB

Filename Size Change
build/block-editor/index.min.js 169 kB +2.65 kB (+2%)
build/block-editor/style-rtl.css 15.8 kB +390 B (+3%)
build/block-editor/style.css 15.8 kB +394 B (+3%)
build/block-library/blocks/archives/style-rtl.css 90 B +25 B (+38%) 🚨
build/block-library/blocks/archives/style.css 90 B +25 B (+38%) 🚨
build/block-library/blocks/button/style-rtl.css 532 B +9 B (+2%)
build/block-library/blocks/button/style.css 532 B +9 B (+2%)
build/block-library/blocks/comment-template/style-rtl.css 199 B +12 B (+6%) 🔍
build/block-library/blocks/comment-template/style.css 198 B +13 B (+7%) 🔍
build/block-library/blocks/comments/editor-rtl.css 840 B +6 B (+1%)
build/block-library/blocks/comments/editor.css 839 B +7 B (+1%)
build/block-library/blocks/comments/style-rtl.css 637 B +5 B (+1%)
build/block-library/blocks/comments/style.css 636 B +6 B (+1%)
build/block-library/blocks/image/editor-rtl.css 880 B -4 B (0%)
build/block-library/blocks/image/editor.css 880 B -2 B (0%)
build/block-library/blocks/paragraph/editor-rtl.css 174 B -143 B (-45%) 🎉
build/block-library/blocks/paragraph/editor.css 174 B -143 B (-45%) 🎉
build/block-library/blocks/post-comments-form/style-rtl.css 501 B +8 B (+2%)
build/block-library/blocks/post-comments-form/style.css 501 B +8 B (+2%)
build/block-library/blocks/site-logo/editor-rtl.css 490 B +2 B (0%)
build/block-library/blocks/site-logo/editor.css 490 B +2 B (0%)
build/block-library/blocks/tag-cloud/style-rtl.css 251 B +12 B (+5%) 🔍
build/block-library/blocks/tag-cloud/style.css 253 B +14 B (+6%) 🔍
build/block-library/editor-rtl.css 11.2 kB -44 B (0%)
build/block-library/editor.css 11.2 kB -44 B (0%)
build/block-library/index.min.js 192 kB +737 B (0%)
build/block-library/style-rtl.css 12.3 kB +27 B (0%)
build/block-library/style.css 12.3 kB +25 B (0%)
build/blocks/index.min.js 49.9 kB +37 B (0%)
build/components/index.min.js 202 kB +227 B (0%)
build/components/style-rtl.css 11.3 kB +47 B (0%)
build/components/style.css 11.3 kB +39 B (0%)
build/compose/index.min.js 12.2 kB -289 B (-2%)
build/core-data/index.min.js 15.5 kB +4 B (0%)
build/customize-widgets/index.min.js 11.3 kB -5 B (0%)
build/edit-navigation/index.min.js 16.1 kB +131 B (+1%)
build/edit-post/index.min.js 34.1 kB +3.04 kB (+10%) ⚠️
build/edit-post/style-rtl.css 7.33 kB +360 B (+5%) 🔍
build/edit-post/style.css 7.32 kB +351 B (+5%) 🔍
build/edit-site/index.min.js 57.9 kB -40 B (0%)
build/edit-site/style-rtl.css 8.37 kB +8 B (0%)
build/edit-site/style.css 8.35 kB +7 B (0%)
build/edit-widgets/index.min.js 16.7 kB +135 B (+1%)
build/editor/index.min.js 43.6 kB +1.94 kB (+5%) 🔍
build/editor/style-rtl.css 3.6 kB -25 B (-1%)
build/editor/style.css 3.59 kB -24 B (-1%)
build/keycodes/index.min.js 1.83 kB -2 B (0%)
build/preferences/index.min.js 1.33 kB +29 B (+2%)
build/primitives/index.min.js 944 B +11 B (+1%)
build/rich-text/index.min.js 10.6 kB -10 B (0%)
build/url/index.min.js 3.61 kB +3 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 982 B
build/annotations/index.min.js 2.76 kB
build/api-fetch/index.min.js 2.26 kB
build/autop/index.min.js 2.14 kB
build/blob/index.min.js 475 B
build/block-directory/index.min.js 7.09 kB
build/block-directory/style-rtl.css 990 B
build/block-directory/style.css 991 B
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 126 B
build/block-library/blocks/audio/theme.css 126 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 84 B
build/block-library/blocks/avatar/style.css 84 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 482 B
build/block-library/blocks/button/editor.css 482 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 100 B
build/block-library/blocks/categories/style.css 100 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/cover/editor-rtl.css 612 B
build/block-library/blocks/cover/editor.css 613 B
build/block-library/blocks/cover/style-rtl.css 1.57 kB
build/block-library/blocks/cover/style.css 1.55 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 126 B
build/block-library/blocks/embed/theme.css 126 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 253 B
build/block-library/blocks/file/style.css 254 B
build/block-library/blocks/file/view.min.js 346 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 948 B
build/block-library/blocks/gallery/editor.css 950 B
build/block-library/blocks/gallery/style-rtl.css 1.53 kB
build/block-library/blocks/gallery/style.css 1.53 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 394 B
build/block-library/blocks/group/editor.css 394 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 327 B
build/block-library/blocks/html/editor.css 329 B
build/block-library/blocks/image/style-rtl.css 627 B
build/block-library/blocks/image/style.css 630 B
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 463 B
build/block-library/blocks/latest-posts/style.css 462 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 507 B
build/block-library/blocks/media-text/style.css 505 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 705 B
build/block-library/blocks/navigation-link/editor.css 703 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.02 kB
build/block-library/blocks/navigation/editor.css 2.03 kB
build/block-library/blocks/navigation/style-rtl.css 2.17 kB
build/block-library/blocks/navigation/style.css 2.16 kB
build/block-library/blocks/navigation/view-modal.min.js 2.78 kB
build/block-library/blocks/navigation/view.min.js 443 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 363 B
build/block-library/blocks/page-list/editor.css 363 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 586 B
build/block-library/blocks/post-featured-image/editor.css 584 B
build/block-library/blocks/post-featured-image/style-rtl.css 315 B
build/block-library/blocks/post-featured-image/style.css 315 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 282 B
build/block-library/blocks/post-template/style.css 282 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 326 B
build/block-library/blocks/pullquote/style.css 325 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 282 B
build/block-library/blocks/query-pagination/style.css 278 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 439 B
build/block-library/blocks/query/editor.css 439 B
build/block-library/blocks/quote/style-rtl.css 213 B
build/block-library/blocks/quote/style.css 213 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 409 B
build/block-library/blocks/search/style.css 406 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 464 B
build/block-library/blocks/shortcode/editor.css 464 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 322 B
build/block-library/blocks/spacer/editor.css 322 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 494 B
build/block-library/blocks/table/editor.css 494 B
build/block-library/blocks/table/style-rtl.css 611 B
build/block-library/blocks/table/style.css 609 B
build/block-library/blocks/table/theme-rtl.css 190 B
build/block-library/blocks/table/theme.css 190 B
build/block-library/blocks/template-part/editor-rtl.css 235 B
build/block-library/blocks/template-part/editor.css 235 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 691 B
build/block-library/blocks/video/editor.css 694 B
build/block-library/blocks/video/style-rtl.css 174 B
build/block-library/blocks/video/style.css 174 B
build/block-library/blocks/video/theme-rtl.css 126 B
build/block-library/blocks/video/theme.css 126 B
build/block-library/classic-rtl.css 162 B
build/block-library/classic.css 162 B
build/block-library/common-rtl.css 1.02 kB
build/block-library/common.css 1.02 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/theme-rtl.css 719 B
build/block-library/theme.css 722 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/customize-widgets/style-rtl.css 1.38 kB
build/customize-widgets/style.css 1.38 kB
build/data-controls/index.min.js 653 B
build/data/index.min.js 8.08 kB
build/date/index.min.js 32.1 kB
build/deprecated/index.min.js 507 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.7 kB
build/edit-navigation/style-rtl.css 3.99 kB
build/edit-navigation/style.css 4 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-widgets/style-rtl.css 4.34 kB
build/edit-widgets/style.css 4.34 kB
build/element/index.min.js 4.68 kB
build/escape-html/index.min.js 537 B
build/experiments/index.min.js 868 B
build/format-library/index.min.js 6.95 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.64 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.77 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.78 kB
build/list-reusable-blocks/index.min.js 2.13 kB
build/list-reusable-blocks/style-rtl.css 835 B
build/list-reusable-blocks/style.css 835 B
build/media-utils/index.min.js 2.93 kB
build/notices/index.min.js 963 B
build/nux/index.min.js 2.06 kB
build/nux/style-rtl.css 732 B
build/nux/style.css 728 B
build/plugins/index.min.js 1.94 kB
build/preferences-persistence/index.min.js 2.22 kB
build/priority-queue/index.min.js 1.58 kB
build/react-i18n/index.min.js 696 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.74 kB
build/reusable-blocks/index.min.js 2.21 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/server-side-render/index.min.js 1.77 kB
build/shortcode/index.min.js 1.53 kB
build/style-engine/index.min.js 1.46 kB
build/token-list/index.min.js 644 B
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 38.5 kB
build/vendors/react.min.js 4.34 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 268 B
build/widgets/index.min.js 7.21 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.19 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@t-hamano
Copy link
Contributor Author

The unit test failed, so I would like to find out where the mistake is.

Copy link
Member

@Mamaduka Mamaduka left a comment

Choose a reason for hiding this comment

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

Thanks for the PR, @t-hamano.

I didn't get a chance to start reviewing this yet.

Can you update the title and description so it matches the latest changes?

@t-hamano t-hamano changed the title getSelectedBlockClientIds: Exclude widget area block and post title from block selection Prevent copying of a post title and widget areas May 26, 2022
@t-hamano
Copy link
Contributor Author

@Mamaduka
I have updated the title and description.
However, I think there is a mistake somewhere. because e2e tests failed.
I would like to update PR so that e2e tests pass in my local environment.

@t-hamano t-hamano force-pushed the fix/get-selected-block-client-ids branch from c4a7de0 to ea31055 Compare May 28, 2022 04:25
@t-hamano
Copy link
Contributor Author

The rebasing passed all tests.
Please advise if you have a better approach to this PR,

@t-hamano t-hamano self-assigned this Aug 9, 2022
@t-hamano
Copy link
Contributor Author

t-hamano commented Oct 7, 2022

I have confirmed that this problem still reproduces with the latest trunk. I have also confirmed that this PR will solve the problem.
I would appreciate it if someone could review if this PR makes sense 🙏

@Mamaduka Mamaduka requested review from a team and michalczaplinski and removed request for a team October 19, 2022 17:10
@michalczaplinski
Copy link
Contributor

Taking a look at this now!

@michalczaplinski
Copy link
Contributor

michalczaplinski commented Oct 21, 2022

Thanks for the PR @t-hamano! I've tested it and confirmed that it fixes both issues as you described.

  • The fix for the post title is great 👍 Awesome work.

  • The fix for the widget areas I am little hesitant about. The previous UX was:

    1. A user copies a widget.
    2. They try to paste it in the block editor.
    3. They are faced with an error message so they remove the content.

    The UX in this PR is:

    1. A user copies a widget.
    2. They try to paste it in the block editor.
    3. The content does not paste anything and the user does not know why. They might see that nothing is copied into the clipboard at which point they would might try copying the widget again and pasting it again. Not a great user experience.

    So while I understand that the widget area blocks can't be used by the block editor and their HTML has no use I think it's still a better user experience to show an error message in the block editor rather than fail to copy them.

@noisysocks
Copy link
Member

I don't think we should fix this by adding an exception to @wordpress/block-editor code. @wordpress/block-editor is pretty low level and shouldn't have to worry about specific scenarios in which it is used including the widgets editor.

Is there an alternative way to fix this in @wordpress/edit-widgets?

Thinking more higher level, I think this is yet another example of why it was a mistake to implement widget areas using blocks 😅 See #33254.

@t-hamano
Copy link
Contributor Author

t-hamano commented Oct 24, 2022

Thank you for the review, @michalczaplinski!

So while I understand that the widget area blocks can't be used by the block editor and their HTML has no use I think it's still a better user experience to show an error message in the block editor rather than fail to copy them.

This PR prohibits the copying of the widget area itself, so the snack bar message itself does not appear to indicate that it has been copied.
Therefore, we do not think there is a problem with UX, how do you think?

@michalczaplinski
Copy link
Contributor

Hey @t-hamano !

Aside from the question of the user experience I'm afraid I'll have to side with @noisysocks here (thanks for chiming in Robert, btw!). Sorry about this! I didn't consider that the block-editor should be agnostic of things like widgets.

I'd still very much like to fix this issue but I'm not very familiar with the edit-widgets package. Do you see any other way to fix it in @wordpress/edit-widgets @t-hamano ?

@t-hamano
Copy link
Contributor Author

I am trying to solve this in the @wordpress/edit-widgets package, but so far it has not worked 😅
I cannot prevent the copy handler provided by @wordpress/block-editor by any means. I would like to try a few more approaches.

@t-hamano
Copy link
Contributor Author

As for the widget area fix, I have yet to find a workable solution, so I have cut it out as a separate issue #45398, and reverted the changes. Also, perhaps I should not have addressed the two issues at the same time.

Sorry for the confusion 🙏

@t-hamano t-hamano changed the title Prevent copying of a post title and widget areas Prevent unexpected copying of the post title Oct 29, 2022
Copy link
Contributor

@michalczaplinski michalczaplinski left a comment

Choose a reason for hiding this comment

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

The fix works great @t-hamano 👍

We can tackle the widgets issue in the other PR!

@michalczaplinski michalczaplinski merged commit cba9df0 into trunk Oct 31, 2022
@michalczaplinski michalczaplinski deleted the fix/get-selected-block-client-ids branch October 31, 2022 20:58
@github-actions github-actions bot added this to the Gutenberg 14.5 milestone Oct 31, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Package] Block editor /packages/block-editor [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants