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.

Reply via email to