ONLYOFFICE / DocumentServer

ONLYOFFICE Docs is a free collaborative online office suite comprising viewers and editors for texts, spreadsheets and presentations, forms and PDF, fully compatible with Office Open XML formats: .docx, .xlsx, .pptx and enabling collaborative editing in real time.
https://www.onlyoffice.com
GNU Affero General Public License v3.0
4.86k stars 1.09k forks source link

Document cursor bouncing about when someone else edits the document #2826

Closed nikkilocke closed 1 month ago

nikkilocke commented 3 months ago

This issue is unique.

Operating System of DocumentServer

Docker

Version information

8.1.1.28

Expected Behavior

I am looking at page 10 of a long document. I have been typing, so the text cursor is where I am looking. Someone else inserts a lot of lines on page 1 of the document. My text cursor should remain where it is, and the document should not appear to move about.

Actual Behavior

My view of the document bounces around all over the place. My text cursor sometimes moves (although it often, but not always, moves back to where it was before).

Reproduction Steps

The easiest way to reproduce it is to paste 20 or 30 lines of text into a new document 10 or so times, to make a long document. Open the document on another computer, go to a page near the bottom, and type something (so you can see where the text cursor is). On the first computer, paste in some more lines near the top of the document, and watch the second computer to see what happens. Then click undo on the first computer (so the text goes away again) and see what happens. Different numbers of lines of text seem to cause different behaviour.

Additional information

It is quite difficult to write down a proper spec of what should actually happen. Definitely, the text cursor shouldn't end up in a different place in the text.

Ideally the screen wouldn't jump, so the text cursor is as near as possible in the same spot on the screen.

Even better would be for the screen not to move about even if you use the scroll wheel to move the screen away from where the text cursor is, but I imagine that would be really difficult to do in a web app.

TatianaKirillova commented 3 months ago

Hello @nikkilocke! Thanks for reaching out! Please clarify: 1 ​​user must be with the cursor on page 2 of the document, and 2 user must type the text at the end of the document. And at this time the cursor of 1 user moves somewhere?

nikkilocke commented 3 months ago

The other user must type text at the START of the document.

On Fri, 2 Aug 2024, 14:23 TatianaKirillova, @.***> wrote:

Hello @nikkilocke https://github.com/nikkilocke! Thanks for reaching out! Please clarify: 1 ​​user must be with the cursor on page 2 of the document, and 2 user must type the text at the end of the document. And at this time the cursor of 1 user moves somewhere?

— Reply to this email directly, view it on GitHub https://github.com/ONLYOFFICE/DocumentServer/issues/2826#issuecomment-2265397983, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFG76OB7SWJXW2S5DITJETZPOB4BAVCNFSM6AAAAABLY5VI6KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENRVGM4TOOJYGM . You are receiving this because you were mentioned.Message ID: @.***>

TatianaKirillova commented 2 months ago

@nikkilocke Sorry, I can't reproduce your scenario if the first user writes at the beginning of the document and the second user's cursor is on the last page. The second user does not experience cursor jumps. Perhaps you can attach your file?

Rita-Bubnova commented 1 month ago

This issue was closed due no response.

amovsisyan commented 2 weeks ago

Actually, this issue is reproducable, think the main content should be adjusted a bit.

User A's cursor is on the same page as user B's cursor.

When User A does a change on top of User B's cursor (add new row or delete) user B's cursor changes it's position.

Actual example. There are 3 lines/paragraphs... 1sr line (User A's cursor is here) 2nd line 3rd line (User B's cursor is here)


User B is typing something . User A hits enter and creates a new line. Actual result: User B's cursor jumps into the 2nd line. Expected result: User B's cursor should not jump into the 2nd line and must be on the 3rd line.


Actual result ends in 1sr line {new line} (User A's cursor is here) 2nd line (User B's cursor is here) 3rd line


Expected result must be 1sr line {new line} (User A's cursor is here) 2nd line 3rd line (User B's cursor is here)

amovsisyan commented 2 weeks ago

@TatianaKirillova | @Rita-Bubnova can you pls take a look at the scenario described above? LMK if you have any other questions ...

TatianaKirillova commented 1 week ago

@amovsisyan This is exactly the correct behavior: that user B's cursor moves, but the focus of the document should not change. This is done so that user B can continue to calmly edit the line he needs, and if he just needs to read the document, his cursor will be in the line that he selected, but at the same time he reads the text without “jumping” and, if necessary, pressing, for example, the spacebar will always return to "its line"

amovsisyan commented 1 week ago

I am so sorry we made a mistake on our side during testing, everything works as expected, sorry for taking your time and efforts.

TatianaKirillova commented 1 week ago

@amovsisyan Everything is fine! I'm glad there is no problem. Please continue to write to us with any editor questions!