Date: Sun, 1 Sep 2002 21:27:54 -0400 (EDT)
authorSam Lantinga <slouken@libsdl.org>
Mon, 02 Sep 2002 15:58:29 +0000
changeset 485ffa4ca907c67
parent 484 4d7ae45ce9e3
child 486 8b1c1ae7af11
Date: Sun, 1 Sep 2002 21:27:54 -0400 (EDT)
From: "Ryan C. Gordon"
Subject: [SDL] Minor X11 hack:

Here's a patch to center a newly-created, non-fullscreen X11 window.
While this may or may not be suitable for adding to SDL officially, I
didn't want to put any Xlib dependencies in my code directly.

To use:

- Apply patch/rebuild.
- export SDL_WINDOW_POS=center
- Call SDL_SetVideoMode as needed.

(Ideally, this could be expanded to handle other commands like
SDL_WINDOW_POS=20x190, etc, and could be implemented for other targets,
but this is really a hack to avoid API changes).
src/video/x11/SDL_x11video.c
     1.1 --- a/src/video/x11/SDL_x11video.c	Sun Sep 01 19:34:01 2002 +0000
     1.2 +++ b/src/video/x11/SDL_x11video.c	Mon Sep 02 15:58:29 2002 +0000
     1.3 @@ -870,6 +870,18 @@
     1.4  			screen->flags |= SDL_FULLSCREEN;
     1.5  			X11_EnterFullScreen(this);
     1.6  		} else {
     1.7 +			/* Position standalone window based on user request. --ryan. */
     1.8 +			const char *envr = getenv("SDL_WINDOW_POS");
     1.9 +			if (envr != NULL) {
    1.10 +				int xscreen = DefaultScreen(SDL_Display);
    1.11 +				if (strcmp(envr, "center") == 0) {
    1.12 +					int disw = DisplayWidth(SDL_Display, xscreen);
    1.13 +					int dish = DisplayHeight(SDL_Display, xscreen);
    1.14 +					int centerx = (disw - current_w) / 2;
    1.15 +					int centery = (dish - current_h) / 2;
    1.16 +					XMoveWindow(SDL_Display, WMwindow, centerx, centery);
    1.17 +				}
    1.18 +			}
    1.19  			screen->flags &= ~SDL_FULLSCREEN;
    1.20  		}
    1.21  	}