Date: Sun, 1 Sep 2002 21:27:54 -0400 (EDT)
authorSam Lantinga <slouken@libsdl.org>
Mon, 02 Sep 2002 15:58:29 +0000
changeset 485 ffa4ca907c67
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
--- a/src/video/x11/SDL_x11video.c	Sun Sep 01 19:34:01 2002 +0000
+++ b/src/video/x11/SDL_x11video.c	Mon Sep 02 15:58:29 2002 +0000
@@ -870,6 +870,18 @@
 			screen->flags |= SDL_FULLSCREEN;
 			X11_EnterFullScreen(this);
 		} else {
+			/* Position standalone window based on user request. --ryan. */
+			const char *envr = getenv("SDL_WINDOW_POS");
+			if (envr != NULL) {
+				int xscreen = DefaultScreen(SDL_Display);
+				if (strcmp(envr, "center") == 0) {
+					int disw = DisplayWidth(SDL_Display, xscreen);
+					int dish = DisplayHeight(SDL_Display, xscreen);
+					int centerx = (disw - current_w) / 2;
+					int centery = (dish - current_h) / 2;
+					XMoveWindow(SDL_Display, WMwindow, centerx, centery);
+				}
+			}
 			screen->flags &= ~SDL_FULLSCREEN;
 		}
 	}