diff engine/core/video/cursor.cpp @ 261:4fa875d06e28

A workaround for a bug in SDL which makes the cursor jump when SDL_ShowCursor() is called. This patch does not completely fix the problem, but at least makes the editor usable in fullscreen mode.
author cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
date Tue, 09 Jun 2009 01:09:05 +0000
parents f2195628947b
children 37d2b163ef5a
line wrap: on
line diff
--- a/engine/core/video/cursor.cpp	Mon Jun 08 21:04:43 2009 +0000
+++ b/engine/core/video/cursor.cpp	Tue Jun 09 01:09:05 2009 +0000
@@ -95,11 +95,20 @@
 	void Cursor::set(MouseCursorType ctype, unsigned int cursor_id) {
 		m_cursor_id = cursor_id;
 		m_cursor_type = ctype;
+		int mx, my;
+		SDL_GetMouseState(&mx, &my);
+
 		if (ctype == CURSOR_NATIVE) {
-			SDL_ShowCursor(1);
+			if (!SDL_ShowCursor(1)) {
+				SDL_PumpEvents();
+				SDL_WarpMouse(mx, my);
+			}
 			setNativeCursor(cursor_id);
 		} else {
-			SDL_ShowCursor(0);
+			if (SDL_ShowCursor(0)) {
+				SDL_PumpEvents();
+				SDL_WarpMouse(mx, my);
+			}
 			if (ctype == CURSOR_ANIMATION) {
 				m_animtime = m_timemanager->getTime();
 			}