Re: DOMTransactionEvent in UndoManager

I don't care what the event object's interface is, but for each
undoManager.undo() there should be exactly one undo event.
undoManager.undo() should be the same as a user undoing.


On Fri, Aug 24, 2012 at 1:18 PM, Ryosuke Niwa <rniwa@webkit.org> wrote:

> On Fri, Aug 24, 2012 at 12:45 PM, Sukolsak Sakshuwong <sukolsak@google.com
> > wrote:
>
>> According to the UndoManager spec
>> (
>> http://dvcs.w3.org/hg/undomanager/raw-file/tip/undomanager.html#dom-undomanager-undo
>> ),
>> we fire an undo event whenever undoManager.undo() is called. However,
>> the spec is kind of ambiguous in regard to multiple DOM transactions.
>> For example, there can be multiple DOM transactions in one entry,
>> which can be achieved by using undoManager.transact(..., true). How
>> should we fire an undo event in this case, and which transaction
>> should we set on the event object? For example,
>>
>> <!DOCTYPE html>
>> <html>
>> <body>
>> <script>
>> var listener = function(event) {
>>     console.log("undo event fired");
>> };
>> document.addEventListener("undo", listener, false);
>>
>> var transaction = {
>>     "execute": function() {},
>>     "undo": function() { console.log("undo"); },
>>     "redo": function() {}
>> };
>> var undoManager = document.undoManager;
>> undoManager.transact(transaction, false);
>> undoManager.transact(transaction, true);
>> undoManager.undo();
>> </script>
>> </body>
>> </html>
>>
>> What should be the output from the console in this example?
>>
>> 1.
>> undo
>> undo event fired
>> undo
>> undo event fired
>>
>> or
>>
>> 2.
>> undo
>> undo
>> undo event fired
>> undo event fired
>>
>
> Between these two options, the first option makes a lot more sense because
> the first event handler may have done some work and affected other undos or
> that the event handler for the first undo event may expect DOM to be at a
> certain state.
>
> 3.
>> undo
>> undo
>> undo event fired (Which transaction should event.transaction return?)
>>
>
> We can add "transactions" property instead. For merged transactions, we
> can either have an array with new transaction as its sole element or pass
> in the entire sequence of transactions where the last entry is the new one.
>
> - Ryosuke
>
>

Received on Friday, 24 August 2012 22:15:01 UTC