SDL2: restore window position on startup
This commit is contained in:
parent
58c53c33b8
commit
7de6a95291
12
src/input.c
12
src/input.c
@ -1608,6 +1608,18 @@ int Get_input(int sleep_time)
|
|||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT_MOVED:
|
case SDL_WINDOWEVENT_MOVED:
|
||||||
GFX2_Log(GFX2_DEBUG, "SDL_WINDOWEVENT_MOVED %d (%d, %d)\n", event.window.windowID, event.window.data1, event.window.data2);
|
GFX2_Log(GFX2_DEBUG, "SDL_WINDOWEVENT_MOVED %d (%d, %d)\n", event.window.windowID, event.window.data1, event.window.data2);
|
||||||
|
Config.Window_pos_x = event.window.data1;
|
||||||
|
Config.Window_pos_y = event.window.data2;
|
||||||
|
#if SDL_VERSION_ATLEAST(2, 0, 5)
|
||||||
|
{
|
||||||
|
// correct position by taking window decoration into account
|
||||||
|
int offset_x, offset_y;
|
||||||
|
if (SDL_GetWindowBordersSize(SDL_GetWindowFromID(event.window.windowID), &offset_y, &offset_x, NULL, NULL) == 0) {
|
||||||
|
Config.Window_pos_x -= offset_x;
|
||||||
|
Config.Window_pos_y -= offset_y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT_ENTER:
|
case SDL_WINDOWEVENT_ENTER:
|
||||||
GFX2_Log(GFX2_DEBUG, "SDL_WINDOWEVENT_ENTER %d\n", event.window.windowID);
|
GFX2_Log(GFX2_DEBUG, "SDL_WINDOWEVENT_ENTER %d\n", event.window.windowID);
|
||||||
|
|||||||
@ -1251,7 +1251,7 @@ void Program_shutdown(void)
|
|||||||
Config.Window_pos_y = windowplacement.rcNormalPosition.top;
|
Config.Window_pos_y = windowplacement.rcNormalPosition.top;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif !defined(USE_X11)
|
#elif !defined(USE_X11) && !defined(USE_SDL2)
|
||||||
// All other targets: irrelevant dimensions.
|
// All other targets: irrelevant dimensions.
|
||||||
// Do not attempt to force them back on next program run.
|
// Do not attempt to force them back on next program run.
|
||||||
Config.Window_pos_x = 9999;
|
Config.Window_pos_x = 9999;
|
||||||
|
|||||||
@ -153,7 +153,9 @@ void GFX2_Set_mode(int *width, int *height, int fullscreen)
|
|||||||
// SDL2
|
// SDL2
|
||||||
if (Window_SDL == NULL)
|
if (Window_SDL == NULL)
|
||||||
{
|
{
|
||||||
Window_SDL = SDL_CreateWindow("GrafX2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
Window_SDL = SDL_CreateWindow("GrafX2",
|
||||||
|
Config.Window_pos_x != 9999 ? Config.Window_pos_x : (int)SDL_WINDOWPOS_UNDEFINED,
|
||||||
|
Config.Window_pos_y != 9999 ? Config.Window_pos_y : (int)SDL_WINDOWPOS_UNDEFINED,
|
||||||
*width, *height, (fullscreen?SDL_WINDOW_FULLSCREEN:SDL_WINDOW_RESIZABLE));
|
*width, *height, (fullscreen?SDL_WINDOW_FULLSCREEN:SDL_WINDOW_RESIZABLE));
|
||||||
SDL_SetWindowIcon(Window_SDL, icon);
|
SDL_SetWindowIcon(Window_SDL, icon);
|
||||||
Renderer_SDL = SDL_CreateRenderer(Window_SDL, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
Renderer_SDL = SDL_CreateRenderer(Window_SDL, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user