[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