--- a/Tools_BrowserList.st Tue Oct 23 10:27:33 2012 +0200
+++ b/Tools_BrowserList.st Tue Oct 23 10:39:59 2012 +0200
@@ -805,8 +805,8 @@
(NewSystemBrowser synchronousUpdate == true
or:[ immediateUpdate value == true ])
ifTrue:[
- self delayedUpdate:something with:aParameter from:changedObject.
- ^ self.
+ self delayedUpdate:something with:aParameter from:changedObject.
+ ^ self.
].
"/ (changedObject == ChangeSet)
@@ -824,7 +824,12 @@
"/ ].
changedObject == inGeneratorHolder ifTrue:[
- listValid := false.
+ listValid := false.
+ "/ if not already shown, avoid the processing until shown
+ "/ cg: does not work (for whatever reason) - try implementors...
+ true "self window shown" ifFalse:[
+ ^ self
+ ].
].
self enqueueDelayedUpdate:something with:aParameter from:changedObject.
@@ -889,9 +894,13 @@
inGeneratorHolder addDependent:self
].
(prevHolder notNil or:[inGeneratorHolder notNil]) ifTrue:[
- (prevHolder value isNil and:[ inGeneratorHolder value isEmptyOrNil])
- ifFalse:[
- self update:#value with:nil from:inGeneratorHolder
+ self window shown ifFalse:[
+ "/ self enqueueDelayedUpdateList - will be done anyway, when shown
+ ] ifTrue:[
+ (prevHolder value isNil and:[ inGeneratorHolder value isEmptyOrNil])
+ ifFalse:[
+ self update:#value with:nil from:inGeneratorHolder
+ ].
].
].
@@ -1108,6 +1117,11 @@
!BrowserList methodsFor:'initialize-release'!
+initialize
+ listValid := false.
+ super initialize.
+!
+
release
self makeIndependent.
super release.
@@ -1498,7 +1512,7 @@
|list|
self slaveMode value == true ifFalse:[
- self updateList.
+ listValid ifFalse:[self enqueueDelayedUpdateList "updateList"].
] ifTrue:[
self invalidateList
].
@@ -1796,5 +1810,5 @@
!BrowserList class methodsFor:'documentation'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.42 2012-06-05 22:04:08 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.43 2012-10-23 08:39:59 cg Exp $'
! !