Last modified: 2013-02-16 00:44:33 UTC
Test case: + 'removing then inserting a character': { + 'calls': [ + ['pushRetain', 41], + ['pushReplace', ['i'], []], + ['pushReplace', [], ['j']] + ], + 'expected': function ( data ) { + data[41] = 'j'; + ve.setProp( data[37], 'internal', 'changed', 'content', 2 ); + } } This sets the second change marker on data[36]. This happens because the start offsets handled in TransactionProcessor.replace are translated using this.adjustment , but that glosses over the fact that not all adjustments captured in this.adjustment actually apply if the offset is before the cursor. Instead, we need some sort of offset translation. I tried using ve.dm.Transaction.translateOffset() but that doesn't seem to work out of the box very well. I guess theoretically this might also be an issue with other uses of .start attributes in the replacement processor, but it hasn't led to issues so far. Low prio because we currently don't generate transactions that trigger this case.
With bug 45061 all change marker code has been removed.