This is the same issue. My checkin, revision 7680, should fix both. No 
performance problem. Internally this fancy stuff is all based around the 
native prototype chain :)

Sebastian


Christian Boulanger schrieb:
> Hello Sebastian,
> 
> great, thanks! If it was also possible to implement the inheritance of the
> mixin properties, this would be fabulous. Then I could get rid of all the
> manual mixins to all the classes where I need it. Or does this pose a
> performance problem?
> 
> Best,
> 
> Christian
> 
> 
>> Hi Christian,
>>
>> thank you for your feedback and your former work. Really appreciated.
>> This seems to be a bug inside our property system. Each class remembers
>> if the properties have been attached to a class. This way we reduce the
>> overhead at class instantiation. However this makes it currently
>> impossible to adding properties to classes which have at least one
>> instance. I will try to fix this ASAP.
>>
>> Cheers,
>>
>> Sebastian
>>
>>
>>
>> Christian Boulanger schrieb:
>>> OK - I found it out - maybe obvious, but wasn't for me:
>>>
>>> qx.Class.include() needs to be called BEFORE the class is instantiated
>>> for the first time. The problem in my code was that the classes had been
>>> used previously.
>>>
>>> So what I gathered is that the property system of qooxdoo is
>>> FUNDAMENTALLY different from the normal javascript prototype-based
>>> property inheritance, and that mixins at runtime are much more complex
>>> that simply attaching methods to the prototype.
>>>
>>> I hope I'll have the time to write a short notice on this in the wiki.
>>>
>>> Cheers,
>>>
>>> Christian
>>>
>>> Christian Boulanger schrieb:
>>>> Very very strange behaviour:
>>>>
>>>>         var log=     qx.log.Logger.ROOT_LOGGER;
>>>>         log.setMinLevel(qx.log.Logger.LEVEL_ALL);
>>>>
>>>>         qx.Class.include(qx.ui.basic.Atom,qx.io.databinding.MDataManager);
>>>>         qx.Class.include(qx.ui.basic.Label,qx.io.databinding.MDataManager);
>>>>         qx.Class.include(qx.ui.form.List,qx.io.databinding.MDataManager);
>>>>
>>>> qx.Class.include(qx.ui.form.TextField,qx.io.databinding.MDataManager);
>>>>
>>>>         var at = new qx.ui.basic.Atom;
>>>>         var la = new qx.ui.basic.Label;
>>>>         var li = new qx.ui.form.List;
>>>>         var tf = new qx.ui.form.TextField;
>>>>
>>>>         log.info ("qx.ui.basic.Atom.getDataBinding: " +
>>>> at.getDataBinding);
>>>>         log.info ("qx.ui.basic.Label.getDataBinding: " +
>>>> la.getDataBinding);
>>>>         log.info ("qx.ui.form.List.getDataBinding: " +
>>>> li.getDataBinding);
>>>>         log.info ("qx.ui.form.TextField.getDataBinding: " +
>>>> tf.getDataBinding);
>>>>
>>>>
>>>> INFO: root: qx.ui.basic.Atom.getDataBinding: undefined
>>>> INFO: root: qx.ui.basic.Label.getDataBinding: undefined
>>>> INFO: root: qx.ui.form.List.getDataBinding: function () { return
>>>>   qx.core.Property.executeOptimizedGetter(this, clazz, name, "get"); }
>>>> INFO: root: qx.ui.form.TextField.getDataBinding: undefined
>>>>
>>>> So the mixin seems to "stick" only to the qx.ui.form.List, but to none
>>>> of the other classes. Does anyone have an explanation?
>>>>
>>>> Christian
>>>>
>>>>
>>>>
>>>> Christian Boulanger schrieb:
>>>>
>>>>> Very interesting:
>>>>>
>>>>>         qx.Class.include(qx.ui.form.List,qx.io.databinding.MDataManager);
>>>>>         
>>>>> qx.Class.include(qx.ui.basic.Label,qx.io.databinding.MDataManager);
>>>>>
>>>>>         var li = new qx.ui.form.List;
>>>>>         var la = new qx.ui.basic.Label;
>>>>>
>>>>>         qx.core.Log.error ("qx.ui.form.List.getDataBinding: " +
>>>>> li.getDataBinding);
>>>>>         qx.core.Log.error ("qx.ui.basic.Label.getDataBinding: " +
>>>>> la.getDataBinding);
>>>>>
>>>>> results in:
>>>>>
>>>>> qx.ui.form.List.getDataBinding: function () { return
>>>>> qx.core.Property.executeOptimizedGetter(this, clazz, name, "get"); }
>>>>> qx.ui.basic.Label.getDataBinding: undefined
>>>>>
>>>>> this looks very sophisticated! However, why is
>>>>> qx.ui.basic.Label.getDataBinding undefined when
>>>>> qx.ui.form.List.getDataBinding has been correctly set?
>>>>>
>>>>> C.
>>>>>
>>>>>
>>>>> Christian Boulanger schrieb:
>>>>>
>>>>>
>>>>>> Here is something  I don't understand:
>>>>>>
>>>>>> qx.Class.include(qx.ui.form.List,qx.io.databinding.MDataManager);
>>>>>> for (var i in qx.ui.form.List)
>>>>>>             qx.core.Log.error(i + ": " + qx.ui.form.List[i]);
>>>>>>
>>>>>> I get the following list:
>>>>>>
>>>>>> $$original: function () { <snip/>}
>>>>>> classname: qx.ui.form.List
>>>>>> name: anonymous
>>>>>> basename: List
>>>>>> toString: function () { return "[Class " + this.classname + "]"; }
>>>>>> prototype: [object qx.ui.form.List]
>>>>>> superclass: [Class qx.ui.layout.VerticalBoxLayout]
>>>>>> constructor: [Class qx.ui.form.List]
>>>>>> $$destructor: function () { this._disposeObjects("_manager"); }
>>>>>> $$properties: [object Object]
>>>>>> $$includes: [Mixin qx.io.databinding.MDataManager]
>>>>>> $$flatIncludes: [Mixin qx.io.databinding.MDataManager]
>>>>>>
>>>>>> I am always amazed and surprised once I dive into the internals of
>>>>>> qooxdoo... where are all the getter and setter methods here? why
>>>>>> don't
>>>>>> they show up if I do a "for (.. in..)" loop?
>>>>>>
>>>>>> C.
>>>>>>
>>>>>>
>>>>>> Christian Boulanger schrieb:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Any ideas about this problem? At the moment I am not even getting
>>>>>>> the
>>>>>>> first option working, so everything might be a problem of my code.
>>>>>>> Has
>>>>>>> anyone else ever combined mixins and inheritance? Thanks, C.
>>>>>>>
>>>>>>> Christian Boulanger schrieb:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> if I am including the mixin like so:
>>>>>>>>
>>>>>>>>         
>>>>>>>> qx.Class.include(qx.ui.basic.Label,qx.io.databinding.MDataManager);
>>>>>>>>
>>>>>>>> everything works. However, trying to achieve the same with
>>>>>>>>
>>>>>>>>         
>>>>>>>> qx.Class.include(qx.core.Target,qx.io.databinding.MDataManager);
>>>>>>>>
>>>>>>>> fails. It seems I have to manually include the mixin into each
>>>>>>>> class I
>>>>>>>> want to use it with.
>>>>>>>>
>>>>>>>> No messages in the debug log.
>>>>>>>>
>>>>>>>> It would be great if this could be fixed.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> Christian
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>> -------------------------------------------------------------------------
>>>>> This SF.net email is sponsored by DB2 Express
>>>>> Download DB2 Express C - the FREE version of DB2 express and take
>>>>> control of your XML. No limits. Just data. Click to get it now.
>>>>> http://sourceforge.net/powerbar/db2/
>>>>> _______________________________________________
>>>>> qooxdoo-devel mailing list
>>>>> qooxdoo-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>>>
>>>>>
>>>> -------------------------------------------------------------------------
>>>> This SF.net email is sponsored by DB2 Express
>>>> Download DB2 Express C - the FREE version of DB2 express and take
>>>> control of your XML. No limits. Just data. Click to get it now.
>>>> http://sourceforge.net/powerbar/db2/
>>>> _______________________________________________
>>>> qooxdoo-devel mailing list
>>>> qooxdoo-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>>>
>>>
>>> -------------------------------------------------------------------------
>>> This SF.net email is sponsored by DB2 Express
>>> Download DB2 Express C - the FREE version of DB2 express and take
>>> control of your XML. No limits. Just data. Click to get it now.
>>> http://sourceforge.net/powerbar/db2/
>>> _______________________________________________
>>> qooxdoo-devel mailing list
>>> qooxdoo-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by DB2 Express
>> Download DB2 Express C - the FREE version of DB2 express and take
>> control of your XML. No limits. Just data. Click to get it now.
>> http://sourceforge.net/powerbar/db2/
>> _______________________________________________
>> qooxdoo-devel mailing list
>> qooxdoo-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
> 
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> qooxdoo-devel mailing list
> qooxdoo-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to