Defining the pie wedge's geometryNotice that you can pick up the pie wedge by clicking anywhere within the imaginary circle from which the wedge was cut. The wedge inherits this behavior from circleMorph.
We need to redefine the method baseContainsPt:, which is the test used to define whether a point is within a morph.
baseContainsPt: p = (| v. angle. | v: (p - center) xAxisReflect. "expect y to increase vertically" angle: v thetaDegrees. v r > radius ifTrue: [ ^false ]. (angle >= startAngle) && [angle <= (startAngle + spanAngle)] )We need to transform from the display coordinate system (which has y increasing downwards) to the coordinate system we're using within wedges, which assumes y increases upwards; hence the xAxisReflect.
Once this method is entered, the morph can only be picked up by clicking in its visible area.