Tools_OrganizerCanvas.st
changeset 8736 24b4731900f9
parent 8691 bcf83b7543d3
child 8743 49ab1a31fb79
--- a/Tools_OrganizerCanvas.st	Mon Sep 21 15:56:30 2009 +0200
+++ b/Tools_OrganizerCanvas.st	Mon Sep 21 15:56:48 2009 +0200
@@ -4614,32 +4614,42 @@
 !
 
 updateCategorySelectionFromClasses
-    |allEntry oldSelectedCategories categories|
+    |allEntry changedEntry oldSelectedCategories categories|
 
     allEntry := self class nameListEntryForALL.
+    changedEntry := self class nameListEntryForChanged.
 
     categories := Set new.
     oldSelectedCategories := self selectedCategories value.
 
     "/ category-selection feedBack;
     "/ if '* all *' was in its selection, keep it (to avoid updating the classList)
-    (oldSelectedCategories size > 0 
-    and:[oldSelectedCategories includes:allEntry]) ifTrue:[
-	categories add:allEntry
+    oldSelectedCategories size > 0 ifTrue:[
+        (oldSelectedCategories includes:allEntry) ifTrue:[
+            categories add:allEntry
+        ].
+        (oldSelectedCategories includes:changedEntry) ifTrue:[
+            (oldSelectedCategories size == 1) ifTrue:[
+                "/ don't switch to category
+                ^ self
+            ].
+            categories add:changedEntry
+        ].
     ].
 
     (self selectedClasses value ? #()) do:[:eachSelectedClass |
-	|cat cls|
-
-	cls := eachSelectedClass theNonMetaclass.
-	cls isPrivate ifTrue:[
-	    cls := cls topOwningClass.
-	].
-	cat := cls category.   
-	categories add:cat.
+        |cat cls|
+
+        cls := eachSelectedClass theNonMetaclass.
+        cls isPrivate ifTrue:[
+            cls := cls topOwningClass.
+        ].
+        cat := cls category.   
+        categories add:cat.
     ].
+
     (categories conform:[:each | (self selectedCategories value ? #()) includes:each]) ifFalse:[
-	self selectedCategories value:categories.
+        self selectedCategories value:categories.
     ].
 
     "Modified: / 18.2.2000 / 13:17:36 / cg"
@@ -4891,5 +4901,5 @@
 !OrganizerCanvas class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_OrganizerCanvas.st,v 1.35 2009-09-14 17:49:22 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_OrganizerCanvas.st,v 1.36 2009-09-21 13:56:48 cg Exp $'
 ! !