Le 30 juil. 07 à 13:22, David Chisnall a écrit : > Whenever I encounter a bug in GNUstep that I know how to fix, I fix > it in a category and send it to someone to push upstream. Since > GNUstep releases only happen every six months, would it be worth > maintaining a library of categories that patch the current GNUstep > release that all Étoilé components can link to? StepChat, for > example, fixes a bug in NSOutlineView that can cause application > crashes, which could be useful in anything else which modifies the > contents of an outline view.
We could have a bundle that keeps together all bug fixes and gets automatically injected in all AppKit-based applications with AppKit user bundle mechanism. However we need to be very careful and very clear about what is put in this bundle, because it could result in very weird bugs when other categories already patch the same methods. This is specially important with Camaelon and EtoileWildMenus which patch many methods. I already had category method conflict to solve between Camaelon and EtoileWildMenus. They can be very tricky because the category loading order seems to vary with each application, therefore you cannot predict the behavior of any applications which call a method patched by two categories or more. A more solid solution could be to implement a method holder class mechanism. This would be a simple class whose instances hold various methods and which can be asked to replace methods in some precise class when everything is loaded. Replacing method would be done by method swizzlling and we could record each method replacement thereby also log a warning when a method is replaced two times. GNUstep behavior concept may be helpful to implement this if they still work. GNUstep behavior is a GNUstep addition which allows to define a set of method you can share between several classes (like concrete protocol or a category which can be shared). Cheers, Quentin. -- Quentin Mathé [EMAIL PROTECTED] _______________________________________________ Etoile-dev mailing list Etoile-dev@gna.org https://mail.gna.org/listinfo/etoile-dev