On Sep 23, 2012, at 4:35 PM, Helene Bilbo wrote:

> Stéphane Ducasse wrote
>> I tried the same on 2.0 and this is in both cases the PasteUpMorph that
>> get it. So. 
>> 
>> ok in 1.1-11411
>> I got your halt. :)
> 
> So, you found my problem :)

not really
so far the code is the same.
        dispatchDefault: anEvent with: aMorph


Now this method is used continuously. I put an halt inside to get a debugger 
when the drop event is managed

dispatchDefault: anEvent with: aMorph
        "Dispatch the given event. The event will be passed to the front-most 
visible submorph that contains the position wrt. to the event."
        | localEvt index child morphs inside |
        
        
        "See if we're fully outside aMorphs bounds"
        (aMorph fullBounds containsPoint: anEvent position) 
ifFalse:[^#rejected]. "outside"
        "Traverse children"
        index := 1.
        morphs := aMorph submorphs.
        inside := false.
        [index <= morphs size] whileTrue:[
                child := morphs at: index.
                localEvt := anEvent transformedBy: (child transformedFrom: 
aMorph).
                (child processEvent: localEvt using: self) == #rejected 
ifFalse:[
                        "Not rejected. The event was in some submorph of the 
receiver"
                        inside := true.
                        localEvt wasHandled ifTrue:[anEvent copyHandlerState: 
localEvt].
                        index := morphs size. "break"
                ].
                index := index + 1.
        ].

        "Check for being inside the receiver"
        anEvent class = DropFilesEvent ifTrue: [self halt.].
        inside ifFalse:[inside := aMorph containsPoint: anEvent position event: 
anEvent].
        inside ifTrue:[^aMorph handleEvent: anEvent].
        ^#rejected






Now in Pharo 2.0 

dispatchEvent: anEvent with: aMorph
        "Dispatch the given event for a morph that has chosen the receiver to 
dispatch its events. The method implements a shortcut for repeated dispatches 
of events using the same dispatcher."
        anEvent type == lastType ifTrue:[^self perform: lastDispatch with: 
anEvent with: aMorph].
        "Otherwise classify"
        lastType := anEvent type.
        anEvent isMouse ifTrue:[
                anEvent isMouseDown ifTrue:[
                        lastDispatch := #dispatchMouseDown:with:.
                        ^self dispatchMouseDown: anEvent with: aMorph]].
        anEvent type == #dropEvent ifTrue:[
                lastDispatch := #dispatchDropEvent:with:.
                ^self dispatchDropEvent: anEvent with: aMorph].
        anEvent isWindowEvent ifTrue:[
                lastDispatch := #dispatchWindowEvent:with:.
                ^self dispatchWindowEvent: anEvent with: aMorph].       
        lastDispatch := #dispatchDefault:with:.
        ^self dispatchDefault: anEvent with: aMorph

the last line is executed 
while in 1.1

dispatchEvent: anEvent with: aMorph
        "Dispatch the given event for a morph that has chosen the receiver to 
dispatch its events. The method implements a shortcut for repeated dispatches 
of events using the same dispatcher."
        anEvent type == lastType ifTrue:[^self perform: lastDispatch with: 
anEvent with: aMorph].
                                                                it stopped in 
this branch.
        "Otherwise classify"
        lastType := anEvent type.
        anEvent isMouse ifTrue:[
                anEvent isMouseDown ifTrue:[
                        lastDispatch := #dispatchMouseDown:with:.
                        ^self dispatchMouseDown: anEvent with: aMorph]].
        anEvent type == #dropEvent ifTrue:[
                lastDispatch := #dispatchDropEvent:with:.
                ^self dispatchDropEvent: anEvent with: aMorph].
        anEvent isWindowEvent ifTrue:[
                lastDispatch := #dispatchWindowEvent:with:.
                ^self dispatchWindowEvent: anEvent with: aMorph].       
        lastDispatch := #dispatchDefault:with:.
        ^self dispatchDefault: anEvent with: aMorph







> 
> Any idea, what i can do about it?
> 
> It is a pity (and a bug - as when you make the custom DropZone morph bigger,
> some parts of it handle the dropped file, while some other parts of it, pass
> it on to the PasteUpMorph) that it does no longer work this way, and i could
> not find any reason for it..
> 
> 
> 
> --
> View this message in context: 
> http://forum.world.st/Problems-with-a-Morph-that-accepts-File-Dropping-in-Pharo-1-3-tp4648385p4648551.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
> 


Reply via email to