On 18 November 2012 10:29, Sebastian Nozzi <[email protected]> wrote: > I came up with this... does what I need and I have no visual > artifacts anymore. Still, I'm not happy for having to override a > private method in order for this to work... :-/ > > Overridden existing method in my Morph subclass: > > privateFullMoveBy: delta > super privateFullMoveBy: delta. > (self wantsToConstrainDragging & self isBeingDragged) > ifTrue: [ self adjustPositionWhileDragging ] > > New methods in my Morph subclass: > > isBeingDragged > ^ self owner isHandMorph > > wantsToConstrainDragging > ^ true > > adjustPositionWhileDragging > self position: (self constrainedDragPositionFrom: (self topLeft)) > > constrainedDragPositionFrom: aNonConstrainedPosition > "Adjust the position to be constrained however you want. In this case > horizontally at y=450" > ^ (aNonConstrainedPosition x) @ 450. > > You would need to override only "wantsToConstrainDragging" and > "constrainedDragPositionFor:". > > Any critique to the code and/or naming welcome! :-)
the main problem of morphic code that it is impossible to critique it.. all you can do is just study it, cut the cruft out, and only then you can see whether design was sound or not and try to critique :) what i would propose, is to not narrow it just for constraining dragging. i think better would be to say 'wants to constrain own movement/repositioning and/or resizing' but i cannot find a proper selector which would clearly tell the purpose for that :) also, i wouldn't be surprised, that if you do some archeology in morphic code, you will find behavior which already does what you did :) > > Cheers, > > Sebastian > -- Best regards, Igor Stasenko.
