X11: open window on its previous position

Signed-off-by: Thomas Bernard <miniupnp@free.fr>
This commit is contained in:
Thomas Bernard 2018-07-03 14:49:12 +02:00
parent 80f2f681b3
commit 1d023c49e2
3 changed files with 13 additions and 1 deletions

View File

@ -1368,8 +1368,17 @@ int Get_input(int sleep_time)
case ConfigureNotify: case ConfigureNotify:
if (event.xconfigure.above == 0) if (event.xconfigure.above == 0)
{ {
int x_pos, y_pos;
unsigned int width, height, border_width, depth;
Window root_window;
Resize_width = event.xconfigure.width; Resize_width = event.xconfigure.width;
Resize_height = event.xconfigure.height; Resize_height = event.xconfigure.height;
if (XGetGeometry(X11_display, X11_window, &root_window, &x_pos, &y_pos, &width, &height, &border_width, &depth))
{
Config.Window_pos_x = event.xconfigure.x - x_pos;
Config.Window_pos_y = event.xconfigure.y - y_pos;
}
} }
break; break;
case ClientMessage: case ClientMessage:

View File

@ -1092,7 +1092,7 @@ void Program_shutdown(void)
} }
#endif #endif
// Config.Window_pos_x / Config.Window_pos_y are set in win32screen.c // Config.Window_pos_x / Config.Window_pos_y are set in win32screen.c
#else #elif !defined(USE_X11)
// 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;

View File

@ -46,6 +46,7 @@ void GFX2_Set_mode(int *width, int *height, int fullscreen)
unsigned long white, black; unsigned long white, black;
char * winName[] = { "GrafX2" }; char * winName[] = { "GrafX2" };
Visual * visual; Visual * visual;
(void)fullscreen;
if (X11_display == NULL) if (X11_display == NULL)
X11_display = XOpenDisplay(NULL);// NULL is equivalent to getenv("DISPLAY") X11_display = XOpenDisplay(NULL);// NULL is equivalent to getenv("DISPLAY")
@ -152,6 +153,8 @@ void GFX2_Set_mode(int *width, int *height, int fullscreen)
XSetWMProtocols(X11_display, X11_window, &wmDelete, 1); XSetWMProtocols(X11_display, X11_window, &wmDelete, 1);
XMapWindow(X11_display, X11_window); XMapWindow(X11_display, X11_window);
if (Config.Window_pos_x != 9999 && Config.Window_pos_y != 9999)
XMoveWindow(X11_display, X11_window, Config.Window_pos_x, Config.Window_pos_y);
} }
if (screen == NULL) if (screen == NULL)