ckeditor / ckeditor5

Powerful rich text editor framework with a modular architecture, modern integrations, and features like collaborative editing.
https://ckeditor.com/ckeditor-5
Other
9.55k stars 3.7k forks source link

[Xiaomi] Buggy double characters on mobiles #15584

Open lazar2038 opened 10 months ago

lazar2038 commented 10 months ago

📝 Provide detailed reproduction steps (if any)

  1. Open editor on the mobile

  2. Choose any language. Let it be "English" for example

  3. Start typing "Z", make empty space

  4. then type "zx", and it will convert to "zzx"

  5. You may also type "c", add space, and it will be converted to "cc"

If you'd like to see this fixed sooner, add a 👍 reaction to this post.

Witoso commented 10 months ago

Hi, thanks for the report. Do you use some specific keyboard (like Gboard) or the built-in one in Miui?

lazar2038 commented 10 months ago

No, we tested it on native keyboard on all the Xiaomi smartphones.

I have attached the test file to this comment, you can rename it to .html and test. This is a native CKEditor example from the website. test.txt

Thank you.

caprisc commented 10 months ago

It's not only Xiaomi! There are other android phones that have that problem as well (at least some users in our woltlab suite forum experience the same issue). And on my BlackBerry KeyOne (with Android8) it's the same - and a bit different.

The double first characters do occur with the built-in external physical keyboard, but not always. It only occurs after the first word, so the first word in a paragraph doesn't have any double letters. I tried to replicate it with the virtual keyboard - didn't get the double characters to work - but the double first characters are not present with the physical keyboard right now as well.

But there's another issue that might be related and seems to switch places with the 'double characters' (physical or virtual keyboard, doesn't matter - it's either this below or double characters, not both at the same time): I cannot delete words. Every time i try to delete a word with backspace it gets to the last/first letter and just... duplicates the whole word. Sometimes even multiple times. It's hard to explain

Let's just say I type in 'physical' and try to remove that word letter by letter with backspace. Once I get to the p, the whole word 'physical' just pops up again as if I never deleted it. If I want to write the next word and press 'space' it just copies the whole word again. 'physical' becomes 'physicalphysical', or maybe even 'physicalphy' if I pressed space after 'phy' while deleting that word.

I cannot 'select all' and delete that word either, it just... copypastes once I just try to select it.

It's almost impossible to work with CKEditor5 on my mobile device, so a fix would be more than appreciated!

Witoso commented 10 months ago

Thank you for the comment, we have those reports registered and plan to debug those soon.

wimleers commented 9 months ago

Also reported against Drupal: https://www.drupal.org/project/drupal/issues/3417978#comment-15420910

dtdesign commented 9 months ago

@lazar2038 Can you please confirm that the behavior in step 4 really results in “zxz” and not ”zzx”? Everything else strongly suggests that this is in fact a duplicate of #14567?

From my experience after debugging that issue, “zzx” makes no sense because the single letter duplication is caused by the selection effectively off-by-one. In combination with the composition behavior on Android this causes the replacement to be slightly off which causes a leftover character to appear to the right of the caret.

@Witso Point 4 is the only difference to #14567, if the user confirms that they really meant to write “zxz” as the result, then this is definitely a duplicate.

lazar2038 commented 9 months ago

@lazar2038 Can you please confirm that the behavior in step 4 really results in “zxz” and not ”zzx”? Everything else strongly suggests that this is in fact a duplicate of #14567?

My mistake. Step 4 results in "zzx".

dtdesign commented 9 months ago

@lazar2038 You just wrote exactly what is written in your initial description which is a bit confusing when you start with “My mistake”. I’m sorry to bother you, but I’m not sure if I’m just dumb here! ;-)

You wrote: Step 4 results in zzx

Following my observations it should result in zxz. Can you confirm that it actually results in zxz?

lazar2038 commented 9 months ago

@lazar2038 You just wrote exactly what is written in your initial description which is a bit confusing when you start with “My mistake”. I’m sorry to bother you, but I’m not sure if I’m just dumb here! ;-)

You wrote: Step 4 results in zzx

Following my observations it should result in zxz. Can you confirm that it actually results in zxz?

Oh. My mistaken mistake.

The result is definitely "zzx". The first letter of every word except first word is cloned. Video showing this case: https://www.youtube.com/shorts/XkO4t9AEGDQ

lazar2038 commented 9 months ago

My mistaken mistake, i understood you incorrectly.

Yes, the result is definitely "zzx". I attach video showing the case: https://www.youtube.com/shorts/Srbb4bc01cE

dtdesign commented 9 months ago

Thanks for taking your time to clarify it! So this is actually a different issue to the one I was having my luck with.

dtdesign commented 9 months ago

@lazar2038 I did some more testing and found somewhat of a fix that addresses a lot of problems that occur around spaces. My latest attempt is included at the end of https://github.com/ckeditor/ckeditor5/issues/13994#issuecomment-1937059250, it requires manually patching the source to incorporate the change, even hot patching the renderer.js in node_modules would work.

Considering everything I have learned so far, I am somewhat confident that it solves your issue. Would love to hear some feedback from you if you can spare the time! 🙂