Fixing 'GLUT_BORDERLESS' on Windows per e-mail from Eero Pajarre dated 4/24/2011...
[freeglut] / src / freeglut_window.c
index 800342d..0c56fe1 100644 (file)
@@ -1120,6 +1120,11 @@ void fgOpenWindow( SFG_Window* window, const char* title,
         window->Window.Context
     );
 
+    /* register extension events _before_ window is mapped */
+    #ifdef HAVE_X11_EXTENSIONS_XINPUT2_H
+       fgRegisterDevices( fgDisplay.Display, &(window->Window.Handle) );
+    #endif
+
     XMapWindow( fgDisplay.Display, window->Window.Handle );
 
     XFree(visualInfo);
@@ -1281,11 +1286,15 @@ void fgOpenWindow( SFG_Window* window, const char* title,
     else if ( fgState.DisplayMode & GLUT_BORDERLESS )
     {
         SetWindowLong ( window->Window.Handle, GWL_STYLE,
-                        WindowStyle & ~(WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX));
+                        WindowStyle & ~(WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_DLGFRAME | WS_SIZEBOX));
     }
 /*  SetWindowPos(window->Window.Handle, NULL, 0, 0, 0, 0,
      SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); */
 
+    /* Enable multitouch: additional flag TWF_FINETOUCH, TWF_WANTPALM */
+    #ifdef WM_TOUCH
+       RegisterTouchWindow( window->Window.Handle, TWF_FINETOUCH | TWF_WANTPALM );
+    #endif
 
 #if defined(_WIN32_WCE)
     ShowWindow( window->Window.Handle, SW_SHOW );
@@ -1316,6 +1325,12 @@ void fgOpenWindow( SFG_Window* window, const char* title,
  */
 void fgCloseWindow( SFG_Window* window )
 {
+    /* if we're in gamemode, call glutLeaveGameMode first to make sure the
+     * gamemode is properly closed before closing the window
+     */
+    if (fgStructure.GameModeWindow != NULL)
+        glutLeaveGameMode();
+
 #if TARGET_HOST_POSIX_X11
 
     if( window->Window.Context )