Hi Matthew,
> Hmmmm..
> The problem though is this Mixin is included in about half of our 
> classes. If I understand correctly to use the qx.Class.patch() method we 
> must do this outside of the class. Would it be possible to enhance 
> qx.Mixin slightly? I am thinking we could allow an extra root key for 
> mixins something like type that could be set to "patch". The only 
> difference in the way that mixins and patched get applied is via a 
> parameter so this change shouldn't be too hard.
>   
If I understand you correctly you want something like:

qx.Class.define("custom.Application",
{
    extend : qx.core.Object,
    patch : [custom.MMixin]
});


I think this could be an option but since it touches the core of qooxdoo 
it definitively needs some discussion. Could you open a bug for this 
issue so we can track the discussion there?

In the meantime you can use something like this:

qx.Class.define("custom.Application",
{
    extend : qx.core.Object,

    defer : function(statics) {
       qx.Class.patch(statics, custom.MMixin);
    }
});

The only problems with this approach is that the mixin methods don't 
show up in the API viewer.

Best Fabian





> Fabian Jakobs wrote:
>   
>> Moin,
>>     
>>> This is by design because functions of a Mixin might be used in 
>>> completely different classes. The base call implemention relies on a 
>>> property on the function which could not be applied for mixins as 
>>> these methods are shared between different classes and do not have a 
>>> super class. This applies to all reference type elements in a Mixin. 
>>> These are shared between all classes which includes that mixin.
>>>
>>> You can still call any other methods from anywhere manually, but I do 
>>> not think that there is any well working option or even idea how this 
>>> could be solved (while still making sense) ;)
>>>       
>> The option it to wrap the attached mixin methods so each class including 
>> the mixin points to a separate function. This is actually implemented in 
>> the framework since rev. 13972. Since it causes some overhead it is only 
>> applied if qx.Class.patch is used. See bug #323 
>> <http://bugzilla.qooxdoo.org/show_bug.cgi?id=323> for details.
>>
>> Calling "this.base(arguments)" from a mixin member will call the 
>> overridden/patched member in the class including the mixin.
>>
>> Best Fabian
>>
>>     
>
>
> ------------------------------------------------------------------------------
> The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
> production scanning environment may not be a perfect world - but thanks to
> Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
> Series Scanner you'll get full speed at 300 dpi even with all image 
> processing features enabled. http://p.sf.net/sfu/kodak-com
> _______________________________________________
> qooxdoo-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>
>
>   


-- 
Fabian Jakobs
JavaScript Framework Developer

1&1 Internet AG - Web Technologies
Ernst-Frey-Straße 9 · DE-76135 Karlsruhe
Telefon: +49 721 91374-6784
[email protected]

Amtsgericht Montabaur / HRB 6484
Vorstände: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Thomas 
Gottschlich, Robert Hoffmann, Markus Huhn, Hans-Henning Kettler, Dr. Oliver 
Mauss, Jan Oetjen
Aufsichtsratsvorsitzender: Michael Scheeren


------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to