The Trunk: Tools-mt.1370.mcz

[email protected] Mon, 27 Jul 2026 07:15:51 0000
Newsgroups gmane.comp.lang.smalltalk.squeak.general
Message-ID <[email protected]>
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.1370.mcz

==================== Summary ====================

Name: Tools-mt.1370
Author: mt
Time: 27 July 2026, 9:15:49.685417 am
UUID: bcd9b411-5a16-0643-a976-b3437e10ff51
Ancestors: Tools-ct.1367, Tools-ct.1368, Tools-ct.1369

Merges fixes for some slips to make this release even more robust =)

Tools-ct.1368:
	Fixes possible debugger storm when hovering a nested message category in a tree browser and then deselecting the class (via keyboard, mouseOverForKeyboardFocus needs to be disabled) before the balloon pops up. Thanks to Lauren (lrnp) for the report!
Also avoids two similar MNUs when using some category menu commands while no class is selected.
On a quick investigation, I did not find any further occurences of this pattern (help selector depending on other state which might have been outdated since construction of the list/tree item) in the Tools package. :-)

Tools-ct.1369:
	Fixes a slip when opening a versions browser on a class side method.

VersionsBrowser browseVersionsOf: VersionsBrowser class>>#browseVersionsOf:
(Previously it incorrectly said "Metaclass")

=============== Diff against Tools-mt.1366 ===============

Item was changed:
  ----- Method: Browser>>categorizeAllUncategorizedMethods (in category 'message category list') -----
  categorizeAllUncategorizedMethods
  	"Categorize methods by looking in parent classes for a method category."
  
+ 	self hasClassSelected ifFalse: [^ self].
+ 	
  	self classOrMetaClassOrganizer classifyAllUnclassified.
  	self changed: #messageCategoryList.
  	self selectMessageCategoryNamed: nil. "'as yet unclassified' might be gone now"!

Item was changed:
  ----- Method: Browser>>removeEmptyCategories (in category 'message category functions') -----
  removeEmptyCategories
  	self okToChange ifFalse: [^ self].
+ 	self hasClassSelected ifFalse: [^ self].
+ 	
  	self selectedClassOrMetaClass organization removeEmptyCategories.
  	self changed: #messageCategoryList:.
  	self selectMessageCategoryNamed: nil. "current category might be gone now"
  !

Item was changed:
  StringHolder subclass: #Inspector
+ 	instanceVariableNames: 'object context fields customFields selectionIndex expression contentsTyped fieldListStyler shouldStyleValuePane selectionUpdateTime'
- 	instanceVariableNames: 'object context fields customFields selectionIndex expression contentsTyped fieldListStyler shouldStyleValuePane selectionUpdateTime fieldTreeItems fieldTreeChildren treeSelectedChild cachedFieldValues processes fieldCoselections'
  	classVariableNames: 'CachedAllInstVarsLabel CurrentLocale'
  	poolDictionaries: ''
  	category: 'Tools-Inspector'!
  
  !Inspector commentStamp: 'mt 4/6/2020 15:16' prior: 0!
  I am a tool that allows to inspect and modify the internal representation of an object. As a StringHolder, the string I represent is the value of the currently selected inspector field, which may be an instance variable, of the observed object.
  
  Beside the #contents in my value pane, I have an extra code pane that holds an #expression to be evaluated on the inspected object -- not the currently selected inspector field.
  
  Take a look at my "fields ..." protocols as well as InspectorField.
  
  (Note that the idea of "elements" from the CollectionInspector bleeds a little bit down into this interface to simplify the implementation of field truncation as well as #inspectOne. Sorry for that. Usually, the inspected object will only produce "fields" to display, and maybe "items" in a pop-up menu. Only collections have "elements".)!

Item was changed:
  ----- Method: TreeBrowser>>messageCategoryLabel: (in category 'message category tree') -----
  messageCategoryLabel: category
  
  	| label |
+ 	self hasClassSelected ifFalse: [^ nil]. "help texts for balloons are requested with a delay, user might have selected a different or no class in the meantime"
+ 	
  	category = ClassOrganizer allCategory ifTrue: [^ category].
  	category = self class extensionCategory ifTrue: [^ category].
  	category = self class coreCategory ifTrue: [^ category].
  	
  	label := self findTrimmedSuffix: category.
  	
  	(self classOrMetaClassOrganizer categories includes: category)
  		ifFalse: [
  			label := '(', label, ')'].
  	
  	^ label!

Item was changed:
  ----- Method: VersionsBrowser class>>browseVersionsOf: (in category 'instance creation') -----
  browseVersionsOf: aCompiledMethod
  
  	| methodClass methodSelector |
  	methodClass := aCompiledMethod methodClass.
  	methodSelector := aCompiledMethod selector.
  	^ self
  		browseVersionsOf: aCompiledMethod
+ 		class: methodClass theNonMetaClass
- 		class: methodClass
  		meta: methodClass isMeta
  		category: (methodClass organization categoryOfElement: methodSelector)
  		selector: methodSelector!

Squeak-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]