fix(caret): getting last letter top in long multiline words (@NadAlaba) (#5856)

* fix(caret): getting last letter top in long multiline words (@NadAlaba)

* no need to check for invisible extra letters

This check was needed when `letterPosTop` was
`currentLetter?.offsetTop ?? previousLetter?.offsetTop ??
lastWordLetter?.offsetTop` where `previousLetter?.offsetTop` was defined
but 0 in extra letters in blind mode, so we got the value of zero
although in some fonts the real value (`lastWordLetter` value) is not 0.

However, now we don't use `previousLetter`, and `currentLetter` is
undefined in extra letters (blind mode or not), so we'll get the value
we want (`lastWordLetter` value) in extra letters.

* update comment
This commit is contained in:
Nad Alaba 2024-09-06 12:59:27 +03:00 committed by GitHub
parent 77c1e8e298
commit cbaefbf210
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -159,14 +159,15 @@ export async function updatePosition(noAnim = false): Promise<void> {
const isLanguageRightToLeft = currentLanguage.rightToLeft;
// in blind mode, and hide extra letters, extra letters have zero offsets
// offsetTop and offsetHeight is the same for all visible letters
// offsetHeight is the same for all visible letters
// so is offsetTop (for same line letters)
const letterHeight =
currentLetter?.offsetHeight ||
lastWordLetter?.offsetHeight ||
Config.fontSize * Numbers.convertRemToPixels(1);
const letterPosTop =
currentLetter?.offsetTop || lastWordLetter?.offsetTop || 0;
currentLetter?.offsetTop ?? lastWordLetter?.offsetTop ?? 0;
const diff = letterHeight - caret.offsetHeight;
let newTop = activeWordEl.offsetTop + letterPosTop + diff / 2;
if (Config.caretStyle === "underline") {