- From: Eric U <ericu@google.com>
- Date: Wed, 3 Aug 2011 13:26:08 -0700
On Tue, Aug 2, 2011 at 2:43 PM, Ryosuke Niwa <rniwa at webkit.org> wrote: > On Tue, Aug 2, 2011 at 2:32 PM, Eric U <ericu at google.com> wrote: >> >> Could you add an example of the user typing e.g. "h" >> ... "e" ... "l" ... "l" ... "o", via an app that's doing the DOM >> modifications, using managed transactions, such that a browser >> undo/redo will act on the whole word "hello"? ?It looks like you'd >> have an open transaction for a while, adding a letter at a time, and >> then you'd close it at some point? > > For example, > myEditor.undoManager.transact(insertChar('h'), removeChar, > reinsertChar('h')); > myEditor.undoManager.transact(insertChar('e'), removeChar, > reinsertChar('e'), true); > myEditor.undoManager.transact(insertChar('l'), removeChar, > reinsertChar('l'), true); > myEditor.undoManager.transact(insertChar('l'), removeChar, > reinsertChar('l'), true); > myEditor.undoManager.transact(insertChar('o'), removeChar, > reinsertChar('o'), true); > where insertChar, removeChar, and reinsertChar are sensible DOM mutation > functions will insert 5 manual transactions in one transaction group. ?The > idea is that you decide whether you want new transaction to be a part of the > last transaction or not. ?If you want it to be, then merge=true and > merge=false otherwise. > Another example: > myEditor.undoManager.transact(insertChar('o'), removeChar, > reinsertChar('o')); > myEditor.undoManager.transact(insertChar('k'), removeChar, > reinsertChar('k'), true); > myEditor.undoManager.transact(insertBR, removeBR, reinsertBR); > myEditor.undoManager.transact(insertChar('h'), removeChar, > reinsertChar('h'), true); > myEditor.undoManager.transact(insertChar('i'), removeChar, > reinsertChar('i'), true); > will insert two transactions that insert "o" and "k" as one transaction > group, and then three transactions that insert br, "h", and "i" as another > transaction group. ?So when the first undo is executed, br and "hi" will be > removed (i.e. the last three transactions are unapplied), and the second > undo will remove "ok" (the first two transactions are unapplied). > - Ryosuke > These both look like manual transactions again, given that you're supplying unapply and reapply functions. Is that just a typo in the email, or am I misunderstanding? The transaction group parameter is clear now, though.
Received on Wednesday, 3 August 2011 13:26:08 UTC