Yes this is the correct solution, I noticed this a little while ago and had no 
problems since.

There is also another major bug that should be fixed up in 2.5x.  The precreate event 
gets called multiple time (an extra time for each time it's nested).  The 
DynObject.flagPrecreate() method is set up incorrectly.  The fix I did in my working 
copy isn't compatable with v2.5, so someone else will have to do a quick fix.

Regards,
Dan Steinman


On Mon, Nov 05, 2001 at 01:20:18AM +0100, Richard Bennett wrote:
> 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/

_______________________________________________
Dynapi-Dev mailing list
[EMAIL PROTECTED]
http://www.mail-archive.com/dynapi-dev@lists.sourceforge.net/

Reply via email to