[Bf-blender-cvs] [a7b1349] master: Events: fix for wmEvent prevx, prevy not updating

Campbell Barton noreply at git.blender.org
Thu Jan 30 21:43:05 CET 2014


Commit: a7b1349ce48b9f6a05ec8958f8096a0da2c89f25
Author: Campbell Barton
Date:   Fri Jan 31 07:41:32 2014 +1100
https://developer.blender.org/rBa7b1349ce48b9f6a05ec8958f8096a0da2c89f25

Events: fix for wmEvent prevx, prevy not updating

===================================================================

M	source/blender/windowmanager/intern/wm_event_system.c

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 6e2fcf1..30a51b2 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2951,6 +2951,15 @@ static void wm_event_add_mousemove(wmWindow *win, const wmEvent *event)
 		event_last->type = INBETWEEN_MOUSEMOVE;
 
 	wm_event_add(win, event);
+
+	{
+		wmEvent *event_new = win->queue.last;
+		if (event_last == NULL) {
+			event_last = win->eventstate;
+		}
+
+		copy_v2_v2_int(&event_new->prevx, &event_last->x);
+	}
 }
 
 /* windows store own event queues, no bContext here */
@@ -2968,26 +2977,24 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U
 		case GHOST_kEventCursorMove:
 		{
 			GHOST_TEventCursorData *cd = customdata;
-			
-			evt->x = cd->x;
-			evt->y = cd->y;
-			
-			event.x = evt->x;
-			event.y = evt->y;
 
+			copy_v2_v2_int(&event.x, &cd->x);
 			event.type = MOUSEMOVE;
 			wm_event_add_mousemove(win, &event);
+			copy_v2_v2_int(&evt->x, &event.x);
 			
 			/* also add to other window if event is there, this makes overdraws disappear nicely */
 			/* it remaps mousecoord to other window in event */
 			owin = wm_event_cursor_other_windows(wm, win, &event);
 			if (owin) {
-				wmEvent oevent = *(owin->eventstate);
-				
-				oevent.x = owin->eventstate->x = event.x;
-				oevent.y = owin->eventstate->y = event.y;
+				wmEvent oevent, *oevt = owin->eventstate;
+
+				oevent = *oevt;
+
+				copy_v2_v2_int(&oevent.x, &event.x);
 				oevent.type = MOUSEMOVE;
 				wm_event_add_mousemove(owin, &oevent);
+				copy_v2_v2_int(&oevt->x, &oevent.x);
 			}
 				
 			break;




More information about the Bf-blender-cvs mailing list