[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23446] trunk/blender/source/blender: fix for middle mouse up events not working with modal keymaps ( used for fly mode).

Campbell Barton ideasman42 at gmail.com
Thu Sep 24 12:35:04 CEST 2009


Revision: 23446
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23446
Author:   campbellbarton
Date:     2009-09-24 12:35:04 +0200 (Thu, 24 Sep 2009)

Log Message:
-----------
fix for middle mouse up events not working with modal keymaps (used for fly mode).

With mouse events event->val started as 0/1 for press/release but later the tweak function made LMB and RMB zero value into KM_RELEASE, somehow MMB didnt get used by the tweak function so was left at 0 and the modal keymap function failed when comparing MMB Mouse ups.

now initialize event->val as KM_PRESS/KM_RELEASE

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/anim_ops.c
    trunk/blender/source/blender/editors/armature/editarmature_sketch.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/view2d_ops.c
    trunk/blender/source/blender/editors/mesh/loopcut.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
    trunk/blender/source/blender/editors/space_image/image_ops.c
    trunk/blender/source/blender/editors/space_node/node_select.c
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/editors/animation/anim_ops.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_ops.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/animation/anim_ops.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -193,7 +193,7 @@
 			/* we check for either mouse-button to end, as checking for ACTIONMOUSE (which is used to init 
 			 * the modal op) doesn't work for some reason
 			 */
-			if (event->val==0) {
+			if (event->val==KM_RELEASE) {
 				change_frame_exit(C, op);
 				return OPERATOR_FINISHED;
 			}

Modified: trunk/blender/source/blender/editors/armature/editarmature_sketch.c
===================================================================
--- trunk/blender/source/blender/editors/armature/editarmature_sketch.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/armature/editarmature_sketch.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -2675,7 +2675,7 @@
 		retval = OPERATOR_CANCELLED;
 		break;
 	case LEFTMOUSE:
-		if (event->val == 0)
+		if (event->val == KM_RELEASE)
 		{
 			if (gesture == 0)
 			{

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -1660,7 +1660,7 @@
 			break;
 		}
 		case LEFTMOUSE:
-			if(event->val == 0)
+			if(event->val == KM_RELEASE)
 				button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
 			retval= WM_UI_HANDLER_BREAK;
 			break;

Modified: trunk/blender/source/blender/editors/interface/view2d_ops.c
===================================================================
--- trunk/blender/source/blender/editors/interface/view2d_ops.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/interface/view2d_ops.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -237,7 +237,7 @@
 			
 		case LEFTMOUSE:
 		case MIDDLEMOUSE:
-			if (event->val==0) {
+			if (event->val==KM_RELEASE) {
 				/* calculate overall delta mouse-movement for redo */
 				RNA_int_set(op->ptr, "deltax", (vpd->startx - vpd->lastx));
 				RNA_int_set(op->ptr, "deltay", (vpd->starty - vpd->lasty));
@@ -836,7 +836,7 @@
 			
 		case LEFTMOUSE:
 		case MIDDLEMOUSE:
-			if (event->val==0) {
+			if (event->val==KM_RELEASE) {
 				/* for redo, store the overall deltas - need to respect zoom-locks here... */
 				if ((v2d->keepzoom & V2D_LOCKZOOM_X)==0)
 					RNA_float_set(op->ptr, "deltax", vzd->dx);
@@ -1244,7 +1244,7 @@
 			break;
 			
 		case LEFTMOUSE:
-			if (event->val==0) {
+			if (event->val==KM_RELEASE) {
 				scroller_activate_exit(C, op);
 				return OPERATOR_FINISHED;
 			}

Modified: trunk/blender/source/blender/editors/mesh/loopcut.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/loopcut.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/mesh/loopcut.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -380,7 +380,7 @@
 	switch (event->type) {
 		case RIGHTMOUSE:
 		case LEFTMOUSE: /* confirm */ // XXX hardcoded
-			if (event->val == 0) {
+			if (event->val == KM_RELEASE) {
 				/* finish */
 				ED_region_tag_redraw(lcd->ar);
 

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -604,7 +604,7 @@
 			sad->sa2= screen_areahascursor(CTX_wm_screen(C), event->x, event->y);
 			break;
 		case LEFTMOUSE: /* release LMB */
-			if(event->val==0) {
+			if(event->val==KM_RELEASE) {
 				if(!sad->sa2 || sad->sa1 == sad->sa2) {
 
 					return area_swap_cancel(C, op);
@@ -1225,7 +1225,7 @@
 			break;
 			
 		case LEFTMOUSE:
-			if(event->val==0) { /* mouse up */
+			if(event->val==KM_RELEASE) { /* mouse up */
 				area_split_exit(C, op);
 				return OPERATOR_FINISHED;
 			}
@@ -1345,7 +1345,7 @@
 			break;
 			
 		case LEFTMOUSE:
-			if(event->val==0) {
+			if(event->val==KM_RELEASE) {
 				
 				if(ABS(event->x - rmd->origx) < 2 && ABS(event->y - rmd->origy) < 2) {
 					if(rmd->ar->flag & RGN_FLAG_HIDDEN) {
@@ -1828,7 +1828,7 @@
 			}
 			break;
 		case LEFTMOUSE:
-			if(event->val==0) {
+			if(event->val==KM_RELEASE) {
 				area_join_apply(C, op);
 				WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);
 				area_join_exit(C, op);

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_stroke.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -263,7 +263,7 @@
 	}
 
 	/* TODO: fix hardcoded event here */
-	if(event->type == LEFTMOUSE && event->val == 0) {
+	if(event->type == LEFTMOUSE && event->val == KM_RELEASE) {
 		/* Exit stroke, free data */
 
 		if(stroke->smooth_stroke_cursor)

Modified: trunk/blender/source/blender/editors/space_image/image_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_ops.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/space_image/image_ops.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -224,7 +224,7 @@
 			view_pan_exec(C, op);
 			break;
 		case MIDDLEMOUSE:
-			if(event->val==0) {
+			if(event->val==KM_RELEASE) {
 				view_pan_exit(C, op, 0);
 				return OPERATOR_FINISHED;
 			}
@@ -339,7 +339,7 @@
 			ED_area_tag_redraw(CTX_wm_area(C));
 			break;
 		case MIDDLEMOUSE:
-			if(event->val==0) {
+			if(event->val==KM_RELEASE) {
 				view_zoom_exit(C, op, 0);
 				return OPERATOR_FINISHED;
 			}

Modified: trunk/blender/source/blender/editors/space_node/node_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_select.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/space_node/node_select.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -140,7 +140,7 @@
 			printf("%d %d\n", event->x, event->y);
 			break;
 		case SELECTMOUSE:
-			//if (event->val==0) {
+			//if (event->val==KM_RELEASE) {
 				/* calculate overall delta mouse-movement for redo */
 				printf("done translating\n");
 				//WM_cursor_restore(CTX_wm_window(C));

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -505,7 +505,7 @@
 
 		default:
 			/* origkey may be zero when invoked from a button */
-			if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==0)) {
+			if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==KM_RELEASE)) {
 				request_depth_update(CTX_wm_region_view3d(C));
 
 				MEM_freeN(vod);
@@ -606,7 +606,7 @@
 
 		default:
 			/* origkey may be zero when invoked from a button */
-			if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==0)) {
+			if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==KM_RELEASE)) {
 				request_depth_update(CTX_wm_region_view3d(C));
 
 				MEM_freeN(vod);
@@ -767,7 +767,7 @@
 
 		default:
 			/* origkey may be zero when invoked from a button */
-			if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==0)) {
+			if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==KM_RELEASE)) {
 				request_depth_update(CTX_wm_region_view3d(C));
 
 				MEM_freeN(vod);

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -1004,7 +1004,7 @@
 	int always_pass;
 
 	if(handlers==NULL) return action;
-	
+
 	/* modal handlers can get removed in this loop, we keep the loop this way */
 	for(handler= handlers->first; handler; handler= nexthandler) {
 		nexthandler= handler->next;
@@ -1157,7 +1157,7 @@
 		
 		while( (event= win->queue.first) ) {
 			int action;
-			
+
 			CTX_wm_window_set(C, win);
 			
 			/* we let modal handlers get active area/region, also wm_paintcursor_test needs it */
@@ -1176,7 +1176,7 @@
 			
 			/* builtin tweak, if action is break it removes tweak */
 			wm_tweakevent_test(C, event, action);
-			
+
 			if(action==WM_HANDLER_CONTINUE) {
 				ScrArea *sa;
 				ARegion *ar;
@@ -1189,7 +1189,7 @@
 					/* for regions having custom cursors */
 					wm_paintcursor_test(C, event);
 				}
-				
+
 				for(sa= win->screen->areabase.first; sa; sa= sa->next) {
 					if(wm_event_inside_i(event, &sa->totrct)) {
 						CTX_wm_area_set(C, sa);
@@ -1575,7 +1575,7 @@
 		case GHOST_kEventButtonDown:
 		case GHOST_kEventButtonUp: {
 			GHOST_TEventButtonData *bd= customdata;
-			event.val= (type==GHOST_kEventButtonDown);
+			event.val= (type==GHOST_kEventButtonDown) ? KM_PRESS:KM_RELEASE; /* Note!, this starts as 0/1 but later is converted to KM_PRESS/KM_RELEASE by tweak */
 			
 			if (bd->button == GHOST_kButtonMaskLeft)
 				event.type= LEFTMOUSE;

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2009-09-24 10:04:43 UTC (rev 23445)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2009-09-24 10:35:04 UTC (rev 23446)
@@ -1485,7 +1485,7 @@
 		case LEFTMOUSE:
 		case MIDDLEMOUSE:
 		case RIGHTMOUSE:
-			if(event->val==0) {	/* key release */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list