From: "SourceForge.net" <[EMAIL PROTECTED]>
Sent: 2005 September 01 Thursday 10:14
----------------------------------------------------------------------
Comment By: Andrew Gillett (agillett)
Date: 2005-09-01 08:04
Message:
Logged In: YES
user_id=134108
The removeFromParent() function deletes the DIV element
associated with the DynLayer from the DOM. The addChild()
function creates a new element and inserts it into the
parents (layer1) DOM.
I didn't see the "delete" (builtin?) function called, but did see false
and null assignments.
removeFromParent in event.js line 196 calls removeChild
removeChild in event.js line185 calls _remove, sets dyndoc, elm, css,
and doc to null, and calls dropChildIndex
_remove in dynlayer_base.js line 107 calls removeChild (recursive), else
sets outerHTML to empty string, elm to null, and releases key and mouse
events
deleteFromParent in event.js line 172 calls deleteChild
deleteChild in event.js line 164 calls _destroy and dropChildIndex
_destroy is defined differently in dyndocument and dynlayer objects as
they do different things
we want the _destroy for dynlayer objects
_destroy in dynlayer_base.js line 76 calls _destroyAllChildren,
removeAllEventListeners, _remove, and sets a bunch of values to null.
To me, they seem to be doing nearly the same thing. They both call
_remove. I don't understand why there's functions with remove, delete,
and destroy which all do similar things, namely render an object's
contents or the object itself unusable. Why do we need three functions
to do nearly the same thing? If we do need three, then we can pick more
suitable names for them. The following ideas would break compatibility
but with the benefit of greatly simplifying things.
For me, removeFromParent should remove the parent/child relationship in
DynAPI, leave the object intact, and hide it. deleteFromParent should
destroy the object. Then destroy is superfluous. But that is still
confusing because DOS and U*IX file system commands rm and del tend to
be thought of as the same thing. Since it's parent/child relationship,
maybe call the function removeFromParent orphan and call removeChild
disown or abandon. ;-) Then we can use destroy, delete or remove (pick
one, I like delete) for the function names which obliterate objects and
free memory back to the browser. Disown and abandon however may or may
not describe it well, it's more like unlink, but that is a Perl/UN*X
synonym for file deletion or removal. detachFromParent, detachChild
might be a better choice.
The problem is that the _create() function in dynlayer_ie.js
uses "document.createElement()" to create the new DIV
element. Because this action is initiated from your "Set
Desktop" button, the "document" variable refers to the menu
document, not the content document. You cannot add an
element created in one frame to the DOM of another frame.
Oh yeah, you can't just take a DOM element and unhook it, can you? If
it's created using DOM, it's got to be tucked away in a hidden part of
the DOM. We could make a hidden orphanage, and just put all the orphans
there. :-) Or if using detach names simply called it detached. Is
that a feasible idea?
Leif
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Dynapi-Dev mailing list
Dynapi-Dev@lists.sourceforge.net
http://www.mail-archive.com/dynapi-dev@lists.sourceforge.net/