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

H. Hirzel hannes.hirzel at gmail.com
Tue Jan 22 22:08:56 UTC 2013


Ok, this is a different approach from what Bert suggests

http://lists.squeakfoundation.org/pipermail/squeak-dev/2013-January/168158.html

to make it possible that closed Monticello windows are garbage
collected and with them MCDefinitions. Both apply to all windows.

What are the pros and cons?

--Hannes

On Tue, 22 Jan 2013 21:57:54.533 0000, commits at source.squeak.org
<commits at source.squeak.org> wrote:
> 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