Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Simplify interactive zoom handling. #16831

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 14, 2020
Merged

Simplify interactive zoom handling. #16831

merged 1 commit into from
Apr 14, 2020

Conversation

anntzer
Copy link
Contributor

@anntzer anntzer commented Mar 19, 2020

  • Stash all the relevant variables (start click position, start click
    button, list of axes, callback id) into a single dict (_zoom_info).
  • start_x/start_y is the same for all axes (it's in screen coordinates)
    so just store it once (under start_xy) instead of repeatedly.
  • Immediatedly exit if no axes are selected (not axes) instead of
    later checking self._xypress.
  • Remove the "cancel zoom if another button is pressed feature": that
    second button is going to get released anyways, so the release_event
    for that second button is going to handle the cancellation just fine.
    (More specifically, the second button press will throw away the first
    zoom and start a new zoom session from the new starting point, and
    then the button release will be detected as a zoom cancelled because
    <5px.)
  • Simplify twinx/y detection.
  • Resolve zoom direction from the beginning.

PR Summary

PR Checklist

  • Has Pytest style unit tests
  • Code is Flake 8 compliant
  • New features are documented, with examples if plot related
  • Documentation is sphinx and numpydoc compliant
  • Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
  • Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way

@anntzer anntzer added this to the v3.3.0 milestone Mar 19, 2020
Copy link
Member

@efiring efiring left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the consolidation in _zoom_info. I have only 2 minor comments.

@anntzer anntzer force-pushed the zoom branch 2 times, most recently from e5a543c to 9a94984 Compare April 8, 2020 05:41
@QuLogic
Copy link
Member

QuLogic commented Apr 13, 2020

A rebase should fix CI, I think.

- Stash all the relevant variables (start click position, start click
  button, list of axes, callback id) into a single dict (`_zoom_info`).
- start_x/start_y is the same for all axes (it's in screen coordinates)
  so just store it once (under `start_xy`) instead of repeatedly.
- Immediatedly exit if no axes are selected (`not axes`) instead of
  later checking `self._xypress`.
- Remove the "cancel zoom if another button is pressed feature": that
  second button is going to get released anyways, so the release_event
  for that second button is going to handle the cancellation just fine.
  (More specifically, the second button press will throw away the first
  zoom and start a new zoom session from the new starting point, and
  then the button release will be detected as a zoom cancelled because
  <5px.)
- Simplify twinx/y detection.
- Resolve zoom direction from the beginning.
@anntzer
Copy link
Contributor Author

anntzer commented Apr 13, 2020

let's try that

@QuLogic QuLogic merged commit 74e7684 into matplotlib:master Apr 14, 2020
@anntzer anntzer deleted the zoom branch April 14, 2020 07:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants