changed: #inspect:
authorClaus Gittinger <cg@exept.de>
Sun, 03 Jun 2012 15:32:46 +0200
changeset 11549 306407e0570b
parent 11548 9eab7ffc6c78
child 11550 e53cac96740a
changed: #inspect:
ContextInspectorView.st
--- a/ContextInspectorView.st	Sun Jun 03 11:54:20 2012 +0200
+++ b/ContextInspectorView.st	Sun Jun 03 15:32:46 2012 +0200
@@ -60,19 +60,31 @@
      m argsOnly blockNode 
      numVarsInSource numVarsInContext isDoIt
      numArgs numVars n tempNames realTempNames 
-     oldSelection oldSelectedName hCon listSelection|
+     oldSelection oldSelectedName hCon keepList newList|
 
     oldSelection := selectionIndex.
-    oldSelection notNil ifTrue:[oldSelectedName := self listEntryAt:oldSelection].
+    oldSelection notNil ifTrue:[
+        oldSelectedName := (self listEntryAt:oldSelection).
+        oldSelectedName notNil ifTrue:[
+            oldSelectedName := oldSelectedName string
+        ]
+    ].
 
-    ((aContext == inspectedContext)
-        "/ care for contexts which change size
-        "/ (after the locals & stack-setup)
-    and:[    contextSize == inspectedContext size ])
-    ifTrue:[
-        "/ do nothing
+    keepList := ((aContext == inspectedContext)
+                "/ care for contexts which change size
+                "/ (after the locals & stack-setup)
+                and:[ contextSize == inspectedContext size ]).
+
+    keepList ifTrue:[
+        "/ assume that the list remains unchanged;
+        "/ this is no longer true, if some inst-slot has changed (bullet colors)
+        UserPreferences current showTypeIndicatorInInspector ifTrue:[
+            newList := self fieldList.
+            newList ~= listView list ifTrue:[
+                listView list:newList. 
+            ]    
+        ].
     ] ifFalse:[
-
         hasMore := argsOnly := false.
         inspectedObject := object := nil.
         inspectedContext := aContext.
@@ -84,10 +96,7 @@
             ^ self
         ].
 
-"/    realized ifFalse:[^ self].
-
-    methodHomeContext := aContext methodHome.
-
+        methodHomeContext := aContext methodHome.
         methodHomeContext isNil ifTrue:[
             "its a cheap blocks context"
             rec := aContext receiver.
@@ -100,7 +109,6 @@
 
             "/ #doIt needs special handling below
             isDoIt := (sel == #doIt) or:[sel == #doIt:].
-
             method := methodHomeContext method.
 
 "/        implementorClass := methodHomeContext methodClass.
@@ -299,14 +307,14 @@
     oldSelectedName notNil ifTrue:[
         |idx|
 
-        idx := listView list indexOf:oldSelectedName.
+        idx := listView list findFirst:[:entry | (entry ? '') string = oldSelectedName].
         idx ~~ 0 "(names includes:oldSelectedName)" ifTrue:[
             listView selectElement:oldSelectedName.
             self showSelection:idx.
         ]
     ].
 
-    "Modified: / 16-05-2012 / 17:55:45 / cg"
+    "Modified: / 03-06-2012 / 11:56:59 / cg"
 !
 
 namesOfBlockContext:aContext
@@ -663,9 +671,9 @@
 !ContextInspectorView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.77 2012-05-16 17:04:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.78 2012-06-03 13:32:46 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.77 2012-05-16 17:04:42 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.78 2012-06-03 13:32:46 cg Exp $'
 ! !