[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38670] branches/merwin-spacenav/source/ blender: spoof MOUSEMOVE after NDOF_MOTION event, added comments

Mike Erwin significant.bit at gmail.com
Mon Jul 25 02:03:07 CEST 2011


Revision: 38670
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38670
Author:   merwin
Date:     2011-07-25 00:03:07 +0000 (Mon, 25 Jul 2011)
Log Message:
-----------
spoof MOUSEMOVE after NDOF_MOTION event, added comments

Modified Paths:
--------------
    branches/merwin-spacenav/source/blender/editors/sculpt_paint/paint_stroke.c
    branches/merwin-spacenav/source/blender/windowmanager/intern/wm_event_system.c

Modified: branches/merwin-spacenav/source/blender/editors/sculpt_paint/paint_stroke.c
===================================================================
--- branches/merwin-spacenav/source/blender/editors/sculpt_paint/paint_stroke.c	2011-07-25 00:00:53 UTC (rev 38669)
+++ branches/merwin-spacenav/source/blender/editors/sculpt_paint/paint_stroke.c	2011-07-25 00:03:07 UTC (rev 38670)
@@ -832,6 +832,10 @@
 	float mouse[2];
 	int first= 0;
 
+	// let NDOF motion pass through to the 3D view so we can paint and rotate simultaneously!
+	// this isn't perfect... even when an extra MOUSEMOVE is spoofed, the stroke discards it
+	// since the 2D deltas are zero -- code in this file needs to be updated to use the
+	// post-NDOF_MOTION MOUSEMOVE
 	if (event->type == NDOF_MOTION)
 		return OPERATOR_PASS_THROUGH;
 

Modified: branches/merwin-spacenav/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- branches/merwin-spacenav/source/blender/windowmanager/intern/wm_event_system.c	2011-07-25 00:00:53 UTC (rev 38669)
+++ branches/merwin-spacenav/source/blender/windowmanager/intern/wm_event_system.c	2011-07-25 00:03:07 UTC (rev 38670)
@@ -1815,7 +1815,10 @@
 					/* for regions having custom cursors */
 					wm_paintcursor_test(C, event);
 				}
-				
+				else if (event->type==NDOF_MOTION) {
+					win->addmousemove = TRUE;
+				}
+
 				for(sa= win->screen->areabase.first; sa; sa= sa->next) {
 					if(wm_event_inside_i(event, &sa->totrct)) {
 						CTX_wm_area_set(C, sa);
@@ -1879,7 +1882,10 @@
 				if(doit && win->screen && win->screen->subwinactive != win->screen->mainwin) {
 					win->eventstate->prevx= event->x;
 					win->eventstate->prevy= event->y;
+					//printf("win->eventstate->prev = %d %d\n", event->x, event->y);
 				}
+				else
+					;//printf("not setting prev to %d %d\n", event->x, event->y);
 			}
 			
 			/* store last event for this window */
@@ -1922,6 +1928,7 @@
 		/* only add mousemove when queue was read entirely */
 		if(win->addmousemove && win->eventstate) {
 			wmEvent tevent= *(win->eventstate);
+			//printf("adding MOUSEMOVE %d %d\n", tevent.x, tevent.y);
 			tevent.type= MOUSEMOVE;
 			tevent.prevx= tevent.x;
 			tevent.prevy= tevent.y;
@@ -2408,6 +2415,8 @@
 
 				update_tablet_data(win, &event);
 				wm_event_add(win, &event);
+
+				//printf("sending MOUSEMOVE %d %d\n", event.x, event.y);
 				
 				/* also add to other window if event is there, this makes overdraws disappear nicely */
 				/* it remaps mousecoord to other window in event */
@@ -2586,6 +2595,8 @@
 			attach_ndof_data(&event, customdata);
 			wm_event_add(win, &event);
 
+			//printf("sending NDOF_MOTION, prev = %d %d\n", event.x, event.y);
+
 			break;
 		}
 




More information about the Bf-blender-cvs mailing list