# HG changeset patch # User Claus Gittinger # Date 897002567 -7200 # Node ID 6b2e9e31cf062624b658ba3ffab8f3d90f264e4f # Parent eabfba82d601682e7b29bfeaee2e99b47bf5de11 do not redefine generated aspect methods (the first one generated will remain). diff -r eabfba82d601 -r 6b2e9e31cf06 UIPainterView.st --- a/UIPainterView.st Thu Jun 04 18:31:19 1998 +0200 +++ b/UIPainterView.st Fri Jun 05 01:22:47 1998 +0200 @@ -644,7 +644,7 @@ '!! !!\\') withCRs. ^ code - "Modified: / 26.10.1997 / 19:01:15 / cg" + "Modified: / 5.6.1998 / 01:17:41 / cg" ! generateAspectMethods @@ -652,7 +652,10 @@ - but do not overwrite existing ones. Return a string ready to compile into the application class." - |cls code skip menuSelector protoSpec thisCode| + |cls code skip menuSelector protoSpec thisCode + definedMethodSelectors| + + definedMethodSelectors := IdentitySet new. code := ''. @@ -674,10 +677,16 @@ (modelSelector := aProp model) notNil ifTrue:[ self generateCodeFrom:(Array with:modelSelector) in:cls do:[:aSel| + |sym| + + sym := aSel asSymbol. skip := false. (cls isSubclassOf:SimpleDialog) ifTrue:[ - skip := SimpleDialog implements:aSel asSymbol + skip := SimpleDialog implements:sym + ]. + (definedMethodSelectors includes:sym) ifTrue:[ + skip := true. ]. skip ifFalse:[ @@ -689,36 +698,55 @@ ] ifFalse:[ thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls). ]. - code := code, thisCode + code := code, thisCode. + definedMethodSelectors add:sym. ] ] ]. self generateCodeFrom:(aProp spec aspectSelectors) in:cls do:[:aSel| - thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls). - code := code , thisCode + |sym| + + sym := aSel asSymbol. + (definedMethodSelectors includes:sym) ifFalse:[ + thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls). + code := code , thisCode. + definedMethodSelectors add:sym. + ] ]. self generateCodeFrom:(aProp spec actionSelectors) in:cls do:[:aSel| - thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls). - code := code , thisCode + |sym| + + sym := aSel asSymbol. + (definedMethodSelectors includes:sym) ifFalse:[ + thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls). + code := code , thisCode. + definedMethodSelectors add:sym. + ] ]. self generateCodeFrom:(aProp spec valueSelectors) in:cls do:[:aSel| - "/ uppercase: - assume its a globals name. - aSel first isUppercase ifFalse:[ - thisCode := (self generateValueMethodFor:aSel spec:protoSpec inClass:cls). - code := code , thisCode + |sym| + + sym := aSel asSymbol. + (definedMethodSelectors includes:sym) ifFalse:[ + "/ uppercase: - assume its a globals name. + aSel first isUppercase ifFalse:[ + thisCode := (self generateValueMethodFor:aSel spec:protoSpec inClass:cls). + code := code , thisCode. + definedMethodSelectors add:sym. + ] ] ]. ]. ^ code - "Modified: / 21.4.1998 / 20:23:48 / cg" + "Modified: / 5.6.1998 / 01:21:35 / cg" ! generateCodeFrom:aListOfSelectors in:aClass do:aBlock