[squeak-dev] The Inbox: Morphic-nice.635.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Jan 22 21:59:40 UTC 2013


A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-nice.635.mcz

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

Name: Morphic-nice.635
Author: nice
Time: 22 January 2013, 10:57:07.833 pm
UUID: 3a69be3a-68a2-47aa-86e5-1aa7147bcb38
Ancestors: Morphic-dtl.634

Let TheWorldMainDockingBar points weakly on opened windows.
Otherwise they won't be garbage collected until next time the 'windows' menu is opened.

=============== Diff against Morphic-dtl.634 ===============

Item was changed:
  ----- Method: TheWorldMainDockingBar>>listWindowsOn: (in category 'submenu - windows') -----
  listWindowsOn: menu
  
  	| windows |
  	windows := SortedCollection sortBlock: [:winA :winB |
  		winA model name = winB model name
  			ifTrue: [winA label < winB label]
  			ifFalse: [winA model name < winB model name]].
  	windows addAll: self allVisibleWindows.
  	windows ifEmpty: [ 
  		menu addItem: [ :item | 
  			item
  				contents: 'No Windows' translated;
  				isEnabled: false ] ].
  	windows do: [ :each |
+ 		| weak |
+ 		weak := WeakArray with: each.
  		menu addItem: [ :item |
  			item 
  				contents: (self windowMenuItemLabelFor: each);
  				icon: (self colorIcon: each model defaultBackgroundColor);
- 				target: each;
- 				selector: #comeToFront;
  				subMenuUpdater: self
+ 					selector: #windowMenuFor:on:
+ 					arguments: { weak };
+ 				action: [ weak first ifNotNil: [:w | w activateAndForceLabelToShow; expand ] ] ] ].!
- 				selector: #windowMenuFor:on:
- 				arguments: { each };
- 				action: [ each activateAndForceLabelToShow; expand ] ] ].!

Item was changed:
  ----- Method: TheWorldMainDockingBar>>windowMenuFor:on: (in category 'submenu - windows') -----
+ windowMenuFor: weakArray on: menu
+ 	weakArray first
+ 		ifNil:
+ 			[menu 
+ 				addItem: [ :item |
+ 					item
+ 						contents: 'already closed...' translated ;
+ 						isEnabled: false ]]
+ 		ifNotNil:
+ 			[:window |
+ 			menu 
+ 				addItem: [ :item |
+ 					item
+ 						contents: 'Close' translated ;
+ 						target: window;
+ 						selector: #delete ];
+ 				addItem: [ :item |
+ 					item
+ 						contents: 'Close all like this' translated ;
+ 						target: self;
+ 						selector: #closeAllWindowsLike:;
+ 						arguments: { window } ];
+ 				addItem: [ :item |
+ 					item
+ 						contents: 'Close all but this' translated ;
+ 						target: self;
+ 						selector: #closeAllWindowsBut:;
+ 						arguments: { window } ];
+ 				addItem: [ :item |
+ 					item 
+ 						contents: 'Expand or Contract' translated ;
+ 						target: window;
+ 						selector: #expandBoxHit ] ]!
- windowMenuFor: window on: menu
- 	menu 
- 		addItem: [ :item |
- 			item
- 				contents: 'Close' translated ;
- 				target: window;
- 				selector: #delete ];
- 		addItem: [ :item |
- 			item
- 				contents: 'Close all like this' translated ;
- 				target: self;
- 				selector: #closeAllWindowsLike:;
- 				arguments: { window } ];
- 		addItem: [ :item |
- 			item
- 				contents: 'Close all but this' translated ;
- 				target: self;
- 				selector: #closeAllWindowsBut:;
- 				arguments: { window } ];
- 		addItem: [ :item |
- 			item 
- 				contents: 'Expand or Contract' translated ;
- 				target: window;
- 				selector: #expandBoxHit ]!



More information about the Squeak-dev mailing list