function figure_size = getnicedialoglocation(figure_size, figure_units) % adjust the specified figure position to fig nicely over GCBF % or into the upper 3rd of the screen % Copyright 1999-2010 The MathWorks, Inc. parentHandle = gcbf; convertData.destinationUnits = figure_units; if ~isempty(parentHandle) % If there is a parent figure convertData.hFig = parentHandle; convertData.size = get(parentHandle,'Position'); convertData.sourceUnits = get(parentHandle,'Units'); c = []; else % If there is no parent figure, use the root's data % and create a invisible figure as parent convertData.hFig = figure('visible','off'); convertData.size = get(0,'ScreenSize'); convertData.sourceUnits = get(0,'Units'); c = onCleanup(@() close(convertData.hFig)); end % Get the size of the dialog parent in the dialog units container_size = hgconvertunits(convertData.hFig, convertData.size ,... convertData.sourceUnits, convertData.destinationUnits, get(convertData.hFig,'Parent')); delete(c); figure_size(1) = container_size(1) + 1/2*(container_size(3) - figure_size(3)); figure_size(2) = container_size(2) + 2/3*(container_size(4) - figure_size(4));