Skip to content
Snippets Groups Projects
Commit 435d55d6 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

More hacking to make macOS happy...

Allow ALT+Arrow to resize from maximized by calling
SDL_RestoreWindow() first.  This should allow macOS users to escape
the weird window size mess it can start in.  Still no idea what is
actually happening there, but this should at least provide an "out"
now. :(
parent ae97eae2
Branches
Tags
No related merge requests found
......@@ -924,8 +924,8 @@ void sdl_video_event_thread(void *data)
if ((ev.key.keysym.mod & KMOD_ALT) &&
(ev.key.keysym.sym == SDLK_LEFT ||
ev.key.keysym.sym == SDLK_RIGHT)) {
// Don't allow ALT-DIR to change size when maximized...
if ((sdl.GetWindowFlags(win) & SDL_WINDOW_MAXIMIZED) == 0) {
if (sdl.GetWindowFlags(win) & SDL_WINDOW_MAXIMIZED)
sdl.RestoreWindow(win);
int w, h;
SDL_Rect r;
if (sdl.GetDisplayUsableBounds(0, &r) == 0) {
......@@ -941,7 +941,6 @@ void sdl_video_event_thread(void *data)
pthread_mutex_unlock(&vstatlock);
update_cvstat(&cvstat);
setup_surfaces(&cvstat);
}
break;
}
}
......@@ -1051,10 +1050,9 @@ void sdl_video_event_thread(void *data)
// Fall-through
case SDL_WINDOWEVENT_SIZE_CHANGED:
// SDL2: User resized window
case SDL_WINDOWEVENT_RESIZED: {
int flags = sdl.GetWindowFlags(win);
fullscreen = (flags & (SDL_WINDOW_FULLSCREEN | SDL_WINDOW_FULLSCREEN_DESKTOP)) != 0;
sdl.SetWindowResizable(win, (flags & (SDL_WINDOW_FULLSCREEN | SDL_WINDOW_FULLSCREEN_DESKTOP)) ? SDL_FALSE : SDL_TRUE);
case SDL_WINDOWEVENT_RESIZED:
fullscreen = !!(sdl.GetWindowFlags(win) & (SDL_WINDOW_FULLSCREEN | SDL_WINDOW_FULLSCREEN_DESKTOP));
sdl.SetWindowResizable(win, fullscreen ? SDL_FALSE : SDL_TRUE);
cio_api.mode=fullscreen?CIOLIB_MODE_SDL_FULLSCREEN:CIOLIB_MODE_SDL;
pthread_mutex_lock(&sdl_mode_mutex);
if (sdl_mode) {
......@@ -1064,7 +1062,6 @@ void sdl_video_event_thread(void *data)
pthread_mutex_unlock(&sdl_mode_mutex);
internal_setwinsize(&cvstat, false);
break;
}
case SDL_WINDOWEVENT_EXPOSED:
bitmap_drv_request_pixels();
break;
......
......@@ -214,6 +214,10 @@ int load_sdl_funcs(struct sdlfuncs *sdlf)
xp_dlclose(sdl_dll);
return(-1);
}
if((sdlf->RestoreWindow=xp_dlsym(sdl_dll, SDL_RestoreWindow))==NULL) {
xp_dlclose(sdl_dll);
return(-1);
}
#ifndef STATIC_SDL
{
int (HACK_HACK_HACK *ra)(char *name, Uint32 style, void *hInst);
......
......@@ -59,6 +59,7 @@ struct sdlfuncs {
void(HACK_HACK_HACK *free) (void *);
Uint32(HACK_HACK_HACK *GetWindowFlags) (SDL_Window * window);
int (HACK_HACK_HACK *GetDisplayUsableBounds) (int, SDL_Rect *);
void (HACK_HACK_HACK *RestoreWindow) (SDL_Window *);
int gotfuncs;
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment