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.
>