Hexlet / hexlet-correction

Typo Reporter
https://fixit.hexlet.io/
GNU Affero General Public License v3.0
49 stars 83 forks source link

Bug: при выделении только одного символа в виджете появляется дублирование #245

Closed bazilval closed 5 months ago

bazilval commented 5 months ago

Summary

Баг не постоянен и я не смог выяснить почему иногда появляется. Выглядит это вот так: image Появляется только при выделении одного символа и не каждый раз.

Reproduction steps

1. Открыть https://hexlet.github.io/hexlet-correction/index.html
2. Выбрать любой один символ
3. Нажать Ctrl + Enter
4. Проверить появились ли лишние символы
5. Если нет, повторить пункты 3 и 4 несколько раз

Expected result

Вокруг жирного подчёркнутого символа не должно быть его дублирований

Actual result

Периодически символ дублируется

Browsers

Microsoft Edge

OS

No response

bazilval commented 5 months ago

Получилось словить эту штуку на полном слове image

fey commented 5 months ago

пока не удалось воспроизвести

bazilval commented 5 months ago

@fey попробую в других браузерах ещё

bazilval commented 5 months ago

@fey попробовал в режиме инкогнито и на другом устройстве, баг повторяется, но так же нерегулярно. Не могу поймать закономерность появления. Почему-то чаще именно с одиночным символом, однако со словом и фразой тоже пару раз ловил.

Также удалось заметить, что если перед этим в холостую нажать комбинацию Ctrl + Enter, то баг появляется с большей вероятностью. А может и нет, попробуйте подольше простреливать, должен появиться.

Демо: Анимация

GranDalier commented 5 months ago

Всем привет, попытался воспроизвести и обнаружил закономерность. Если начало у выделения стоит левее его конца то бага нет, а если начало выделения стоит правее его конца то происходит дублирование (Если вкратце выделяя слева направо бага нет, а если справа налево то появляется дублирование).

Также виджет некорректно работает при выделении на границе двух разных элементов страницы.

GranDalier commented 5 months ago

Забыл вас тэгнуть @fey @bazilval

bazilval commented 5 months ago

@GrandVandal Отличная наблюдательность! Видимо что-то с алгоритмом расчёта фрагментов. Скорее всего он для "фрагмента до" берёт от начала контекста до начала выделения, а для "фрагмента после" берёт от конца выделения до конца контекста. А конкретно в этих случаях у нас начало выделение и конец выделения перепутаны местами