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

H. Hirzel hannes.hirzel at gmail.com
Tue Jan 22 22:21:59 UTC 2013


Good to have this solution, thank you.
It will help me a lot as images grow older and larger (sometimes up to
80 MorphicProjects).

--Hannes

On 1/22/13, Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com> wrote:
> Bert's solution is simpler, so he shall better commit it to trunk and
> I will reject this one in treated inbox.
>
> 2013/1/22 H. Hirzel <hannes.hirzel at gmail.com>:
>> 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