Hi, This seems to me to be a good solution. I applied the changes, and updated the test-file to reflect this. I did comment the changes, so they can easily be reversed if shown they have any negative effects, or a better solution is suggested. At least now we can start using complex widgets again. Great !
----- Original Message ----- From: "Joachim Lundgren" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Saturday, November 03, 2001 4:28 PM Subject: Re: [Dynapi-Dev] Re: [Dynapi-Chat] Serious Event model bug > I sent a fix for this ages ago (August, that is) to this list. That was the mistake I did, it should have been to the bug/patches area. I simply forgot it afterwards. And now I'm doing it again... > (The kludge outlined below is NOT the same as the August kludge.) > > The problem is the objects share the same eventListener array [in the example it can be verified with an alert(scrollpane1.eventListeners===scrollpane2.eventListeners); line]. > > (Because EventListeners are a rather fundamental aspect of the code it is less of a kludge than it really is :-) > > In dynapi.js, make the DynObject function end with: > > // These aren't used unless listeners.js is included > this.eventListeners = []; > this.hasEventListeners = false; > }; > > and comment out or remove the first line in listeners.js: > DynObject.prototype.addEventListener=function(listener) { > // if(!this.eventListeners) { this.eventListeners = []; } // <- remove this line (commented here) > this.hasEventListeners = true; > for (var i=0;i<this.eventListeners.length;i++) if (this.eventListeners[i]==listener) return; > this.eventListeners[this.eventListeners.length]=listener; > } > > NB: This fixes the example and my own quick-and-dirty test-case, and I got the desired results with these changes. Please check so it doesn't break anything else! The August fix worked for the original bug submitter, and I don't think the difference between my original fix and this version breaks anything. > > /Lunna > > > At 2001-11-02 03:01, you wrote: > >Hi, > >I added a testfile to the /tests directory in CVS or latest snapshot. > >See: > ><wrap> > >http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/~checkout~/dynapi/dynapi/tes t > >s/secondary_inheritance.html?rev=1.1&content-type=text/html > > > ></wrap> > >Should make debugging this problem easier. > >I would hope it is possible to debug this issue at it's core, instead of > >changing the architecture of all the widgets. > > > >Cheers, > >Richard. > > > > > >----- Original Message ----- > >From: "Laszlo Teglas" <[EMAIL PROTECTED]> > >To: <[EMAIL PROTECTED]> > >Sent: Wednesday, October 31, 2001 4:42 PM > >Subject: [Dynapi-Chat] Serious Event model bug > > > > > >> After spending the better part of a day trying to track down a bug I > >though > >> I introduced into my code, when migrating from a November 2000 version > >> DynAPI script to the current 2.55a version, I realized that something more > >> serious was causing my agony. > >> > >> After searching through the lists and bug reports, I came across what I > >> think is the earliest mention of this problem. Bug number 425789 reported > >on > >> May 20, 2001. > >> > >> Basically any widget that does not inherit directly from DynLayer can not > >be > >> used more than once on a single page, unless you only want one > >EventListener > >> for the whole lot (very unlikely). > >> > >> If you try to create multiple EventListeners (i.e. one for each widget of > >a > >> class not derived directly from DynLayers), only the last EventListener > >> assigned to one of this second generation widgets will fire. And it will > >> fire on all widgets that are instances of the same class. > >> > >> I have been mainly working with the ButtonImage class derived from > >DynImage, > >> but I believe this will affect List, PushPanel and any other second > >> generation widget. > >> > >> Seeing that this problem has been around for some time, I imagine the > >> solution will require a lot of work. A temporary solution would be to > >> rewrite any second generation widget to inherit directly from DynLayer and > >> including any other inherited functions from it's former parent. I realize > >> this is redundant and counter to OOP, but at least we would have complex > >> widgets that work. There is no point in streamlining the core for > >> performance if the core is broken. This would be a relatively simple fix. > >> And could be reversed easily once the event model is fixed. This would > >also > >> not require changes in code implementing these widgets, thus have little > >> effect on users other than performance due to redundancy. > >> > >> The other solution is to fix the problem in the event model. This will > >take > >> longer, but should be top priority. The whole purpose of DynAPI is to have > >> complex widgets, and a common API. For simple widgets anyone can create > >> simple JavaScript that has less overhead than DynAPI. Therefore this bug > >> undermines the purpose of DynAPI. > >> > >> We did not have this bug in 2.0. What has changed so drastically since 2.0 > >> in the event model or in other parts of the core that introduced this bug. > >> Any idea? > >> > >> > >> Laszlo > >> > >> > >> _______________________________________________ > >> Dynapi-Chat mailing list > >> [EMAIL PROTECTED] > >> https://lists.sourceforge.net/lists/listinfo/dynapi-chat > >> > > > > > >_______________________________________________ > >Dynapi-Dev mailing list > >[EMAIL PROTECTED] > >http://www.mail-archive.com/dynapi-dev@lists.sourceforge.net/ > > > > _______________________________________________ > Dynapi-Dev mailing list > [EMAIL PROTECTED] > http://www.mail-archive.com/dynapi-dev@lists.sourceforge.net/ > _______________________________________________ Dynapi-Dev mailing list [EMAIL PROTECTED] http://www.mail-archive.com/dynapi-dev@lists.sourceforge.net/