If anyone can spot anything I'm missing then let me
I think part of the problem lies with the methods
on Editor of translateMouseEvent and retranslateMouseEvent. These are called by
various modes, which means that no other mode can be sure if the mouse event it
is passed has already been scaled or not.
I'd suggest these methods should return a new copy
of a MouseEvent rather than amending its input, that's a nasty side
Better still we could subclass MouseEvent to
contain both scaled and unscaled co-ordinates and pass this specialist
MouseEvent around instead.
In the meantime though I'd like to find a
workaround for the current problem. This is around the mouseDragged method of
ModeSelect, I've done some refactoring so I can see what's going on a bit more
clearly but I've had no luck so far in solving this.
Those using ArgoUML can easily reproduce the bug
with that, just zoom in or out and then draw a selection rectangle. I'll but a
demo into BasicApplication also.