Fixed SDL_SetWindowFullscreen on iOS to properly update the view's frame.

main
Alex Szpakowski 2014-07-22 16:48:35 -03:00
parent e02e34521a
commit cf2958a8de
1 changed files with 11 additions and 16 deletions

View File

@ -240,6 +240,7 @@ UIKit_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display
SDL_WindowData *windowdata = (SDL_WindowData *) window->driverdata;
SDL_uikitviewcontroller *viewcontroller = windowdata->viewcontroller;
UIWindow *uiwindow = windowdata->uiwindow;
CGRect bounds;
if (fullscreen || (window->flags & SDL_WINDOW_BORDERLESS)) {
[UIApplication sharedApplication].statusBarHidden = YES;
@ -253,13 +254,17 @@ UIKit_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display
}
#endif
CGRect bounds;
if (fullscreen) {
if (fullscreen || (window->flags & SDL_WINDOW_BORDERLESS)) {
bounds = [displaydata->uiscreen bounds];
} else {
bounds = [displaydata->uiscreen applicationFrame];
}
/* Update the view's frame to account for the status bar change. */
windowdata->view.frame = bounds;
[windowdata->view setNeedsLayout];
[windowdata->view layoutIfNeeded];
/* Get frame dimensions */
int width = (int) bounds.size.width;
int height = (int) bounds.size.height;
@ -268,21 +273,11 @@ UIKit_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display
screen to match, so we pick the closest to what we wanted.
*/
if (window->w >= window->h) {
if (width > height) {
window->w = width;
window->h = height;
window->w = SDL_max(width, height);
window->h = SDL_min(width, height);
} else {
window->w = height;
window->h = width;
}
} else {
if (width > height) {
window->w = height;
window->h = width;
} else {
window->w = width;
window->h = height;
}
window->w = SDL_min(width, height);
window->h = SDL_max(width, height);
}
}