From 296686f81ee1d285d2d8ba2429b1bc77ca6c8703 Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Mon, 9 Sep 2013 10:45:34 -0700 Subject: [PATCH] add docs, XXX and TODOs --- packages/ui/domrange.js | 19 ++++++++++++++++++- packages/ui/domrange_tests.js | 3 ++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/ui/domrange.js b/packages/ui/domrange.js index b66837c5b8..e01c0bb5af 100644 --- a/packages/ui/domrange.js +++ b/packages/ui/domrange.js @@ -1,3 +1,10 @@ +// TODO +// - Lazy removal detection +// - UI hooks (expose, test) +// - Quick remove/add (mark "leaving" members; needs UI hooks) +// - Event removal on removal +// - Event moving on TBODY move + var DomBackend = UI.DomBackend; var removeNode = function (n) { @@ -94,7 +101,10 @@ var rangeParented = function (range) { // keep a pointer to the range on the parent // element. This is really just for IE 9+ // TextNode GC issues, but we can't do reliable - // bug detection. + // feature detection (i.e. bug detection). + // Note that because we keep a direct pointer to + // `parentNode.$_uiranges`, it doesn't matter + // if we are reparented (e.g. wrapped in a TBODY). var parentNode = range.parentNode(); var rangeDict = ( parentNode.$_uiranges || @@ -123,6 +133,10 @@ var rangeRemoved = function (range) { if (range._rangeDict) delete range._rangeDict[range._rangeId]; + // XXX clean up events in $_uievents + + // XXX notify component of removal + membersRemoved(range); } }; @@ -785,6 +799,9 @@ var moveWithOwnersIntoTbody = function (range) { for (var i = 0; i < nodes.length; i++) tbody.appendChild(nodes[i]); + // XXX complete the reparenting by moving event + // HandlerRecs of `range`. + return tbody; }; diff --git a/packages/ui/domrange_tests.js b/packages/ui/domrange_tests.js index c3aba4973d..f5477ac32f 100644 --- a/packages/ui/domrange_tests.js +++ b/packages/ui/domrange_tests.js @@ -1096,4 +1096,5 @@ Tinytest.add("ui - DomRange - jQuery removal", function (test) { // - add a node or range with the same id as an old member // works if that member is gone. // - events (and other stuff) get moved when wrapping in TBODY -// - event unbinding \ No newline at end of file +// - event unbinding +// - "noticed" removal due to `eachMembers`, `add`, etc.