MTBlockEditor : カスタムブロックの作成画面で、プロパティの項目に対してキーボード操作によるコピーアンドペーストができない
Description
Checklists
Attachments
- 24 Jan 2024, 01:02 AM
Activity
Taku AmanoJanuary 24, 2024 at 7:07 AMEdited
@Keita Sugama ありがとうございます。
説明していなくてすみません。
全体としては以下のような挙動にしたいです。
とにかく、現在何かが選択されていれば、コピーの対象はそれだと思うのでそれがコピーされるべき
起票してもらった内容の通り「何故か全体がコピーされてしまう」というのはそれなりに大きいストレスだと思うので、その意味でもとにかく何かが選択されていれば全体はコピーされないでほしい
なので、Firefox以外でも、window.getSelection().toString() === "" && document.activeElementselectionStart !== document.activeElement.selectionEnd
が成立する環境があれば、その場合にはブラウザのコピーの挙動を優先したいです。(ただ多分、「selectionがfalseになることがあるのか分かりませんが。」と書いてもらっている通り、そういう環境はないような気はします。)なのでそのあたりを踏まえて「最大公約数的に、何か選択されていたらブラウザの挙動を優先」というようにするのがこのコードの意図です。
ブロックをコピーしたいときには「対象のブロックにフォーカスがあるときに⌘C」というのが現状の仕様ですが、「input要素にフォーカスをあてずに、対象のブロックにフォーカスがある」という状態を判断するのが難しいと思うので、(ブロックにフォーカスをあてる == ブロック内の何らかのinput要素にフォーカスをあてるになることがおおいので)そのようになっています。(あと、細かい経緯は忘れてしまいましたが、先行のブロックエディタであるwordpressのgutenbergもそうなので、それに引っ張られている可能性もあります。)
ただまあ、その仕様はそれはそれとして「カスタムブロックの作成モードでは、ブロックのコピー機能は無効」でもいいかもという気もしますね。カスタムブロックの作成時にはコピーできなくていいと思うので。あるいは、もしもっといい感じの挙動があれば提案してもらえるとうれしいです。
このチケットについてはこれで進めさせてもらいます。ありがとうございました!
Keita SugamaJanuary 24, 2024 at 5:31 AM
「Firefox以外でも」というのは語弊がありました。単純に少し条件変わった、程度の意味です。
Keita SugamaJanuary 24, 2024 at 5:27 AM
@Taku Amano
ありがとうございます。
Firefox と Chrome で正常動作でした。
https://github.com/movabletype/mt-block-editor-internal/pull/231/commits/b051334264dc38f2b6a93d9751c5c7ecaea23d1f#diff-4a336fde99bed6c9540b5a3ddd151b9fa1103ceec57a800057162039367db13bL11 の return false
がなくなったことで Firefox以外でもFirefox用の処理に流れるようになったと思いますが、気にしなくていいですかね。selectionがfalseになることがあるのか分かりませんが。
<input type=”text”> 内で選択範囲が長さ0のときにブロックがコピーされるのが若干違和感ありますが、PR前のchromeでも同じでした。上記の件とは関係ないですね。
上記、問題ないようでしたら全体的によいと思います。
Taku AmanoJanuary 24, 2024 at 5:07 AM
@Keita Sugama ありがとうございます。
isTextSelected()
なので意味的には window.getSelection()
からなんとか取得できるといい感じがするのですが、取れないものはしょうがないし、document.activeElement
でうまく動くなら問題ないのでそれでいこうと思います。ここは(ほんとは正しく取れた方がいいですが)最悪判定ミスがあっても「なんかうまくコピーできないことがある」というだけでデータが壊れるようなものではないので、ある程度曖昧な着地点でもOKだと思いますし。
ということで、追加したこのコミットの内容で進めたいと思います。
https://github.com/movabletype/mt-block-editor-internal/pull/231/commits/b051334264dc38f2b6a93d9751c5c7ecaea23d1f
なんどもすみませんが、これでレビューお願いします。
Keita SugamaJanuary 24, 2024 at 4:48 AM
@Taku Amano
動きました!
Details
Assignee
Keita SugamaKeita SugamaReporter
Keita SugamaKeita SugamaFix versions
Components
Priority
3. Should be
Details
Details
Assignee
Reporter
Fix versions
Components
Priority
Smart Checklist
Open Smart Checklist
Smart Checklist
Open Smart Checklist
Smart Checklist

テキストブロックのラベルをコピーしてクラス名にペーストするつもりで Cmd+C, Cmd+V をすると、ブロック全体がコピペされ、文字列のペーストができない。コンテキストメニューではコピペできる。
MacOS 13.4.1
Firefox 121.0 (64 ビット)