All pastes #936486 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-03-10 13:53 UTC
rendered paste body
Index: source/blender/python/BPY_extern.h
===================================================================
--- source/blender/python/BPY_extern.h	(revision 14019)
+++ source/blender/python/BPY_extern.h	(working copy)
@@ -110,7 +110,7 @@
 	int BPY_add_spacehandler(struct Text *txt, struct ScrArea *sa,char spacetype);
 	int BPY_has_spacehandler(struct Text *text, struct ScrArea *sa);
 	void BPY_screen_free_spacehandlers(struct bScreen *sc);
-	int BPY_do_spacehandlers(struct ScrArea *sa, unsigned short event,
+	int BPY_do_spacehandlers(struct ScrArea *sa, unsigned short event, short val,
 		unsigned short space_event);
 
 	void BPY_pydriver_update(void);
Index: source/blender/python/BPY_interface.c
===================================================================
--- source/blender/python/BPY_interface.c	(revision 14019)
+++ source/blender/python/BPY_interface.c	(working copy)
@@ -2438,7 +2438,7 @@
 	return 0;
 }
 
-int BPY_do_spacehandlers( ScrArea *sa, unsigned short event,
+int BPY_do_spacehandlers( ScrArea *sa, unsigned short event, short val,
 	unsigned short space_event )
 {
 	ScriptLink *scriptlink;
@@ -2481,6 +2481,8 @@
 		EXPP_dict_set_item_str(g_blenderdict, "link", PyInt_FromLong(space_event));
 		/* note: DRAW space_events set event to 0 */
 		EXPP_dict_set_item_str(g_blenderdict, "event", PyInt_FromLong(event));
+		/* key/mouse down or up? */
+		PyDict_SetItemString(g_blenderdict, "value", val==0 ? Py_False : Py_True);
 		/* now run all assigned space handlers for this space and space_event */
 		for( index = 0; index < scriptlink->totscript; index++ ) {
 			
@@ -2538,6 +2540,7 @@
 		PyDict_SetItemString(g_blenderdict, "bylink", Py_False);
 		PyDict_SetItemString(g_blenderdict, "link", Py_None );
 		EXPP_dict_set_item_str(g_blenderdict, "event", PyString_FromString(""));
+		PyDict_SetItemString(g_blenderdict, "value", Py_False);
 		
 		PyGILState_Release(gilstate);
 	}
Index: source/blender/src/drawview.c
===================================================================
--- source/blender/src/drawview.c	(revision 14019)
+++ source/blender/src/drawview.c	(working copy)
@@ -3153,7 +3153,7 @@
 
 	/* run any view3d draw handler script links */
 	if (sa->scriptlink.totscript)
-		BPY_do_spacehandlers(sa, 0, SPACEHANDLER_VIEW3D_DRAW);
+		BPY_do_spacehandlers(sa, 0, 0, SPACEHANDLER_VIEW3D_DRAW);
 
 	/* run scene redraw script links */
 	if((G.f & G_DOSCRIPTLINKS) && G.scene->scriptlink.totscript &&
Index: source/blender/src/space.c
===================================================================
--- source/blender/src/space.c	(revision 14019)
+++ source/blender/src/space.c	(working copy)
@@ -1187,8 +1187,12 @@
 	
 	if(curarea->win==0) return;	/* when it comes from sa->headqread() */
 	
+	/* run any view3d event handler script links */
+	if (event && sa->scriptlink.totscript)
+		if (BPY_do_spacehandlers(sa, event, val, SPACEHANDLER_VIEW3D_EVENT))
+			return; /* return if event was processed (swallowed) by handler(s) */
+	
 	if(val) {
-
 		if( uiDoBlocks(&curarea->uiblocks, event, 1)!=UI_NOTHING ) event= 0;
 		
 		if(event==UI_BUT_EVENT) do_butspace(val); /* temporal, view3d deserves own queue? */
@@ -1244,11 +1248,6 @@
 			}
 		}
 
-		/* run any view3d event handler script links */
-		if (event && sa->scriptlink.totscript)
-			if (BPY_do_spacehandlers(sa, event, SPACEHANDLER_VIEW3D_EVENT))
-				return; /* return if event was processed (swallowed) by handler(s) */
-
 		/* TEXTEDITING?? */
 		if((G.obedit) && G.obedit->type==OB_FONT) {
 			switch(event) {