take care for those who do close very quickly
authortz
Fri, 13 Mar 1998 23:48:08 +0100
changeset 733 6454aaabda51
parent 732 9320f2f0ae6e
child 734 9fdcc26c458f
take care for those who do close very quickly
ResourceSelectionBrowser.st
--- a/ResourceSelectionBrowser.st	Fri Mar 13 23:33:15 1998 +0100
+++ b/ResourceSelectionBrowser.st	Fri Mar 13 23:48:08 1998 +0100
@@ -13,7 +13,7 @@
 
 SelectionBrowser subclass:#ResourceSelectionBrowser
 	instanceVariableNames:'resourceMethod resourceClass resourceSuperclass resourceTypes
-		allClasses classSelectionBlock'
+		allClasses classSelectionBlock classAndResourceSelectionProcess'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Dialogs'
@@ -516,7 +516,7 @@
 
 openOnSuperclass: aSuperclassOrSymbol andClass: aClassOrSymbol andSelector: aSelector withResourceTypes: aResourceTypes
 
-    |cls clsName|
+    |clsName|
     resourceMethod := aSelector.
     resourceTypes := aResourceTypes.
     resourceSuperclass := aSuperclassOrSymbol isClass ifTrue: [aSuperclassOrSymbol name] ifFalse: [aSuperclassOrSymbol].
@@ -529,11 +529,10 @@
 
     self open.
 
-    clsName := (self selectionOfClass value name upTo: $ ) asSymbol.
+    (clsName := self selectionOfClass value) isNil ifTrue: [^nil].
+    clsName := (clsName name upTo: $ ) asSymbol.
 
-    (self selectionOfClass value notNil and:
-    [(cls := Smalltalk at: clsName) isClass and:
-    [accept value]]) 
+    ((Smalltalk at: clsName) isClass and: [accept value]) 
     ifTrue:
     [            
         ^clsName, ' ', self valueOfSelector value
@@ -546,6 +545,7 @@
 closeCancel
 
     resourceMethod := nil.
+    classAndResourceSelectionProcess notNil ifTrue: [classAndResourceSelectionProcess terminate].
     super closeCancel
 
 
@@ -597,9 +597,11 @@
     self listOfClassesView validateDoubleClickBlock: [:aTreeItem | aTreeItem contents ~~ self treeViewContents].
     self listOfClassesView selectedNodeExpand: true.
 
+    classAndResourceSelectionProcess := 
     [
         [classSelectionBlock value: classSelection] value.
-        self selectionOfResource value: (self listOfResources detect: [:m| m selector == resourceMethod] ifNone: nil)
+        self selectionOfResource value: (self listOfResources detect: [:m| m selector == resourceMethod] ifNone: nil).
+        classAndResourceSelectionProcess := nil
     ]
     forkAt: 4.