enthought/chaco — pull request #195 by SDiot (2014-05-21 15:47:09+00:00)
Title: Fixing Bad behavior of AspectRatio for ZoomTool by updating better_selecting_zoom.py

Hello,

This follows issue #191 that I posted a month ago.
This is just a copy and paste of #191 but this time as a pull request.
This was also the topic of the pull request #132 but it has not been done and closed.
I'm thus trying to do it again so that it's done since I need it for a project.

I don't know what are the other steps required to ensure the pull-request will be done, so I'm looking forward for your feedback!

Thanks in advance,

S.D.

----------------------------
PROBLEM and FIX:

I was trying to use the aspect_ratio keyword of ZoomTool and was expecting:
1) the blue overlay that show the box zoom to be forced to respect the aspect_ratio
2) the final zoomed view to correspond to the blue overlay

Unfortunately, while 1) is indeed the case, 2) is not. The zoom is actually done according to the mouse position at the time of unclicking. I think that is a bug since it implies that the aspect_ratio is not respected.

Looking at the file better_selecting_zoom.py, this is due to self._screen_end being set to (event.x, event.y) when entering _end_select on line 330. Because of that the appropriate value of self._screen_end that is set in selecting_mouse_move according to the aspect_ratio keyword is forgotten.

After commenting line 330 of file better_selecting_zoom.py, I obtain the exact behavior I was expecting.

A simple example is given here: https://github.com/SDiot/chaco_troubles/blob/master/ZoomTool_AspectRatio.py (Just have to follow the steps given in the file doc string!)

I think that this is a bug and should be fixed. If it's not, please let me know why! :)

Thanks!

S.D.