Can I use ButtonDownFcn on a figure axes not associated with a gui?

1 view (last 30 days)
Using 2014b, I have a script that creates a figure with three axes, and plots some lines and a legend on each.
When the user clicks or zooms on one of the axes, I want it to call a certain function. I am attempting to use ButtonDownFcn for this, but the function is not being called.
I set all axes children to have HitTest off, and verified this is the case.
The code I use when creating the figure is:
set(fig_handle.CurrentAxes,'ButtonDownFcn', @set_ticks)
What am I doing wrong?

Accepted Answer

Walter Roberson
Walter Roberson on 11 Sep 2015
Zoom and Pan mode replace the ButtonDownFcn with their own. For a broad range of versions before R2014b a work-around was known involving turning off a setting that was preventing the callbacks from being changed back. With Handle Graphics 2 in R2014b the way that Zoom and Pan work changed, and I have not yet heard any method to achieve this purpose (there might be one, I just might not have encountered it.)
  1 Comment
Art
Art on 11 Sep 2015
Thanks! I did some searching and trial and error and found this:
hpan = pan(fig_handle);
hpan.ActionPostCallback = @set_ticks;
hzoom = zoom(fig_handle.CurrentAxes);
hzoom.ActionPostCallback = @set_ticks
This works perfectly (I have the function insert text for the XTickLabels at the current auto-generated tickmarks, and reset them to the current XTicks if the axes is zoomed or panned)

Sign in to comment.

More Answers (1)

Art
Art on 11 Sep 2015
So apparently my code IS working, but doesn't work when I have the Zoom or Pan buttons enabled. Is there a way to make ButtonDownFcn work from botton presses that originate from Zoom or Pan?

Categories

Find more on Data Exploration in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!