deltachat / deltachat-desktop

Email-based instant messaging for Desktop.
GNU General Public License v3.0
909 stars 167 forks source link

Typing a multi-line message makes chat scroll up (then you have to scroll to see new messages) #3763

Open WofWca opened 4 months ago

WofWca commented 4 months ago

On the video I've caught a rare case where this doesn't happen for a few lines, but then it starts happening again. I always found it about the most annoying thing about Delta Chat Desktop.

Workaround: keep pressing "Page Down" while you're writing your message.

Related:

missytake commented 4 months ago

Oh thanks this is annoying me so much, I tried to report it once, but then when I failed to reproduce it on purpose

WofWca commented 1 month ago

Ok, a few discoveries. I wrote this test simple bench:

HTML ```html Document
  1. sample message
  2. sample message
  3. sample message
  4. sample message
  5. sample message
  6. sample message
  7. sample message
  8. sample message
  9. sample message
  10. sample message
  11. sample message
  12. sample message
  13. sample message
  14. sample message
  15. sample message
  16. sample message
  17. sample message
  18. sample message
  19. sample message
  20. sample message
  21. sample message
  22. sample message
  23. sample message
  24. sample message
  25. sample message
  26. sample message
  27. sample message
  28. sample message
  29. sample message
  30. sample message
  31. sample message
  32. sample message
  33. sample message
  34. sample message
  35. sample message
  36. sample message
  37. sample message
  38. sample message
  39. sample message
  40. sample message
  41. sample message
  42. sample message
  43. sample message
  44. sample message
  45. sample message
  46. sample message
  47. sample message
  48. sample message
  49. sample message
  50. sample message
  51. sample message
  52. sample message
  53. sample message
  54. sample message
  55. sample message
  56. sample message
  57. sample message
  58. sample message
  59. sample message
  60. sample message
  61. sample message
  62. sample message
  63. sample message
  64. sample message
  65. sample message
  66. sample message
  67. sample message
  68. sample message
  69. sample message
  70. sample message
  71. sample message
  72. sample message
  73. sample message
  74. sample message
  75. sample message
  76. sample message
  77. sample message
  78. sample message
  79. sample message
  80. sample message
```

And the issue is also present there, so I suppose it's not something specific to Delta Chat.

What I found is sometimes the message list stays scrolled down under specific circumstances:

  1. Reload the page
  2. Expand the <textarea> up. The last message will hide behind it (the issue).
  3. Scroll message list to the bottom.
  4. Shrink the textarea down.
  5. Expand the textarea up. The chat will keep being scrolled down up to the point where you resize the textarea to the biggest size it had in step 2.

https://github.com/user-attachments/assets/030491be-55d5-42ae-9e1c-75d7ed7f8e2b

This looks Chromium-internal. This behavior is not reproducible on Firefox. This is also why the issue looks not 100% reproducible.

I suppose a hacky solution would be to, on initial render

  1. expand the composer up
  2. scroll the chat to the bottom
  3. shrink the composer back to its normal size

I also looked at Signal code (which doesn't have this issue) and played around with it using dev tools (./Signal.exe --enable-dev-tools), and I found that if this element is removed from DOM, then the buggy behavior comes in.

This is where they use the element. They set newIsNearBottom = true if the element is visible and go from there, supposedly scrolling chat to bottom (but I didn't check further). So they're taking a more thorough approach and not the hacky one that I mentioned above.