W3C home > Mailing lists > Public > public-webapps@w3.org > July to September 2012

[UndoManager] Disallowing live UndoManager on detached nodes

From: Ryosuke Niwa <rniwa@webkit.org>
Date: Mon, 20 Aug 2012 21:52:41 -0700
Message-ID: <CABNRm62ksd9rFgX-vCr0dz7XFV0iOWsHuK7c_AX09PxpfSnHqQ@mail.gmail.com>
To: public-webapps <public-webapps@w3.org>
Cc: Kentaro Hara <haraken@chromium.org>, Sukolsak Sakshuwong <sukolsak@google.com>, Adam Barth <abarth@webkit.org>, Maciej Stachowiak <mjs@apple.com>, Ehsan Akhgari <ehsan@mozilla.com>, Jonas Sicking <jonas@sicking.cc>, Olli Pettay <Olli.Pettay@helsinki.fi>, Ojan Vafai <ojan@chromium.org>
Greetings all,

We've been implementing undo manager in WebKit, and we've found out that
allowing live undo manager on a detached undo scope host is a terrible idea.

e.g. say you have a subtree like follows:

   - A
      - B
         - D
      - C

where A is the undo scope host. If we then detach B from A, and then insert
A under D, all automatic transactions in A's undo manager are broken and
may create a cyclic reference graph because nodes touched in automatic
transactions need to be kept alive for undo/redo.

If there is no objection, I'm changing the spec to disallow live undo
manager on detached nodes so that scripts can't move the host around inside
a document or between documents; i.e. when a undo scope host is removed
from its parent, its undo manager must be *disconnected* and a new undo
manager be created for the node.

Alternatively, we can turn all automatic transactions in the undo manager
into no-ops but I'd prefer disconnecting the undo manager altogether to
make the behavior simple.

Ryosuke Niwa
Software Engineer
Google Inc.
Received on Tuesday, 21 August 2012 04:53:28 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 18:13:38 UTC