MATLAB: How to deactive ButtonDownFcn temporarily

buttondownfcnginputMATLAB

I am using ginput to select a point within a plotted area. The function ginput allows the button to be pressed and the x,y values to be picked up, even when the button is pressed while outside the selected plot. I can easily restrict the code to accept only those points that are within the plot.
However, I have many action buttons outside the plot. While moving the cursor during selection of a point using ginput, if I click on any of those buttons inadvertantly, the button action is activated. I do not want that to happen. I could set a flag IgnoreButtonPressFlag just before I call ginout and then check this flag in each of the many ButtonDownFcn callbacks. That sounds inefficient. Is there a way to deactivate the ButtonDownFcn function only when I am in the midst of selecting a point with ginput and then activate it right after ginput?

Best Answer

  • See my functions, attached, that will let you disable all the controls on your figure.
    The function DisableControls() lets you disable all controls on your GUIDE figure.
    Then there is a function EnableControls() to re-enable all the controls that got disabled.
    You call them like this:
    % Disable controls.
    WasEnabled = DisableControls(handles, 'Watch');
    % Now code that the user interacts with where you don't want them to click anything else .....
    % When done with all that.....
    % Now, re-enable the disabled controls that we had disabled previously.
    EnableControls(WasEnabled);