Hi Alexey,

you should try to dispose the menu buttons before. There are still references 
to the command instance.

Gruß
Mustafa Sak

Applications & Integration

1&1 Internet AG
Ernst-Frey-Straße 10
DE-76135 Karlsruhe

-----Ursprüngliche Nachricht-----
Von: alexey_zakh [mailto:[email protected]] 
Gesendet: Mittwoch, 15. Januar 2014 14:56
An: [email protected]
Betreff: [qooxdoo-devel] Disposing Commands in menu destructor

My question is: is the application corrent:
http://tinyurl.com/oju4mtc <http://tinyurl.com/oju4mtc>  (full code below)
 
Specifically, is the construction and disposal of the _actions array correct? I 
suppose it is reasonable to destruct Commands in the menu destructor if i'm 
sure that they are referenced only from the menu. Are there errors in my 
reasoning? 

This code gives an error when built with qx.debug.dispose.level = 2 (Qooxdoo 
version 3.0.1), and if it's conceptually correct, it seems there exists a
bug(s) in Qooxdoo that prevents the desposer-debug tool to do its work 
properly. I'll provide other necessary information on the problem if needed.

==================
// Full code:

qx.Class.define("app.Menu", {
        extend: qx.ui.menu.Menu,
  
        construct: function() {
                this.base(arguments);
                
                this._actions = [];
        },
        
        destruct: function() {
                qx.log.Logger.debug("~Menu()");
                this._disposeArray("_actions");
        },

        members: {              
                _actions: null,
                
                createAction: function(label) {
                        var action = new qx.ui.core.Command();
                        this._actions.push(action);
                        var menuButton = new qx.ui.menu.Button(label, null, 
action);
                        this.add(menuButton);
                        return action;
                }
        }

});

qx.Class.define("app.Application", {
        extend : qx.application.Standalone,

        members : {

                main : function() {
                        this.base(arguments);
                        
                        var menu = new app.Menu();
                        menu.createAction('action-1');
                        menu.createAction('action-2');
      
                        var root = this.getRoot();
                        var button = new qx.ui.form.Button("Dispose menu");
                        root.setContextMenu(menu);
                        button.addListener("execute", function() {
                                root.setContextMenu(null);
                                menu.dispose();
                        });
                        
                        this.getRoot().add(button);      
                }
        }
});




--
View this message in context: 
http://qooxdoo.678.n2.nabble.com/Disposing-Commands-in-menu-destructor-tp7585184.html
Sent from the qooxdoo mailing list archive at Nabble.com.

------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical 
Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to