function setdefaultbutton(figHandle, btnHandle) % WARNING: This feature is not supported in MATLAB and the API and % functionality may change in a future release. %SETDEFAULTBUTTON Set default button for a figure. % SETDEFAULTBUTTON(BTNHANDLE) sets the button passed in to be the default button % (the button and callback used when the user hits "enter" or "return" % when in a dialog box. % % This function is used by inputdlg.m, msgbox.m, questdlg.m and % uigetpref.m. % % Example: % % f = figure; % b1 = uicontrol('style', 'pushbutton', 'string', 'first', ... % 'position', [100 100 50 20]); % b2 = uicontrol('style', 'pushbutton', 'string', 'second', ... % 'position', [200 100 50 20]); % b3 = uicontrol('style', 'pushbutton', 'string', 'third', ... % 'position', [300 100 50 20]); % setdefaultbutton(b2); % % Copyright 2005-2007 The MathWorks, Inc. %--------------------------------------- NOTE ------------------------------------------ % This file was copied into matlab/toolbox/local/private. % These two files should be kept in sync - when editing please make sure % that *both* files are modified. % Nargin Check if nargin<1, error('MATLAB:setdefaultbutton:InvalidNumberOfArguments','Too few arguments for setdefaultbutton'); end if nargin>2, error('MATLAB:setdefaultbutton:InvalidNumberOfArguments','Too many arguments for setdefaultbutton'); end try ujava = feature('javafigures'); catch ujava = true; end if ujava && (usejava('awt') == 1) % We are running with Java Figures useJavaDefaultButton(figHandle, btnHandle) else % We are running with Native Figures useHGDefaultButton(figHandle, btnHandle); end function useJavaDefaultButton(figH, btnH) % Get a UDD handle for the figure. fh = handle(figH); % Call the setDefaultButton method on the figure handle fh.setDefaultButton(btnH); end function useHGDefaultButton(figHandle, btnHandle) % First get the position of the button. btnPos = getpixelposition(btnHandle); % Next calculate offsets. leftOffset = btnPos(1) - 1; bottomOffset = btnPos(2) - 2; widthOffset = btnPos(3) + 3; heightOffset = btnPos(4) + 3; % Create the default button look with a uipanel. % Use black border color even on Mac or Windows-XP (XP scheme) since % this is in natve figures which uses the Win2K style buttons on Windows % and Motif buttons on the Mac. h1 = uipanel(get(btnHandle, 'Parent'), 'HighlightColor', 'black', ... 'BorderType', 'etchedout', 'units', 'pixels', ... 'Position', [leftOffset bottomOffset widthOffset heightOffset]); % Make sure it is stacked on the bottom. uistack(h1, 'bottom'); end end