[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25233] trunk/blender/source/blender: grabcursor attribute stores full grab mode so we can better differentiate when it needs to wrap around cursor draw .

Martin Poirier theeth at yahoo.com
Wed Dec 9 05:51:36 CET 2009


Revision: 25233
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25233
Author:   theeth
Date:     2009-12-09 05:51:35 +0100 (Wed, 09 Dec 2009)

Log Message:
-----------
grabcursor attribute stores full grab mode so we can better differentiate when it needs to wrap around cursor draw.

Also add cocoa exception to wm_get_cursor_position (this should be fixed at the ghost level)

Modified Paths:
--------------
    trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_cursors.c
    trunk/blender/source/blender/windowmanager/intern/wm_draw.c
    trunk/blender/source/blender/windowmanager/intern/wm_window.c

Modified: trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-12-09 02:55:19 UTC (rev 25232)
+++ trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-12-09 04:51:35 UTC (rev 25233)
@@ -141,7 +141,7 @@
 	
 	int winid;		/* winid also in screens, is for retrieving this window after read */
 
-	short grabcursor; /* 1 if cursor is grabbed */
+	short grabcursor; /* cursor grab mode */
 	short pad;
 	
 	struct bScreen *screen;		/* active screen */

Modified: trunk/blender/source/blender/windowmanager/intern/wm_cursors.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_cursors.c	2009-12-09 02:55:19 UTC (rev 25232)
+++ trunk/blender/source/blender/windowmanager/intern/wm_cursors.c	2009-12-09 04:51:35 UTC (rev 25233)
@@ -181,7 +181,7 @@
 			else if (tabletdata->Active == GHOST_kTabletModeNone)
 				GHOST_SetCursorGrab(win->ghostwin, mode, bounds);
 
-			win->grabcursor = 1;
+			win->grabcursor = mode;
 		}
 	}
 }
@@ -191,7 +191,7 @@
 	if ((G.f & G_DEBUG) == 0) {
 		if(win && win->ghostwin) {
 			GHOST_SetCursorGrab(win->ghostwin, GHOST_kGrabDisable, NULL);
-			win->grabcursor = 0;
+			win->grabcursor = GHOST_kGrabDisable;
 		}
 	}
 }

Modified: trunk/blender/source/blender/windowmanager/intern/wm_draw.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_draw.c	2009-12-09 02:55:19 UTC (rev 25232)
+++ trunk/blender/source/blender/windowmanager/intern/wm_draw.c	2009-12-09 04:51:35 UTC (rev 25233)
@@ -41,7 +41,10 @@
 
 #include "BKE_context.h"
 #include "BKE_global.h"
+#include "BKE_utildefines.h"
 
+#include "GHOST_C-api.h"
+
 #include "ED_screen.h"
 
 #include "GPU_extensions.h"
@@ -74,7 +77,7 @@
 			for(pc= wm->paintcursors.first; pc; pc= pc->next) {
 				if(pc->poll == NULL || pc->poll(C)) {
 					ARegion *ar= CTX_wm_region(C);
-					if (win->grabcursor) {
+					if (ELEM(win->grabcursor, GHOST_kGrabWrap, GHOST_kGrabHide)) {
 						int x = 0, y = 0;
 						wm_get_cursor_position(win, &x, &y);
 						pc->draw(C, x - ar->winrct.xmin, y - ar->winrct.ymin, pc->customdata);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_window.c	2009-12-09 02:55:19 UTC (rev 25232)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c	2009-12-09 04:51:35 UTC (rev 25233)
@@ -977,7 +977,12 @@
 {
 	GHOST_GetCursorPosition(g_system, x, y);
 	GHOST_ScreenToClient(win->ghostwin, *x, *y, x, y);
+#if defined(__APPLE__) && defined(GHOST_COCOA)
+	//Cocoa has silly exception that should be fixed at the ghost level
+	//(ghost is an allegory for an invisible system specific code)
+#else
 	*y = (win->sizey-1) - *y;
+#endif
 }
 
 /* ******************* exported api ***************** */





More information about the Bf-blender-cvs mailing list