App designer: UIAxis ButtonDownFcn with key modifier?
27 views (last 30 days)
I am using the app designer to design a small program, part of this involves getting the user to click on an axis. I use a ButtonDownFcn callback to get the location of the user's mouse click. I use this to select something plotted in the axis, that all works fine.
However, I would like to detect when the mouse click is associated with a modifier key press, such as ctrl or shift, so that the user can click on multiple items. I haven't found a way to do this.
There is the KeyPressFcn, but I'm not sure if this can be combined with the ButtonDownFcn? The UIAxis also stores a CurrentCharacter value, but this only tells me the last key pressed when the axis was selected, not that the current mouse click was simultaneous with a mouse click.
Does anyone have any ideas?
Walter Roberson on 1 May 2023
It isn't pretty... but if you set pickable parts false on your graphic objects but leave it true on your figure, then you can use a figure or uifigure button down function callback, in which case you can refer to the SelectionType property
You will probably want to test whether the CurrentPoint is inside a particular axes. For traditional figures there is an undocumented function https://undocumentedmatlab.com/matlab/wp-content/cache/all/articles/undocumented-mouse-pointer-functions/index.html . I do not know if it is available for uifigure
Simon Chan on 1 May 2023
You may combine several callbacks to achieve your goal.
The attached example uses WIndowKeyPressFcn and WindowReleaseFcn from a uifigure, with a combination of ButtonDownFcn on a primitive line.
With the 'control' or 'shift' key pressed, it display the x- or y-values of the clicked points respectively. On the other hand, you can configure it to do something else when no key is pressed with mouse click.