[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23761] trunk/blender/source/blender: Add operator and operator type flag for GRAB_POINTER, don' t coopt the OPTYPE_BLOCKING flag for that.

Martin Poirier theeth at yahoo.com
Sat Oct 10 19:19:49 CEST 2009


Revision: 23761
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23761
Author:   theeth
Date:     2009-10-10 19:19:49 +0200 (Sat, 10 Oct 2009)

Log Message:
-----------
Add operator and operator type flag for GRAB_POINTER, don't coopt the OPTYPE_BLOCKING flag for that.

It will check if either the operator or operator type flags are set on top of the user preference before grabbing the pointer.

I've set that flag for 3d view navigation operators, others should be set too (no transform, I'll deal with that one).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
    trunk/blender/source/blender/windowmanager/WM_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2009-10-10 16:17:33 UTC (rev 23760)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2009-10-10 17:19:49 UTC (rev 23761)
@@ -621,7 +621,7 @@
 	ot->poll= ED_operator_view3d_active;
 
 	/* flags */
-	ot->flag= OPTYPE_BLOCKING;
+	ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER;
 }
 
 /* ************************ viewmove ******************************** */
@@ -743,7 +743,7 @@
 	ot->poll= ED_operator_view3d_active;
 
 	/* flags */
-	ot->flag= OPTYPE_BLOCKING;
+	ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER;
 }
 
 /* ************************ viewzoom ******************************** */
@@ -976,7 +976,7 @@
 	ot->poll= ED_operator_view3d_active;
 
 	/* flags */
-	ot->flag= OPTYPE_BLOCKING;
+	ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER;
 
 	RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX);
 }

Modified: trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-10-10 16:17:33 UTC (rev 23760)
+++ trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-10-10 17:19:49 UTC (rev 23761)
@@ -330,8 +330,8 @@
 #define OPERATOR_PASS_THROUGH	8
 
 /* wmOperator flag */
+#define OP_GRAB_POINTER			1
 
-
 /* ************** wmEvent ************************ */
 /* for read-only rna access, dont save this */
 

Modified: trunk/blender/source/blender/windowmanager/WM_types.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_types.h	2009-10-10 16:17:33 UTC (rev 23760)
+++ trunk/blender/source/blender/windowmanager/WM_types.h	2009-10-10 17:19:49 UTC (rev 23761)
@@ -44,6 +44,7 @@
 #define OPTYPE_UNDO			2	/* do undo push after after */
 #define OPTYPE_BLOCKING		4	/* let blender grab all input from the WM (X11) */
 #define OPTYPE_MACRO		8
+#define OPTYPE_GRAB_POINTER	16	/* */
 
 /* context to call operator in for WM_operator_name_call */
 /* rna_ui.c contains EnumPropertyItem's of these, keep in sync */

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-10-10 16:17:33 UTC (rev 23760)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-10-10 17:19:49 UTC (rev 23761)
@@ -462,8 +462,10 @@
 		}
 		else if(retval & OPERATOR_RUNNING_MODAL) {
 			/* grab cursor during blocking modal ops (X11) */
-			if(ot->flag & OPTYPE_BLOCKING)
-				WM_cursor_grab(CTX_wm_window(C), (U.uiflag & USER_CONTINUOUS_MOUSE));
+			if(ot->flag & OPTYPE_BLOCKING) {
+				int warp = (U.uiflag & USER_CONTINUOUS_MOUSE) && ((op->flag & OP_GRAB_POINTER) || (ot->flag & OPTYPE_GRAB_POINTER));
+				WM_cursor_grab(CTX_wm_window(C), warp);
+			}
 		}
 		else
 			WM_operator_free(op);





More information about the Bf-blender-cvs mailing list