GUI Ignoring Changes to figure.Pointer Without a pause() command
4 views (last 30 days)
Show older comments
AstroGuy1984 on 5 Apr 2019
Commented: AstroGuy1984 on 8 Apr 2019
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.
Kevin Phung on 5 Apr 2019
add in a drawnow() command after you change the cursor.
More Answers (0)
Find more on Lighting, Transparency, and Shading 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!