[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24465] trunk/blender/source/blender/ windowmanager/intern/wm_event_system.c: Split operator internal call ( for python) between invoke and exec.

Martin Poirier theeth at yahoo.com
Tue Nov 10 21:44:10 CET 2009


Revision: 24465
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24465
Author:   theeth
Date:     2009-11-10 21:44:10 +0100 (Tue, 10 Nov 2009)

Log Message:
-----------
Split operator internal call (for python) between invoke and exec. Only invoke needs window (for event), no need to require it for exec too.

No functionality changes, except that operator called with exec when a window isn't present (say, bg mode) won't silently fail.

Modified Paths:
--------------
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-11-10 20:43:45 UTC (rev 24464)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-11-10 20:44:10 UTC (rev 24465)
@@ -498,12 +498,25 @@
 	int retval;
 
 	/* dummie test */
-	if(ot && C && window) {
-		event= window->eventstate;
+	if(ot && C) {
 		switch(context) {
+			case WM_OP_INVOKE_DEFAULT:
+			case WM_OP_INVOKE_REGION_WIN:
+			case WM_OP_INVOKE_AREA:
+			case WM_OP_INVOKE_SCREEN:
+				/* window is needed for invoke, cancel operator */
+				if (window == NULL)
+					return 0;
+				else
+					event= window->eventstate;
+				break;
+			default:
+				event = NULL;
+		}
+
+		switch(context) {
 			
 			case WM_OP_EXEC_REGION_WIN:
-				event= NULL;	/* pass on without break */
 			case WM_OP_INVOKE_REGION_WIN: 
 			{
 				/* forces operator to go to the region window, for header menus */
@@ -527,7 +540,6 @@
 				return retval;
 			}
 			case WM_OP_EXEC_AREA:
-				event= NULL;	/* pass on without break */
 			case WM_OP_INVOKE_AREA:
 			{
 					/* remove region from context */
@@ -540,7 +552,6 @@
 				return retval;
 			}
 			case WM_OP_EXEC_SCREEN:
-				event= NULL;	/* pass on without break */
 			case WM_OP_INVOKE_SCREEN:
 			{
 				/* remove region + area from context */
@@ -556,7 +567,6 @@
 				return retval;
 			}
 			case WM_OP_EXEC_DEFAULT:
-				event= NULL;	/* pass on without break */
 			case WM_OP_INVOKE_DEFAULT:
 				return wm_operator_invoke(C, ot, event, properties, reports);
 		}





More information about the Bf-blender-cvs mailing list