From f774a7299ff2cc23a1608267cdfc70bfb41930fd Mon Sep 17 00:00:00 2001 From: "John F. Fay" Date: Sat, 1 Dec 2007 23:34:55 +0000 Subject: [PATCH] Fixing the window position for asynchronous X11 implementations (e-mail by Jocelyn Frechot, Sun 11/25/2007 11:29 AM) git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@737 7f0cb862-5218-0410-a997-914c9d46530a --- src/freeglut_window.c | 41 +++++++++++++++-------------------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/src/freeglut_window.c b/src/freeglut_window.c index f6da23e..159b301 100644 --- a/src/freeglut_window.c +++ b/src/freeglut_window.c @@ -1315,35 +1315,24 @@ void FGAPIENTRY glutFullScreen( void ) { #if TARGET_HOST_POSIX_X11 - int x, y; - Window w; - XMoveResizeWindow( - fgDisplay.Display, - fgStructure.CurrentWindow->Window.Handle, - 0, 0, - fgDisplay.ScreenWidth, - fgDisplay.ScreenHeight - ); + Status status; /* Returned by XGetWindowAttributes(), not checked. */ + XWindowAttributes attributes; - XFlush( fgDisplay.Display ); /* This is needed */ - - XTranslateCoordinates( - fgDisplay.Display, - fgStructure.CurrentWindow->Window.Handle, - fgDisplay.RootWindow, - 0, 0, &x, &y, &w - ); + status = XGetWindowAttributes(fgDisplay.Display, + fgStructure.CurrentWindow->Window.Handle, + &attributes); + /* + * The "x" and "y" members of "attributes" are the window's coordinates + * relative to its parent, i.e. to the decoration window. + */ + XMoveResizeWindow(fgDisplay.Display, + fgStructure.CurrentWindow->Window.Handle, + -attributes.x, + -attributes.y, + fgDisplay.ScreenWidth, + fgDisplay.ScreenHeight); - if (x || y) - { - XMoveWindow( - fgDisplay.Display, - fgStructure.CurrentWindow->Window.Handle, - -x, -y - ); - XFlush( fgDisplay.Display ); /* XXX Shouldn't need this */ - } #elif TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) /* FIXME: what about WinCE */ RECT rect; -- 1.7.10.4