Skip to content

[Coder] Doing refactoring in coder can result in errors when updating the list of categories #3979

Open
@chisandrei

Description

@chisandrei

Doing refactoring in coder can result in errors when updating the list of categories:

Screenshot 2024-08-26 at 13 20 13 Screenshot 2024-08-26 at 13 20 24 Screenshot 2024-08-26 at 13 20 56
26 August 2024 1:25:35.665022 pm

VM: Mac OS - x86_64 - macos - CoInterpreter * VMMaker-tonel.1 uuid: 94b6334d-f5db-0d00-a897-1ca10c87c3e2 Aug 13 2024
StackToRegisterMappingCogit * VMMaker-tonel.1 uuid: 94b6334d-f5db-0d00-a897-1ca10c87c3e2 Aug 13 2024
v10.2.0-109-g782f6a4 - Commit: 782f6a4 - Date: 2024-06-26 12:05:27 +02:00

Image: Pharo11.0.0 [Build information: Pharo-11.0.0+build.726.sha.aece1b5473acf3830a0e082c1bc3a15d4ff3522b (64 Bit)]

SortedCollection(Object)>>errorSubscriptBounds:
	Receiver: a SortedCollection(GtRemoteGemStoneSessionAsyncExamples>>#runningServer GtRemoteGemSto[..]
	Arguments and temporary variables: 
		index: 	5
	Receiver's instance variables: 
		array: 	{GtRemoteGemStoneSessionAsyncExamples>>#runningServer. GtRemoteGemSt[..]
		firstIndex: 	1
		lastIndex: 	4
		sortBlock: 	[ :a :b | a selector < b selector ]


SortedCollection(OrderedCollection)>>at:
	Receiver: a SortedCollection(GtRemoteGemStoneSessionAsyncExamples>>#runningServer GtRemoteGemSto[..]
	Arguments and temporary variables: 
		anInteger: 	5
		index: 	5
	Receiver's instance variables: 
		array: 	{GtRemoteGemStoneSessionAsyncExamples>>#runningServer. GtRemoteGemSt[..]
		firstIndex: 	1
		lastIndex: 	4
		sortBlock: 	[ :a :b | a selector < b selector ]


BrSequenceableCollectionItemsProvider>>itemAt:
	Receiver: a BrSequenceableCollectionItemsProvider
	Arguments and temporary variables: 
		anIndex: 	5
	Receiver's instance variables: 
		listModel: 	nil
		announcer: 	an Announcer
		userData: 	nil
		collection: 	a SortedCollection(GtRemoteGemStoneSessionAsyncExamples>>#runni[..]


BrGroupedListGroup>>itemAt:
	Receiver: a BrGroupedListGroup
	Arguments and temporary variables: 
		anIndex: 	5
	Receiver's instance variables: 
		group: 	a BrGroup
		groups: 	a BrGroupedListGroups
		amountOfItems: 	5
		headerIndex: 	1


BrGroupedListGroups>>entityAt:
	Receiver: a BrGroupedListGroups
	Arguments and temporary variables: 
		anIndex: 	6
		aGroup: 	a BrGroupedListGroup
	Receiver's instance variables: 
		groupsProvider: 	a BrSequenceableCollectionItemsProvider
		listModel: 	BrGroupedListModel {
	Selection {}
}
		loadedGroups: 	an OrderedCollection(a BrGroupedListGroup a BrGroupedListGroup)
		amountOfEntities: 	6


BrGroupedListModel>>entityAt:
	Receiver: BrGroupedListModel {
	Selection {}
}
	Arguments and temporary variables: 
		anIndex: 	6
	Receiver's instance variables: 
		widget: 	BrGroupedList @ 606910464 (nil)
		actors: 	an Array(Selection {})
		eventDispatcher: 	Direct event dispatcher for BrGroupedListModel {
	Selectio[..]
		model: 	nil
		whenAttachedActions: 	an OrderedCollection()
		itemTypeStencil: 	a BrListItemTypeStencilBuilder
		itemIdStencil: 	nil
		rowDataBinder: 	nil
		shouldRequestFocusOnSelectionClick: 	true
		groups: 	a BrGroupedListGroups
		headerElementStencil: 	a BrListItemElementStencilBuilder
		headerDataBinder: 	a BrListItemDataBinder


BrGroupedListDataSource>>itemTypeAt:
	Receiver: a BrGroupedListDataSource
	Arguments and temporary variables: 
		anItemPosition: 	6
		anEntity: 	nil
	Receiver's instance variables: 
		eventDispatcher: 	Direct event dispatcher for a BrGroupedListDataSource
		hasStableIds: 	false
		listModel: 	BrGroupedListModel {
	Selection {}
}
		selection: 	
		itemIdStencil: 	nil
		itemTypeStencil: 	a BrListItemTypeStencilBuilder
		clickToSelectHandler: 	a BrListClickToSelectHandler
		listWidget: 	BrGroupedList @ 606910464 (nil)
		groups: 	nil
		headerElementStencil: 	a BrListItemElementStencilBuilder
		itemDataBinder: 	nil
		headerDataBinder: 	a BrListItemDataBinder


BlInfiniteRecyclerController>>itemTypeAt:
	Receiver: a BlInfiniteRecyclerController
	Arguments and temporary variables: 
		aPosition: 	6
	Receiver's instance variables: 
		infiniteElement: 	BrInfiniteListElement @ 874347008 (#scrollable)


BlInfiniteRecyclerFetcherContext>>itemType
	Receiver: a BlInfiniteRecyclerFetcherContext
	Arguments and temporary variables: 
x
	Receiver's instance variables: 
		position: 	6
		isDryRun: 	false
		recyclerController: 	a BlInfiniteRecyclerController
		shouldLog: 	false
		result: 	a BlInfiniteRecyclerFetcherResult
		cachedItemPosition: 	6
		cachedItemType: 	nil
		cachedItemId: 	nil


BlInfiniteRecyclerPoolFetcher>>doFetchElementHolderFor:
	Receiver: a BlInfiniteRecyclerPoolFetcher
	Arguments and temporary variables: 
		aFetcherContext: 	a BlInfiniteRecyclerFetcherContext
		aRecyclerController: 	a BlInfiniteRecyclerController
		holder: 	nil
	Receiver's instance variables: 
		nextFetcher: 	a BlInfiniteRecyclerDataSourceFetcher


[ currentFetcher doFetchElementHolderFor: aFetcherContext ] in [
		aFetcherContext recordFetcher: currentFetcher.
		BlFrameTelemetry
			timeSync: [ 'Fetch element holder using {1}' format: { currentFetcher class name }  ]
			during: [ currentFetcher doFetchElementHolderFor: aFetcherContext ].
		currentFetcher := currentFetcher next ] in BlInfiniteRecyclerChangedScrapFetcher(BlInfiniteRecyclerFetcher)>>elementHolderFor:
	Receiver: a BlInfiniteRecyclerChangedScrapFetcher
	Arguments and temporary variables: 
		aFetcherContext: 	a BlInfiniteRecyclerFetcherContext
		currentFetcher: 	a BlInfiniteRecyclerPoolFetcher
	Receiver's instance variables: 
		nextFetcher: 	a BlInfiniteRecyclerPositionScrapFetcher


NullTelemetry>>time:during:
	Receiver: a NullTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element holder using {1}' format: { currentFetcher cla[..]
		aBlock: 	[ currentFetcher doFetchElementHolderFor: aFetcherContext ]
	Receiver's instance variables: 
a NullTelemetry

BlSpaceTelemetry>>time:during:
	Receiver: a BlSpaceTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element holder using {1}' format: { currentFetcher cla[..]
		aBlock: 	[ currentFetcher doFetchElementHolderFor: aFetcherContext ]
	Receiver's instance variables: 
		space: 	a GtWorld('Glamorous Toolkit')
		telemetry: 	a NullTelemetry


BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
	Receiver: a BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element holder using {1}' format: { currentFetcher cla[..]
		aBlock: 	[ currentFetcher doFetchElementHolderFor: aFetcherContext ]
	Receiver's instance variables: 
		index: 	18


BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
	Receiver: a BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element holder using {1}' format: { currentFetcher cla[..]
		aBlock: 	[ currentFetcher doFetchElementHolderFor: aFetcherContext ]
	Receiver's instance variables: 
		index: 	18


BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
	Receiver: BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element holder using {1}' format: { currentFetcher cla[..]
		aBlock: 	[ currentFetcher doFetchElementHolderFor: aFetcherContext ]
	Receiver's instance variables: 
		superclass: 	BaseProcessTelemetry
		methodDict: 	a MethodDictionary(#space->BlFrameTelemetry>>#space #space:->Bl[..]
		format: 	65537
		layout: 	a FixedLayout
		organization: 	a ClassOrganization
		commentSourcePointer: 	nil
		subclasses: 	nil
		name: 	#BlFrameTelemetry
		classPool: 	nil
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Bloc-Telemetry'
		soleInstance: 	a BlFrameTelemetry


[
		aFetcherContext recordFetcher: currentFetcher.
		BlFrameTelemetry
			timeSync: [ 'Fetch element holder using {1}' format: { currentFetcher class name }  ]
			during: [ currentFetcher doFetchElementHolderFor: aFetcherContext ].
		currentFetcher := currentFetcher next ] in BlInfiniteRecyclerChangedScrapFetcher(BlInfiniteRecyclerFetcher)>>elementHolderFor:
	Receiver: a BlInfiniteRecyclerChangedScrapFetcher
	Arguments and temporary variables: 
		aFetcherContext: 	a BlInfiniteRecyclerFetcherContext
		currentFetcher: 	a BlInfiniteRecyclerPoolFetcher
	Receiver's instance variables: 
		nextFetcher: 	a BlInfiniteRecyclerPositionScrapFetcher


FullBlockClosure(BlockClosure)>>doWhileTrue:
	Receiver: [
		aFetcherContext recordFetcher: currentFetcher.
		BlFrameTelemetry
			timeSync: [ '[..]
	Arguments and temporary variables: 
		conditionBlock: 	[ aFetcherContext hasHolder not and: [ currentFetcher notNi[..]
		result: 	a BlInfiniteRecyclerPoolFetcher
	Receiver's instance variables: 
		outerContext: 	BlInfiniteRecyclerChangedScrapFetcher(BlInfiniteRecyclerFetch[..]
		compiledBlock: 	a CompiledBlock: [
		aFetcherContext recordFetcher: currentF[..]
		numArgs: 	0
		receiver: 	a BlInfiniteRecyclerChangedScrapFetcher


BlInfiniteRecyclerChangedScrapFetcher(BlInfiniteRecyclerFetcher)>>elementHolderFor:
	Receiver: a BlInfiniteRecyclerChangedScrapFetcher
	Arguments and temporary variables: 
		currentFetcher: 	a BlInfiniteRecyclerPoolFetcher
		aFetcherContext: 	a BlInfiniteRecyclerFetcherContext
	Receiver's instance variables: 
		nextFetcher: 	a BlInfiniteRecyclerPositionScrapFetcher


[
			| aFetcherContext aSignal |

			aFetcherContext := BlInfiniteRecyclerFetcherContext new
				isDryRun: dryRun;
				position: aPosition;
				recyclerController: controller.

			aSignal := BlInfiniteRecyclerFetchHolderSignal new
				infiniteElement: controller infiniteElement;
				fetcherContext: aFetcherContext;
				position: aPosition;
				emit.

			fetchedResult := fetcher elementHolderFor: aFetcherContext.

			aSignal fetcherResult: fetchedResult ] in BlInfiniteRecycler>>elementFor:dryRun:
	Receiver: a BlInfiniteRecycler
	Arguments and temporary variables: 
		aPosition: 	6
		dryRun: 	false
		holder: 	nil
		fromScrap: 	nil
		bound: 	nil
		itemElement: 	nil
		anInfiniteConstraints: 	nil
		fetchedResult: 	nil
		aFetcherContext: 	a BlInfiniteRecyclerFetcherContext
		aSignal: 	2024-08-26T13:20:00.566756+02:00 BlInfiniteRecyclerFetchHolderSign[..]
	Receiver's instance variables: 
		recyclerPool: 	a BlInfiniteRecyclerPool
		controller: 	a BlInfiniteRecyclerController
		changedScrap: 	an OrderedCollection()
		attachedScrap: 	an OrderedCollection()
		cachedScrap: 	an OrderedCollection()
		fetcher: 	a BlInfiniteRecyclerChangedScrapFetcher
		cacheSize: 	2
		requestedCacheSize: 	2
		userCache: 	nil
		eventDispatcher: 	Direct event dispatcher for a BlInfiniteRecycler


NullTelemetry>>time:during:
	Receiver: a NullTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element at {1}' format: { aPosition } ]
		aBlock: 	[
			| aFetcherContext aSignal |

			aFetcherContext := BlInfiniteR[..]
	Receiver's instance variables: 
a NullTelemetry

BlSpaceTelemetry>>time:during:
	Receiver: a BlSpaceTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element at {1}' format: { aPosition } ]
		aBlock: 	[
			| aFetcherContext aSignal |

			aFetcherContext := BlInfiniteR[..]
	Receiver's instance variables: 
		space: 	a GtWorld('Glamorous Toolkit')
		telemetry: 	a NullTelemetry


BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
	Receiver: a BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element at {1}' format: { aPosition } ]
		aBlock: 	[
			| aFetcherContext aSignal |

			aFetcherContext := BlInfiniteR[..]
	Receiver's instance variables: 
		index: 	18


BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
	Receiver: a BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element at {1}' format: { aPosition } ]
		aBlock: 	[
			| aFetcherContext aSignal |

			aFetcherContext := BlInfiniteR[..]
	Receiver's instance variables: 
		index: 	18


BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
	Receiver: BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Fetch element at {1}' format: { aPosition } ]
		aBlock: 	[
			| aFetcherContext aSignal |

			aFetcherContext := BlInfiniteR[..]
	Receiver's instance variables: 
		superclass: 	BaseProcessTelemetry
		methodDict: 	a MethodDictionary(#space->BlFrameTelemetry>>#space #space:->Bl[..]
		format: 	65537
		layout: 	a FixedLayout
		organization: 	a ClassOrganization
		commentSourcePointer: 	nil
		subclasses: 	nil
		name: 	#BlFrameTelemetry
		classPool: 	nil
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Bloc-Telemetry'
		soleInstance: 	a BlFrameTelemetry


BlInfiniteRecycler>>elementFor:dryRun:
	Receiver: a BlInfiniteRecycler
	Arguments and temporary variables: 
		fetchedResult: 	nil
		aPosition: 	6
		dryRun: 	false
		holder: 	nil
		fromScrap: 	nil
		bound: 	nil
		itemElement: 	nil
		anInfiniteConstraints: 	nil
	Receiver's instance variables: 
		recyclerPool: 	a BlInfiniteRecyclerPool
		controller: 	a BlInfiniteRecyclerController
		changedScrap: 	an OrderedCollection()
		attachedScrap: 	an OrderedCollection()
		cachedScrap: 	an OrderedCollection()
		fetcher: 	a BlInfiniteRecyclerChangedScrapFetcher
		cacheSize: 	2
		requestedCacheSize: 	2
		userCache: 	nil
		eventDispatcher: 	Direct event dispatcher for a BlInfiniteRecycler


BlInfiniteRecycler>>elementFor:
	Receiver: a BlInfiniteRecycler
	Arguments and temporary variables: 
		aPosition: 	6
	Receiver's instance variables: 
		recyclerPool: 	a BlInfiniteRecyclerPool
		controller: 	a BlInfiniteRecyclerController
		changedScrap: 	an OrderedCollection()
		attachedScrap: 	an OrderedCollection()
		cachedScrap: 	an OrderedCollection()
		fetcher: 	a BlInfiniteRecyclerChangedScrapFetcher
		cacheSize: 	2
		requestedCacheSize: 	2
		userCache: 	nil
		eventDispatcher: 	Direct event dispatcher for a BlInfiniteRecycler


[ anElement := aRecycler elementFor: currentPosition. ] in BlInfiniteLinearLayoutState>>nextElement:in:
	Receiver: a BlInfiniteLinearLayoutState
	Arguments and temporary variables: 
		aRecycler: 	a BlInfiniteRecycler
		anInfiniteElement: 	BrInfiniteListElement @ 874347008 (#scrollable)
		anElement: 	nil
	Receiver's instance variables: 
		allowRecycling: 	false
		availableSpace: 	708.5274856090546
		extraSpace: 	0.0
		currentPosition: 	6
		lastScrolledDelta: 	-0.0
		scrapList: 	nil
		isPreLayout: 	false
		itemDirection: 	a BlInfiniteLinearLayoutItemDirectionTail
		scrollingOffset: 	Float infinity negated
		isInfinite: 	false
		layoutDirection: 	a BlInfiniteLinearLayoutDirectionEnd
		offset: 	84.79081273078918


NullTelemetry>>time:during:
	Receiver: a NullTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element from recycler' ]
		aBlock: 	[ anElement := aRecycler elementFor: currentPosition. ]
	Receiver's instance variables: 
a NullTelemetry

BlSpaceTelemetry>>time:during:
	Receiver: a BlSpaceTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element from recycler' ]
		aBlock: 	[ anElement := aRecycler elementFor: currentPosition. ]
	Receiver's instance variables: 
		space: 	a GtWorld('Glamorous Toolkit')
		telemetry: 	a NullTelemetry


BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
	Receiver: a BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element from recycler' ]
		aBlock: 	[ anElement := aRecycler elementFor: currentPosition. ]
	Receiver's instance variables: 
		index: 	18


BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
	Receiver: a BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element from recycler' ]
		aBlock: 	[ anElement := aRecycler elementFor: currentPosition. ]
	Receiver's instance variables: 
		index: 	18


BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
	Receiver: BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element from recycler' ]
		aBlock: 	[ anElement := aRecycler elementFor: currentPosition. ]
	Receiver's instance variables: 
		superclass: 	BaseProcessTelemetry
		methodDict: 	a MethodDictionary(#space->BlFrameTelemetry>>#space #space:->Bl[..]
		format: 	65537
		layout: 	a FixedLayout
		organization: 	a ClassOrganization
		commentSourcePointer: 	nil
		subclasses: 	nil
		name: 	#BlFrameTelemetry
		classPool: 	nil
		sharedPools: 	an OrderedCollection()
		environment: 	a SystemDictionary(lots of globals)
		category: 	#'Bloc-Telemetry'
		soleInstance: 	a BlFrameTelemetry


BlInfiniteLinearLayoutState>>nextElement:in:
	Receiver: a BlInfiniteLinearLayoutState
	Arguments and temporary variables: 
		aRecycler: 	a BlInfiniteRecycler
		anInfiniteElement: 	BrInfiniteListElement @ 874347008 (#scrollable)
		anElement: 	nil
	Receiver's instance variables: 
		allowRecycling: 	false
		availableSpace: 	708.5274856090546
		extraSpace: 	0.0
		currentPosition: 	6
		lastScrolledDelta: 	-0.0
		scrapList: 	nil
		isPreLayout: 	false
		itemDirection: 	a BlInfiniteLinearLayoutItemDirectionTail
		scrollingOffset: 	Float infinity negated
		isInfinite: 	false
		layoutDirection: 	a BlInfiniteLinearLayoutDirectionEnd
		offset: 	84.79081273078918


[ anElement := layoutState nextElement: self recycler in: infiniteElement ] in BlInfiniteLinearLayout>>layoutChunkAdd
	Receiver: a BlInfiniteLinearLayout
	Arguments and temporary variables: 
		anElement: 	nil
	Receiver's instance variables: 
		childManager: 	a BlInfiniteChildrenManager
		infiniteElement: 	BrInfiniteListElement @ 874347008 (#scrollable)
		horizontalChildFinder: 	a BlInfiniteHorizontalChildBoundsBasedFinder
		verticalChildFinder: 	a BlInfiniteVerticalChildBoundsBasedFinder
		width: 	154.97862243652344
		height: 	793.3182983398438
		heightSpec: 	Exact 793.3182983398438
		widthSpec: 	Exact 154.97862243652344
		autoMeasure: 	true
		itemPrefetchEnabled: 	false
		measurementCacheEnabled: 	true
		requestedSimpleAnimations: 	false
		smoothScroller: 	nil
		announcer: 	an Announcer
		layoutState: 	a BlInfiniteLinearLayoutState
		orientation: 	a BlInfiniteVerticalOrientation
		lastStackFromEnd: 	false
		reverseLayout: 	false
		shouldReverseLayout: 	false
		stackFromEnd: 	false
		smoothScrollbarEnabled: 	true
		pendingScrollPosition: 	0
		pendingScrollPositionOffset: 	Float infinity negated
		anchorInfo: 	a BlInfiniteLinearLayoutAnchorInfo


NullTelemetry>>time:during:
	Receiver: a NullTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element' ]
		aBlock: 	[ anElement := layoutState nextElement: self recycler in: infiniteE[..]
	Receiver's instance variables: 
a NullTelemetry

BlSpaceTelemetry>>time:during:
	Receiver: a BlSpaceTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element' ]
		aBlock: 	[ anElement := layoutState nextElement: self recycler in: infiniteE[..]
	Receiver's instance variables: 
		space: 	a GtWorld('Glamorous Toolkit')
		telemetry: 	a NullTelemetry


BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
	Receiver: a BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element' ]
		aBlock: 	[ anElement := layoutState nextElement: self recycler in: infiniteE[..]
	Receiver's instance variables: 
		index: 	18


BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
	Receiver: a BlFrameTelemetry
	Arguments and temporary variables: 
		aNameBlock: 	[ 'Get next element' ]
		aBlock: 	[ anElement := layoutState nextElement: self recycler in: infiniteE[..]
	Receiver's instance variables: 
		index: 	18



--- The full stack ---
SortedCollection(Object)>>errorSubscriptBounds:
SortedCollection(OrderedCollection)>>at:
BrSequenceableCollectionItemsProvider>>itemAt:
BrGroupedListGroup>>itemAt:
BrGroupedListGroups>>entityAt:
BrGroupedListModel>>entityAt:
BrGroupedListDataSource>>itemTypeAt:
BlInfiniteRecyclerController>>itemTypeAt:
BlInfiniteRecyclerFetcherContext>>itemType
BlInfiniteRecyclerPoolFetcher>>doFetchElementHolderFor:
[ currentFetcher doFetchElementHolderFor: aFetcherContext ] in [
		aFetcherContext recordFetcher: currentFetcher.
		BlFrameTelemetry
			timeSync: [ 'Fetch element holder using {1}' format: { currentFetcher class name }  ]
			during: [ currentFetcher doFetchElementHolderFor: aFetcherContext ].
		currentFetcher := currentFetcher next ] in BlInfiniteRecyclerChangedScrapFetcher(BlInfiniteRecyclerFetcher)>>elementHolderFor:
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
[
		aFetcherContext recordFetcher: currentFetcher.
		BlFrameTelemetry
			timeSync: [ 'Fetch element holder using {1}' format: { currentFetcher class name }  ]
			during: [ currentFetcher doFetchElementHolderFor: aFetcherContext ].
		currentFetcher := currentFetcher next ] in BlInfiniteRecyclerChangedScrapFetcher(BlInfiniteRecyclerFetcher)>>elementHolderFor:
FullBlockClosure(BlockClosure)>>doWhileTrue:
BlInfiniteRecyclerChangedScrapFetcher(BlInfiniteRecyclerFetcher)>>elementHolderFor:
[
			| aFetcherContext aSignal |

			aFetcherContext := BlInfiniteRecyclerFetcherContext new
				isDryRun: dryRun;
				position: aPosition;
				recyclerController: controller.

			aSignal := BlInfiniteRecyclerFetchHolderSignal new
				infiniteElement: controller infiniteElement;
				fetcherContext: aFetcherContext;
				position: aPosition;
				emit.

			fetchedResult := fetcher elementHolderFor: aFetcherContext.

			aSignal fetcherResult: fetchedResult ] in BlInfiniteRecycler>>elementFor:dryRun:
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
BlInfiniteRecycler>>elementFor:dryRun:
BlInfiniteRecycler>>elementFor:
[ anElement := aRecycler elementFor: currentPosition. ] in BlInfiniteLinearLayoutState>>nextElement:in:
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
BlInfiniteLinearLayoutState>>nextElement:in:
[ anElement := layoutState nextElement: self recycler in: infiniteElement ] in BlInfiniteLinearLayout>>layoutChunkAdd
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
 - - - - - - - - - - - - - - -
			- - - - - - - - - - - - - - - - - -
BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
BlInfiniteLinearLayout>>layoutChunkAdd
[ anElement := self layoutChunkAdd ] in BlInfiniteLinearLayout>>layoutChunkContext:
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>timeSync:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>timeSync:during:
BlInfiniteLinearLayout>>layoutChunkContext:
BlInfiniteLinearLayout>>fillLayout:
BlInfiniteLinearLayout>>layoutChildrenFillFromStart:
BlInfiniteLinearLayout>>layoutChildrenFill:
BlInfiniteLinearLayout>>layoutChildrenIn:state:
BrInfiniteListElement(BlInfiniteElement)>>dispatchLayoutSecondStep
BrInfiniteListElement(BlInfiniteElement)>>dispatchLayout
BrInfiniteListElement(BlInfiniteElement)>>onLayout:context:
[ self onLayout: aRectangle context: aBlElementBoundsUpdateContext ] in BrInfiniteListElement(BlElement)>>applyLayoutSafelyIn:context:
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>time:during:
BrInfiniteListElement(BlElement)>>applyLayoutSafelyIn:context:
[ self applyLayoutSafelyIn: aBlBounds context: aBlElementBoundsUpdateContext ] in BrInfiniteListElement(BlElement)>>applyLayoutIn:context:
FullBlockClosure(BlockClosure)>>on:do:
BlCompositeErrorHandler(BlErrorHandler)>>with:do:failed:
BrInfiniteListElement(BlElement)>>applyLayoutIn:context:
[ :origin :child |
			| childBounds childMarginBounds childConstraints |
			childConstraints := child constraints linear.
			childBounds := origin + (child outsets topLeft max: [email protected]) extent: child measuredExtent.
			childMarginBounds := origin extent: child measuredExtent + (child outsets extent max: [email protected]).  
			
			self layout horizontalAlignment ifNotNull: [ 
				| translation allowedBounds |
				allowedBounds := childMarginBounds origin extent: elementInnerBounds width @ child measuredHeight.
				translation := (self layout horizontalAlignment directed: self layout direction) translationOf: childMarginBounds in: allowedBounds.
				childBounds := childBounds translateBy: translation ].

			self layout horizontalAlignment ifNull: [ 
				| translation allowedBounds |
				allowedBounds := childMarginBounds origin extent: elementInnerBounds width @ child measuredHeight.
				translation := (childConstraints horizontal alignment directed: self layout direction) translationOf: childMarginBounds in: allowedBounds.
				childBounds := childBounds translateBy: translation ].
			
			childBounds := childBounds translateBy: (0.0 @ self layout cellSpacing).
			
			"telling each subnode what bounds to use for layouting process.
			Because measuring process does not modify actual extent
			we need to use a measured one"
			child applyLayoutIn: childBounds context: aBlElementBoundsUpdateContext.
			"translating origin vertically down for next subnode"
			origin x @(origin y + child measuredHeight + self layout cellSpacing + (child outsets height max: 0.0)) ] in BlLinearLayoutVerticalOrientation>>layout:in:context:
[ :anElement | nextValue := binaryBlock value: nextValue value: anElement ] in BlChildrenAccountedByLayout(BlChildren)>>inject:into:
Array(SequenceableCollection)>>do:
BlChildrenAccountedByLayout(BlChildrenSubset)>>do:
BlChildrenAccountedByLayout(BlChildren)>>inject:into:
BlLinearLayoutVerticalOrientation>>layout:in:context:
BlLinearLayout>>layout:in:context:
BrGroupedList(BlElement)>>onLayout:context:
[ self onLayout: aRectangle context: aBlElementBoundsUpdateContext ] in BrGroupedList(BlElement)>>applyLayoutSafelyIn:context:
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>time:during:
BrGroupedList(BlElement)>>applyLayoutSafelyIn:context:
[ self applyLayoutSafelyIn: aBlBounds context: aBlElementBoundsUpdateContext ] in BrGroupedList(BlElement)>>applyLayoutIn:context:
FullBlockClosure(BlockClosure)>>on:do:
BlCompositeErrorHandler(BlErrorHandler)>>with:do:failed:
BrGroupedList(BlElement)>>applyLayoutIn:context:
GtWorld(BlSpace)>>doUpdateLayoutBoundary:context:
[ :eachElement |
		self doUpdateLayoutBoundary: eachElement context: aBlElementBoundsUpdater ] in GtWorld(BlSpace)>>doUpdateLayout
Array(SequenceableCollection)>>do:
GtWorld(BlSpace)>>doUpdateLayout
[
		layoutCounter := 0.
		maxLayoutCount := 100.

		[ self hasLayoutError not and: [ self isLayoutRequested and: [ layoutCounter < maxLayoutCount ] ] ]
			whileTrue: [
				self doUpdateLayout.
				layoutCounter := layoutCounter + 1.
				layoutCounter = 50
					ifTrue: [ 'Warning: Layout was performed 50 times per frame!' traceCr ] ].

		self root dispatchLayoutDone

	"I prevent infinite spawn of debuggers"
	] in GtWorld(BlSpace)>>doLayout
FullBlockClosure(BlockClosure)>>on:do:
GtWorld(BlSpace)>>doLayout
[ :theSpace | theSpace isLayoutRequested ifTrue: [ theSpace doLayout ] ] in BlSpaceFrameLayoutPhase>>runOn:
FullBlockClosure(BlockClosure)>>cull:
GtWorld(BlSpace)>>dispatchTimeEvent:during:
BlSpaceFrameLayoutPhase>>runOn:
[ self currentPhase runOn: aSpace ] in BlSpaceFrame>>runCurrentPhaseOn:
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>time:during:
BlSpaceFrame>>runCurrentPhaseOn:
BlSpaceFrame>>runOn:
[ self frame runOn: self ] in [ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] in [
					BlFrameTelemetry soleInstance
						beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal
						on: [ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] ] in [
			BlFrameTelemetry
				reset;
				time: [ 'Frame' ]
				during: [
					BlFrameTelemetry soleInstance
						beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal
						on: [ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] ];
				in: [ :t | t soleInstance snapshotSpace: self ];
				emit ] in GtWorld(BlSpace)>>processPulse
NullTelemetry>>profile:executing:as:
BlSpaceTelemetry>>profile:executing:as:
BlFrameTelemetry(BaseProcessTelemetry)>>profile:executing:as:
BlFrameTelemetry(BaseProcessTelemetry)>>messageTallyOn:
[ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] in [
					BlFrameTelemetry soleInstance
						beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal
						on: [ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] ] in [
			BlFrameTelemetry
				reset;
				time: [ 'Frame' ]
				during: [
					BlFrameTelemetry soleInstance
						beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal
						on: [ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] ];
				in: [ :t | t soleInstance snapshotSpace: self ];
				emit ] in GtWorld(BlSpace)>>processPulse
NullTelemetry>>profile:executing:as:
BlSpaceTelemetry>>profile:executing:as:
BlFrameTelemetry(BaseProcessTelemetry)>>profile:executing:as:
BlFrameTelemetry(BaseProcessTelemetry)>>beacon:as:on:
BlFrameTelemetry(BaseProcessTelemetry)>>beacon:on:
[
					BlFrameTelemetry soleInstance
						beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal
						on: [ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] ] in [
			BlFrameTelemetry
				reset;
				time: [ 'Frame' ]
				during: [
					BlFrameTelemetry soleInstance
						beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal
						on: [ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] ];
				in: [ :t | t soleInstance snapshotSpace: self ];
				emit ] in GtWorld(BlSpace)>>processPulse
NullTelemetry>>time:during:
BlSpaceTelemetry>>time:during:
BlFrameTelemetry(BaseProcessTelemetry)>>time:during:
BlFrameTelemetry class(BaseProcessTelemetry class)>>time:during:
[
			BlFrameTelemetry
				reset;
				time: [ 'Frame' ]
				during: [
					BlFrameTelemetry soleInstance
						beacon: BlRequestLayoutSignal, BlMarkElementNeedsPaintSignal, BlLostFocusSignal, BlGotFocusSignal, BlTextStylerRequestedSignal
						on: [ BlFrameTelemetry soleInstance
							messageTallyOn:  [ self frame runOn: self ] ] ];
				in: [ :t | t soleInstance snapshotSpace: self ];
				emit ] in GtWorld(BlSpace)>>processPulse
FullBlockClosure(BlockClosure)>>ensure:
BlFrameTelemetry class>>withSpace:andTelemetry:do:
GtWorld(BlSpace)>>processPulse
GtWorld(BlSpace)>>pulse
[ :eachSpace | eachSpace pulse ] in [
		self tryToRunDeferredActions.
		spaceManager do: [ :eachSpace | eachSpace pulse ]
	] in BlParallelUniverse>>pulseSynchronously
Array(SequenceableCollection)>>do:
BlSpaceManager>>do:
[
		self tryToRunDeferredActions.
		spaceManager do: [ :eachSpace | eachSpace pulse ]
	] in BlParallelUniverse>>pulseSynchronously
FullBlockClosure(BlockClosure)>>ensure:
BlParallelUniverse>>pulseSynchronously
[
		self pulseSynchronously
	] in BlParallelUniverse>>pulse
FullBlockClosure(BlockClosure)>>ensure:
BlParallelUniverse>>pulse
BlHostPulseLoop>>firePulse
[
		[ self firePulse. loopProcess == Processor activeProcess. ] whileTrue
	] in BlHostPulseLoop>>createLoopTask
[self value.
			"IMPORTANT: Do not step over next line of code. See method comments for details"
			Processor terminateRealActive] in FullBlockClosure(BlockClosure)>>newProcess

Metadata

Metadata

Assignees

Labels

coderThe issue is related to the Coder

Type

No type

Projects

Status

To do

Relationships

None yet

Development

No branches or pull requests

Issue actions