Tools_MethodCategoryList.st
changeset 13524 9783ab7e24d6
parent 13498 b8d845e42988
child 13874 5a3848faf8a2
--- a/Tools_MethodCategoryList.st	Fri Sep 06 20:39:07 2013 +0200
+++ b/Tools_MethodCategoryList.st	Fri Sep 06 20:39:19 2013 +0200
@@ -417,31 +417,43 @@
     refetch := [:oldClass | 
                     |nm cls newClass|
 
+                    "/ Sigh, special care has to be taken for Java classes as
+                    "/ for them, !!!!!! (Smalltalk at: javaClass name) ~~ javaClass !!!!!!
                     nm := oldClass theNonMetaclass name.
+                    oldClass theNonMetaclass isJavaClass ifTrue:[
+                        "/ Can't use JavaVM>>classNamed:definedBy: for Java classes because environment
+                        "/ could not be Java class. Do a full search instead, sigh...
+                        newClass := environment allClasses 
+                                    detect:[:each|each isJavaClass and:[each name == oldClass theNonMetaclass name and:[each classLoader == oldClass theNonMetaclass classLoader]]]
+                                    ifNone:[nil].                        
+                    ] ifFalse:[
+                        newClass := Smalltalk at:nm
+                    ].
+
                     oldClass isMeta ifTrue:[
-                        newClass := environment at:nm.
                         newClass isNil ifTrue:[
                             "/ Transcript showCR:'oops - browser lost class ' , nm.
                             newClass := oldClass
                         ] ifFalse:[
                             newClass := newClass theMetaclass
                         ]
-                    ] ifFalse:[
-                        newClass := environment at:nm
                     ].
+
+
                     newClass ~~ oldClass ifTrue:[
                         anyChange := true.
                     ].
                     newClass
             ].
 
-    classes := classes collect:refetch.
-    leafClasses := leafClasses collect:refetch.
+    classes := classes collect:[:oldClass | oldClass notNil ifTrue:[refetch value: oldClass] ifFalse:[nil]].
+    leafClasses := leafClasses collect:[:oldClass | oldClass notNil ifTrue:[refetch value: oldClass] ifFalse:[nil]].
     anyChange ifTrue:[
         self updateOutputGenerator
     ].
 
     "Modified: / 06-07-2011 / 11:44:13 / cg"
+    "Modified: / 06-09-2013 / 18:05:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 delayedUpdate:something with:aParameter from:changedObject
@@ -2089,11 +2101,11 @@
 !MethodCategoryList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.96 2013-09-05 10:46:11 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.97 2013-09-06 18:39:19 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.96 2013-09-05 10:46:11 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.97 2013-09-06 18:39:19 vrany Exp $'
 ! !