Hi there,

independent of any "rule of thumb" I think the proposed destructor should be
included (unless there is STRONG reasoning against it).

This is because:
- "who says 'new' should say 'delete'"[*]              and
- "who says 'addListener' should say 'removeListener'" and
- "who says 'bind' should say 'removeBinding'!


/Peter


[*] ...The new <-> delete rule is from C++, in qooxdoo it might be:
    "who says 'new' should say '_disposeObjects' or 'set it to null' depending
    on whether it's a descendant of qx.core.Object or a native JavaScript
    Object, or '_disposeArray' if it is an Array containing qx.core.Object
    object, or '_disposeMap' if it is a native JavaScript Object which values
    contain qx.core.Object objects".
    ...which I found a little to complicated ;)


On 11/28/2013 2:54 PM Marc Puts wrote:
> Hi Dietrich,
> 
> Have you tried   myWindowInstance.destroy()  ?
> 
> As a rule of thumb, when you want to dispose of a descendent of 
> qx.ui.core.Widget (which the Window is) you should use .destroy() 
> instead of .dispose().
> The difference is that destroy() will also remove the widget from its 
> parent and the layouting system.
> 
> Regards,
> Marc
> 
> On 28-11-13 12:54, Dietrich Streifert wrote:
>> as per a simple code review the destructur of qx.ui.window.Window should be:
>>
>>     /*
>> *****************************************************************************
>>        DESTRUCTOR
>> *****************************************************************************
>>     */
>>     destruct : function() {
>>       this.removeListener("mousedown", this._onWindowMouseDown);
>>       this.removeListener("focusout", this._onWindowFocusOut);
>>
>>       qx.core.Init.getApplication().getRoot().remove(this);
>>       qx.ui.core.FocusHandler.getInstance().removeRoot(this);
>>     }
>>
>>
>> Am 28.11.2013 12:09, schrieb Dietrich Streifert:
>>> Hi all,
>>>
>>> I'm currently struggling with manual disposal of qx.ui.window.Window
>>> instances.
>>>
>>> I'm calling
>>>
>>>      myWindowInstance.dispose();
>>>
>>> which seems to leave the instance attached to the application root,
>>> because in qx.ui.window.Window constructur the instance get
>>> automatically added (from source of qx.ui.window.Window constructor:)
>>>
>>>      // Automatically add to application root.
>>>      qx.core.Init.getApplication().getRoot().add(this);
>>>
>>> This connection is not removed in qx.ui.window.Window as there is no
>>> destruct method defined.
>>>
>>> So this sums up into two questions:
>>>
>>> 1. Shouldn't qx.ui.window.Window have a destruct method?
>>> 2. Should this destruct method contain
>>> qx.core.Init.getApplication().getRoot().remove(this);
>>>
>>> Thank you for your help.
>>>
>>> Regards
>>> Dietrich
>>>

-- 

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to