Browse Source

Store and restore caption and mouse visibility when using setMode (bug #142)

Bart van Strien 14 years ago
parent
commit
36226401bf
2 changed files with 14 additions and 0 deletions
  1. 8 0
      src/modules/graphics/opengl/Graphics.cpp
  2. 6 0
      src/modules/graphics/opengl/Graphics.h

+ 8 - 0
src/modules/graphics/opengl/Graphics.cpp

@@ -117,6 +117,11 @@ namespace opengl
 		//do we have scissor, if so, store the box
 		if (s.scissor)
 			glGetIntegerv(GL_SCISSOR_BOX, s.scissorBox);
+
+		char *cap = 0;
+		SDL_WM_GetCaption(&cap, 0);
+		s.caption = cap;
+		s.mouseVisible = (SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE) ? true : false;
 		return s;
 	}
 
@@ -136,6 +141,9 @@ namespace opengl
 			setScissor(s.scissorBox[0], s.scissorBox[1], s.scissorBox[2], s.scissorBox[3]);
 		else
 			setScissor();
+
+		setCaption(s.caption.c_str());
+		SDL_ShowCursor(s.mouseVisible ? SDL_ENABLE : SDL_DISABLE);
 	}
 
 	bool Graphics::setMode(int width, int height, bool fullscreen, bool vsync, int fsaa)

+ 6 - 0
src/modules/graphics/opengl/Graphics.h

@@ -93,6 +93,10 @@ namespace opengl
 		bool scissor;
 		GLint scissorBox[4];
 
+		// Window info.
+		std::string caption;
+		bool mouseVisible;
+
 		// Default values.
 		DisplayState()
 		{
@@ -112,6 +116,8 @@ namespace opengl
 			pointSize = 1.0f;
 			pointStyle = Graphics::POINT_SMOOTH;
 			scissor = false;
+			caption = "";
+			mouseVisible = true;
 		}
 
 	};