[squeak-dev] The Trunk: Morphic-eem.1734.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Mar 4 18:26:10 UTC 2021
Eliot Miranda uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-eem.1734.mcz
==================== Summary ====================
Name: Morphic-eem.1734
Author: eem
Time: 4 March 2021, 10:26:06.868233 am
UUID: 065775fd-9942-4e59-99b9-0e9378c0590e
Ancestors: Morphic-mt.1733
DropEvent cleanup related to Files-eem.187.
=============== Diff against Morphic-mt.1733 ===============
Item was removed:
- ----- Method: HandMorph>>collectDropFilesAndDirectories: (in category 'private events') -----
- collectDropFilesAndDirectories: numFiles
-
- ^ (1 to: numFiles) collect: [:index |
- (FileDirectory requestDropDirectory: index)
- ifNil: [FileStream requestDropStream: index]]!
Item was changed:
----- Method: HandMorph>>generateDropFilesEvent: (in category 'private events') -----
generateDropFilesEvent: evtBuf
"Generate the appropriate mouse event for the given raw event buffer."
| position buttons modifiers stamp numFiles dragType |
stamp := evtBuf second.
stamp = 0 ifTrue: [stamp := Time eventMillisecondClock].
dragType := evtBuf third.
position := evtBuf fourth @ evtBuf fifth.
buttons := MouseEvent redButton. "hacked because necessary for correct mouseMoveDragging handling"
modifiers := evtBuf sixth.
buttons := buttons bitOr: (modifiers bitShift: 3).
numFiles := evtBuf seventh.
dragType caseOf: {
[1] -> [ "dragEnter"
externalDropMorph := TransferMorph new
dragTransferType: #filesAndDirectories;
source: self;
passenger: (numFiles = 0 "Usually, numFiles and drop paths are delivered on dragDrop only. Still reserving this possibility for able host implementations."
ifTrue: [self flag: #vmCapabilityMissing. 'Unknown host content' translated]
+ ifFalse: [FileDirectory dropFilesAndDirectories: numFiles]);
- ifFalse: [self collectDropFilesAndDirectories: numFiles]);
yourself.
"During the drag operation, the host system is responsible for displaying the cursor."
self grabMorph: externalDropMorph.
self showTemporaryCursor: Cursor blank.
externalDropMorph bottomRight: self topLeft. "Southeast area of the cursor is blocked by drawings from the source application. Display our drop morph at the opposite corner of the cursor." ].
[2] -> [ "dragMove"
^ MouseMoveEvent new
setType: #mouseMove
startPoint: self position
endPoint: position
trail: "{self position. position}"(self mouseDragTrailFrom: evtBuf)
buttons: buttons
hand: self
stamp: stamp ].
[3] -> [ "dragLeave"
externalDropMorph ifNotNil: #abandon.
externalDropMorph := nil.
self showTemporaryCursor: nil ].
[4] -> [ "dragDrop"
| oldButtons |
externalDropMorph ifNil: [
"dragDrop has been sent without prior dragging. This happens when the VM is configured as singleton application and has been called again (aka #launchDrop)."
^ self error: 'Launch drop for singleton Squeak not yet implemented.'].
self showTemporaryCursor: nil.
externalDropMorph passenger isString ifTrue: [
self flag: #vmCapabilityMissing. "See above."
+ externalDropMorph passenger: (FileDirectory dropFilesAndDirectories: numFiles)].
- externalDropMorph passenger: (self collectDropFilesAndDirectories: numFiles)].
externalDropMorph := nil.
(Smalltalk classNamed: #DropFilesEvent) ifNotNil: [:eventClass |
| classicEvent |
"Generate classic DropFilesEvent, providing backward compatibility."
classicEvent := eventClass new
setPosition: position
contents: numFiles
hand: self.
self processEvent: classicEvent.
classicEvent wasHandled ifTrue: [^ nil]].
oldButtons := lastEventBuffer fifth
bitOr: (lastEventBuffer sixth bitShift: 3).
^ MouseButtonEvent new
setType: #mouseUp
position: position
which: (oldButtons bitXor: buttons)
buttons: buttons
nClicks: 0
hand: self
stamp: stamp ].
[5] -> [ "drag request"
"For dnd out. Not properly implemented at the moment."
self shouldBeImplemented] }.
^ nil!
More information about the Squeak-dev
mailing list
|