codemirror / dev

Development repository for the CodeMirror editor project
https://codemirror.net/
Other
5.44k stars 343 forks source link

Incorrect highlight of block widgets with drawSelection + lineWrapping extensions #1373

Closed Corb3nik closed 2 months ago

Corb3nik commented 2 months ago

Describe the issue

Hello 👋

The drawSelection extension highlights the wrong areas when the cursor is near a block widget. This only happens when the EditorView.lineWrapping extension is enabled.

Some examples of incorrect highlights:

https://github.com/codemirror/dev/assets/6225588/29eb7b97-b7d2-4f5e-93a4-cb74fc7ec3dd

I was able to reproduce this issue on:

Browser and platform

No response

Reproduction link

https://codemirror.net/try/?c=aW1wb3J0IHttaW5pbWFsU2V0dXB9IGZyb20gImNvZGVtaXJyb3IiCmltcG9ydCB7CiAgUmFuZ2VTZXRCdWlsZGVyLAogIFN0YXRlRmllbGQsCn0gZnJvbSAiQGNvZGVtaXJyb3Ivc3RhdGUiOwppbXBvcnQgewogIERlY29yYXRpb24sCiAgRWRpdG9yVmlldywKICBXaWRnZXRUeXBlLAogIGRyYXdTZWxlY3Rpb24KfSBmcm9tICJAY29kZW1pcnJvci92aWV3IjsKCmNsYXNzIE5ld2xpbmVXaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHsKICB0b0RPTSgpIHsKICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgZGl2LnRleHRDb250ZW50ID0gIi0tLS0tLS0tLS0tIjsKICAgIHJldHVybiBkaXY7CiAgfQp9Cgpjb25zdCBnZXREZWNvcmF0aW9ucyA9ICgpID0+IHsKICBjb25zdCBidWlsZGVyID0gbmV3IFJhbmdlU2V0QnVpbGRlcigpOwogIGNvbnN0IGRlY29yYXRpb24gPSBEZWNvcmF0aW9uLndpZGdldCh7CiAgICB3aWRnZXQ6IG5ldyBOZXdsaW5lV2lkZ2V0KCksCiAgICBibG9jazogdHJ1ZSwKICB9KTsKCiAgYnVpbGRlci5hZGQoMSwgMSwgZGVjb3JhdGlvbik7CiAgYnVpbGRlci5hZGQoOCwgOCwgZGVjb3JhdGlvbik7CiAgcmV0dXJuIGJ1aWxkZXIuZmluaXNoKCk7Cn07Cgpjb25zdCBmaWVsZCA9IFN0YXRlRmllbGQuZGVmaW5lKHsKICBjcmVhdGUoKSB7CiAgICByZXR1cm4gZ2V0RGVjb3JhdGlvbnMoKTsKICB9LAogIHVwZGF0ZShkZWNvcmF0aW9ucykgeyAKICAgIHJldHVybiBkZWNvcmF0aW9ucyAKICB9LAogIHByb3ZpZGU6IChmKSA9PiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZiksCn0pOwoKbmV3IEVkaXRvclZpZXcoewogIGRvYzogJ3siQSI6IkIifScsCiAgZXh0ZW5zaW9uczogW21pbmltYWxTZXR1cCwKICAgICAgICAgICAgICBmaWVsZCwKICAgICAgICAgICAgICBFZGl0b3JWaWV3LmxpbmVXcmFwcGluZywKICAgICAgICAgICAgICBkcmF3U2VsZWN0aW9uKCldLAogIHBhcmVudDogZG9jdW1lbnQuYm9keQp9KQo=

marijnh commented 2 months ago

Attached patch should improve this.