[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36814] trunk/blender/source/blender/ windowmanager/intern/wm_event_system.c: fix [#27458] Links for Logic Bricks no longer work

Campbell Barton ideasman42 at gmail.com
Sun May 22 06:05:11 CEST 2011


Revision: 36814
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36814
Author:   campbellbarton
Date:     2011-05-22 04:05:09 +0000 (Sun, 22 May 2011)
Log Message:
-----------
fix [#27458] Links for Logic Bricks no longer work
event->mval wasn't being set in some cases by the event system.

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	2011-05-21 23:44:36 UTC (rev 36813)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-05-22 04:05:09 UTC (rev 36814)
@@ -661,6 +661,11 @@
 		event->mval[0]= event->x - ar->winrct.xmin;
 		event->mval[1]= event->y - ar->winrct.ymin;
 	}
+	else {
+		/* these values are invalid (avoid odd behavior by relying on old mval values) */
+		event->mval[0]= -1;
+		event->mval[1]= -1;
+	}
 }
 
 static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, PointerRNA *properties, ReportList *reports, short poll_only)
@@ -1776,6 +1781,8 @@
 			/* MVC demands to not draw in event handlers... but we need to leave it for ogl selecting etc */
 			wm_window_make_drawable(C, win);
 			
+			wm_region_mouse_co(C, event);
+
 			/* first we do priority handlers, modal + some limited keymaps */
 			action |= wm_handlers_do(C, event, &win->modalhandlers);
 			
@@ -1811,10 +1818,12 @@
 								if(wm_event_inside_i(event, &ar->winrct)) {
 									CTX_wm_region_set(C, ar);
 									
+									/* call even on non mouse events, since the */
+									wm_region_mouse_co(C, event);
+
 									/* does polls for drop regions and checks uibuts */
 									/* need to be here to make sure region context is true */
 									if(ELEM(event->type, MOUSEMOVE, EVT_DROP)) {
-										wm_region_mouse_co(C, event);
 										wm_drags_check_ops(C, event);
 									}
 									
@@ -1834,9 +1843,10 @@
 
 						CTX_wm_region_set(C, NULL);
 
-						if((action & WM_HANDLER_BREAK) == 0)
+						if((action & WM_HANDLER_BREAK) == 0) {
+							wm_region_mouse_co(C, event); /* only invalidates event->mval in this case */
 							action |= wm_handlers_do(C, event, &sa->handlers);
-
+						}
 						CTX_wm_area_set(C, NULL);
 
 						/* NOTE: do not escape on WM_HANDLER_BREAK, mousemove needs handled for previous area */
@@ -1848,6 +1858,8 @@
 					CTX_wm_area_set(C, area_event_inside(C, event->x, event->y));
 					CTX_wm_region_set(C, region_event_inside(C, event->x, event->y));
 
+					wm_region_mouse_co(C, event);
+
 					action |= wm_handlers_do(C, event, &win->handlers);
 
 					/* fileread case */




More information about the Bf-blender-cvs mailing list