Hi, Thanks, Igor. Indeed, something is strange. And indeed, you were obviously right about not building the morph inside the addDeferredUIMessage block. It's published now.
I built a test to show the behavior. It does not rely on a Glamour mechanism, but it does use the GLMWatcherWindow. Perhaps it is useful for other people: ----- GLMWatcherWindow uniqueInstance toggleOpen. GLMWatcherWindow uniqueInstance addContent: [ RectangleMorph new color: Color transparent ]. "just to make sure it's gray" (Delay forMilliseconds: 500) wait. "this is just to simulate an initial request for a blue rectangle. it has a slight delay." GLMWatcherWindow uniqueInstance addContent: [ (Delay forMilliseconds: 1000) wait. RectangleMorph new color: Color blue ]. "this is for simulating an override of the previous request. the delay is longer to ensure that blue can appear in case the process is not terminated properly" GLMWatcherWindow uniqueInstance addContent: [ (Delay forMilliseconds: 5000) wait. RectangleMorph new color: Color red ] ----- So, the basic question is now solved. Thanks. I will look into the Glamour-related problem. I might need some more help there :) Cheers, Doru p.s. I know you do not like suspendAllWhile:, but I think there are scenarios in which it is useful. I will get back to this in a separate thread a bit later On 27 May 2012, at 18:30, Igor Stasenko wrote: > i think there is some mistake in event wiring.. > i cannot tell much, because i don't understand the glamour models.. > > but what i found strange is that i get large pause before i got halt in > actOnMatchingPresentationsChanged: > > it looks like the same event goes twice (or there two kinds of events) > and you model tries to update the detal list bypassing (or in addition) to the > #actOnMatchingPresentationsChanged: > > To reproduce my observations try do following: > - evaluate the doit which you gave above , so you have two windows open. > Now click in a browser list, to set the initial selection. > > Now go to #actOnMatchingPresentationsChanged > and put halt there > > actOnMatchingPresentationsChanged: anAnnouncement > > +++ self halt. > GLMWatcherWindow uniqueInstance > addContent: [ self renderObject: anAnnouncement pane ] > > Now click on list again to change the selection. > You can observe a huge pause before you got halt. > So, apparently the logic in #addContent: has nothing to do with the > blocking you still observe. > (btw in image which you give in link the > morph generation is still inside of #addDeferredUIMessage, > i , of course moved it outside before trying things). > > > P.S. btw, did i told you that i don't like #suspendAllWhile: in announcer? :) > The point is: if you need things like that, then you doing something wrong. > > > > -- > Best regards, > Igor Stasenko. > -- www.tudorgirba.com "To utilize feedback, you first have to acquire it."
