GUI Ignoring Changes to figure.Pointer Without a pause() command
3 views (last 30 days)
Hello, apologies if this has been answered before. I couldn't find a satisfactory issue like this, despite quite a few questions on changing the cursor.
I am building an app and at one button press a number of functions are taking place in the background. In lieu of making a waitbar, I just want the cursor to change the "watch" for the duration of the operation and back to "arrow" when done.
I know this is accomplished simply enough by changing the Figure property Pointer. Indeed, I do this by the following:
function buttonCallback(hObject, event)
figH = getappdata(hObject, 'parentFig');
% SOME CODE GETTING INPUTS FROM USER
figH.Pointer = 'watch';
% ANALYZING DATA CODE
figH.Pointer = 'arrow';
% Some cleanup code
The strange thing here is that this doesn't work. HOWEVER, it does work if I put a breakpoint in the line after I set the cursor to "watch". This gave the me the idea to put in a wait() command in such that:
figH.Pointer = 'watch'; pause(0.001);
This fixes the issue. Even stranger I don't have to put the wait in the resetting back to an arrow cursor.
This seems like a bit of a kludge to me, and I'd be curious as to what a better. or perhaps a more MATLAB-esque way to do this would be. Or, if it is correct, I'm confused as to why this is necessary. I have a different function that changes the mouse cursor depending on where it is in the app and that works perfectly great without a 'pause'.
Thank you for your time.
I am using 2018b, and I am NOT using GUIDE if that is relevant.