[WebODF] Adding spec property "setOwnCursor" for Insert/Remove/Split ops

Jos van den Oever jos.van.den.oever at kogmbh.com
Mon Jun 24 12:27:46 CEST 2013


On 06/24/13 12:19, Friedrich W. H. Kossebau wrote:
> Am Samstag, 22. Juni 2013, 00:10:40 schrieb Jos van den Oever:
>> On 06/17/13 12:39, Friedrich W. H. Kossebau wrote:
>>> Hi WebODFler,
>>>
>>> I would like to add a new property to the specs of all insert/remove/split
>>> ops: setOwnCursor (or some better name). This property will tell if the
>>> cursor of the member which sends the operation should be put after the
>>> place/result of the op.
>>> Currently this is only done iff the cursor is at the position of the op.
>>> But with real OT, where local operations are instantly applied and only
>>> then sent to other clients who might have to transform them on conflicts,
>>> the transformed operations and positions of cursors can be out-of-sync,
>>> breaking the current assumption with UI editing that cursors will always
>>> automatically placed behind the places of modification.
>>
>> Ok, I wrote a long email with different scenarios and orders of
>> operations. I have discarded this mail because I came to the conclusion
>> that the problem is not with the occurrence of an out-of-sync with an
>> assumption of how cursors should move upon inserting or deleting text.
>>
>> Here is the original example. I have added a | to show the insertion point.
>>     <text:p>|<cursor memberid="A"/><cursor memberid="B"/></text:p>
>
> Why do you put the insertion point before the cursors? How would you argument
> for this ordering? Why this way do you bound the cursors more to the following
> and less to the preceding content?

A quick reply to only one question. I did read the rest of the mail. 
(I"m on holiday the whole week and shoudnt even be reading my mail.)

The reason I put the insertion point where I put it, is that that is 
where README_cursorpositions.txt tells me to put it. That document 
describes cursor positions. Now, <cursor/> is ignored in that reasoning 
normally, but if it werent, youd get
1) <text:p>|<cursor memberid="A"/><cursor memberid="B"/></text:p>
and
2) <text:p>a|<cursor memberid="A"/><cursor memberid="B"/></text:p>
Why? because README_cursorpositions.txt says:
  1) put | at start of empty paragraph, so before cursor
  2) put | directly to right of a character

Please consider the solution I wrote initially. It is simple and 
consistent with our cursor position documentation.

Cheers,
Jos



More information about the WebODF mailing list