--- a/DragAndDropManager.st Thu Jan 16 11:44:40 2003 +0100
+++ b/DragAndDropManager.st Sat Jan 18 15:28:36 2003 +0100
@@ -1247,6 +1247,28 @@
^false
!
+escapePressed
+ "handle key escape
+ "
+ |dropTarget|
+
+ escapePressed ~~ true ifTrue:[
+ escapePressed := true.
+
+ handler notNil ifTrue:[
+ "/ restore handler
+ dropTarget := dropContext dropTarget.
+ handler postDragging.
+
+ dropTarget notNil ifTrue:[
+ "/ invoke leave operation
+ dropTarget leave:dropContext.
+ dropContext dropTarget:nil.
+ ].
+ ].
+ ].
+!
+
handlesButtonMotion:button inView:aView
"query from event processor: am I interested in button-events ?
yes I am (to activate the clicked-on field)."
@@ -1286,26 +1308,10 @@
"any key is pressed:
#Escape cancel drag & drop operation
"
- |dropTarget|
-
escapePressed == true ifTrue:[^ self ]. "/ already canceled
aKey == #Escape ifTrue:[
- "/ cancel drag & drop operation
- escapePressed := true.
-
- handler ifNotNil:[
- "/ restore handler
- dropTarget := dropContext dropTarget.
- handler postDragging.
-
- dropTarget ifNotNil:[
- "/ invoke leave operation
- dropTarget leave:dropContext.
- dropContext dropTarget:nil.
- ].
- ].
- ^ self
+ self escapePressed.
].
! !
@@ -1393,11 +1399,16 @@
doStart:aHandler for:aView atEnd:aFourArgEndBlock
"setup a handler and a restore block
"
- |device savedCursor savedDelegate prevGrab prevKeyb sensor p|
+ |device savedCursor savedDelegate prevGrab prevKeyb sensor p lastActive|
device := aView device.
- (ActiveDragAndDropManagers at:device ifAbsent:nil) notNil ifTrue:[
- self error:'oops - two dnd managers active' mayProceed:true.
+ lastActive := ActiveDragAndDropManagers at:device ifAbsent:nil.
+
+ lastActive notNil ifTrue:[
+ "/ self error:'oops - two dnd managers active' mayProceed:true.
+
+ lastActive forceGiveUp.
+ 'oops - two dnd managers active' printCR.
].
ActiveDragAndDropManagers at:device put:self.
@@ -1458,6 +1469,15 @@
"Modified: / 10.10.2001 / 14:45:22 / cg"
!
+forceGiveUp
+ "called if the DragAndDropManager no longer should be
+ active; a second one is started
+ "
+ self escapePressed.
+ self removePassiveAction.
+ restoreBlock value.
+!
+
saveDraw:aBlock
handler postDragging.
aBlock value.
@@ -1482,7 +1502,7 @@
!DragAndDropManager class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview2/DragAndDropManager.st,v 1.45 2002-12-10 11:01:29 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview2/DragAndDropManager.st,v 1.46 2003-01-18 14:28:36 ca Exp $'
! !
DragAndDropManager initialize!