diff -r 4fe491fe114c -r 52ba70a79ce9 Menu.st --- a/Menu.st Wed Jan 11 15:18:54 2006 +0100 +++ b/Menu.st Wed Jan 11 15:46:27 2006 +0100 @@ -640,17 +640,54 @@ !Menu methodsFor:'converting'! -asOldStylePopUpMenu +asOldStylePopUpMenuFor:anApplicationOrNil "a temporary kludge - will vanish, when oldStyle MenuView and PopUpMenu are gone" - |menuView| + |menuView itemsShown| + + itemsShown := items select:[:each | + |visibilityInItem| + + visibilityInItem := each isVisible. + visibilityInItem isNil ifTrue:[ + true + ] ifFalse:[ + visibilityInItem isBoolean ifTrue:[ + visibilityInItem + ] ifFalse:[ + visibilityInItem isSymbol ifTrue:[ + (anApplicationOrNil perform:visibilityInItem) value. + ] ifFalse:[ + visibilityInItem value + ]. + ]. + ]. + ]. menuView := MenuView - labels:(items collect:[:each | each label]) - selectors:(items collect:[:each | each value]) - args:(items collect:[:each | each argument]) + labels:(itemsShown collect:[:each | each label]) + selectors:(itemsShown collect:[:each | each value]) + args:(itemsShown collect:[:each | each argument]) receiver:receiver. + itemsShown do:[:each | + |enabledInItem enabled| + + enabledInItem := each enabled. + enabledInItem notNil ifTrue:[ + enabledInItem isSymbol ifTrue:[ + enabled := (anApplicationOrNil perform:enabledInItem). + ] ifFalse:[ + enabledInItem isBoolean ifTrue:[ + enabled := enabledInItem + ]. + ]. + enabled value ifFalse:[ + menuView disable:(each value) + ]. + ]. + ]. + menuView actions:(items collect:[:each | [ receiver perform:each value ]]). ^ PopUpMenu forMenu:menuView @@ -1093,5 +1130,5 @@ !Menu class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.62 2006-01-11 14:18:54 cg Exp $' + ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.63 2006-01-11 14:46:27 cg Exp $' ! !