[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