From: Tupone A. <at...@us...> - 2004-02-23 22:46:27
|
Update of /cvsroot/bzflag/bzflag/src/platform In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10013/src/platform Modified Files: SDLDisplay.cxx SDLDisplay.h Log Message: SDL: mouse grab is ruled by set mousegrab on/off and used only in window mode fullscreen grab is handled/chosen by SDL Index: SDLDisplay.cxx =================================================================== RCS file: /cvsroot/bzflag/bzflag/src/platform/SDLDisplay.cxx,v retrieving revision 1.16 retrieving revision 1.17 diff -w -u -r1.16 -r1.17 --- SDLDisplay.cxx 23 Feb 2004 19:37:29 -0000 1.16 +++ SDLDisplay.cxx 23 Feb 2004 22:40:29 -0000 1.17 @@ -21,7 +21,8 @@ static int my = 0; SDLDisplay::SDLDisplay() : fullScreen(false), base_width(640), - base_height(480), oldFullScreen(false), + base_height(480), canGrabMouse(true), + oldFullScreen(false), oldWidth(0), oldHeight(0) { if (SDL_InitSubSystem(SDL_INIT_VIDEO) == -1) { @@ -420,6 +421,12 @@ if ((width == oldWidth) && (height == oldHeight) && (fullScreen == oldFullScreen)) return; + // Let SDL decide grabbing or not on fullscreen + if (!fullScreen) + if (canGrabMouse) + SDL_WM_GrabInput(SDL_GRAB_ON); + else + SDL_WM_GrabInput(SDL_GRAB_OFF); // save the values for the next oldWidth = width; oldHeight = height; @@ -448,6 +455,10 @@ } }; +void SDLDisplay::enableGrabMouse(bool on) { + canGrabMouse = on; +} + void SDLVisual::setDoubleBuffer(bool on) { SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, on ? 1 : 0); }; @@ -498,14 +509,6 @@ y = my; }; -void SDLWindow::grabMouse() { - SDL_WM_GrabInput(SDL_GRAB_ON); -}; - -void SDLWindow::ungrabMouse() { - SDL_WM_GrabInput(SDL_GRAB_OFF); -}; - void SDLWindow::setSize(int width, int height) { ((SDLDisplay *)getDisplay())->setWindowSize(width, height); }; @@ -541,6 +544,10 @@ OpenGLGState::initContext(); }; +void SDLWindow::enableGrabMouse(bool on) { + ((SDLDisplay *)getDisplay())->enableGrabMouse(on); +}; + #endif // Local Variables: *** Index: SDLDisplay.h =================================================================== RCS file: /cvsroot/bzflag/bzflag/src/platform/SDLDisplay.h,v retrieving revision 1.8 retrieving revision 1.9 diff -w -u -r1.8 -r1.9 --- SDLDisplay.h 23 Feb 2004 19:37:31 -0000 1.8 +++ SDLDisplay.h 23 Feb 2004 22:40:29 -0000 1.9 @@ -36,6 +36,7 @@ void setWindowSize(int width, int height); void getWindowSize(int& width, int& height) const; void doSetVideoMode(); + void enableGrabMouse(bool); private: bool fullScreen; bool doSetResolution(int) {return true;}; @@ -45,6 +46,7 @@ int min_height; int x; int y; + bool canGrabMouse; // to avoid flashing we memorize the old values used to build the window bool oldFullScreen; int oldWidth; @@ -82,8 +84,9 @@ void iconify(void); void warpMouse(int x, int y); void getMouse(int& x, int& y) const; - void grabMouse(); - void ungrabMouse(); + void grabMouse() {;}; + void ungrabMouse() {;}; + void enableGrabMouse(bool); void showMouse() {;}; void hideMouse() {;}; void setGamma(float newGamma); |