[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41192] trunk/blender/source/blender: - use defines for wmKeyMapItem & wmEvent alt/shift/ctrl/oskey

Campbell Barton ideasman42 at gmail.com
Sat Oct 22 13:34:03 CEST 2011


Revision: 41192
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41192
Author:   campbellbarton
Date:     2011-10-22 11:34:01 +0000 (Sat, 22 Oct 2011)
Log Message:
-----------
- use defines for wmKeyMapItem & wmEvent alt/shift/ctrl/oskey
- clear utf8_buf on key up & complain if its set (should never happen)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_panel.c
    trunk/blender/source/blender/editors/physics/particle_edit.c
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/windowmanager/WM_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
    trunk/blender/source/blender/windowmanager/intern/wm_keymap.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2011-10-22 10:49:35 UTC (rev 41191)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2011-10-22 11:34:01 UTC (rev 41192)
@@ -2199,15 +2199,11 @@
 		
 		/* always set */
 		but->modifier_key = 0;
-		if(event->shift)
-			but->modifier_key |= KM_SHIFT;
-		if(event->alt)
-			but->modifier_key |= KM_ALT;
-		if(event->ctrl)
-			but->modifier_key |= KM_CTRL;
-		if(event->oskey)
-			but->modifier_key |= KM_OSKEY;
-		
+		if(event->shift) but->modifier_key |= KM_SHIFT;
+		if(event->alt)   but->modifier_key |= KM_ALT;
+		if(event->ctrl)  but->modifier_key |= KM_CTRL;
+		if(event->oskey) but->modifier_key |= KM_OSKEY;
+
 		ui_check_but(but);
 		ED_region_tag_redraw(data->region);
 			
@@ -3673,7 +3669,7 @@
 			if(sel!= -1) {
 				/* ok, we move a point */
 				/* deselect all if this one is deselect. except if we hold shift */
-				if(event->shift==0) {
+				if(event->shift == FALSE) {
 					for(a=0; a<cuma->totpoint; a++)
 						cmp[a].flag &= ~SELECT;
 					cmp[sel].flag |= SELECT;
@@ -3712,7 +3708,7 @@
 
 				if(!data->dragchange) {
 					/* deselect all, select one */
-					if(event->shift==0) {
+					if(event->shift == FALSE) {
 						for(a=0; a<cuma->totpoint; a++)
 							cmp[a].flag &= ~SELECT;
 						cmp[data->dragsel].flag |= SELECT;
@@ -4491,7 +4487,7 @@
 			ui_but_drop	(C, event, but, data);
 		}
 		/* handle keyframing */
-		else if(event->type == IKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
+		else if(event->type == IKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
 			if(event->alt)
 				ui_but_anim_delete_keyframe(C);
 			else
@@ -4502,7 +4498,7 @@
 			return WM_UI_HANDLER_BREAK;
 		}
 		/* handle drivers */
-		else if(event->type == DKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
+		else if(event->type == DKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
 			if(event->alt)
 				ui_but_anim_remove_driver(C);
 			else
@@ -4513,7 +4509,7 @@
 			return WM_UI_HANDLER_BREAK;
 		}
 		/* handle keyingsets */
-		else if(event->type == KKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
+		else if(event->type == KKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) {
 			if(event->alt)
 				ui_but_anim_remove_keyingset(C);
 			else
@@ -5983,9 +5979,9 @@
 				case ZKEY:
 				{
 					if(	(event->val == KM_PRESS) &&
-						(event->shift == FALSE) &&
-						(event->ctrl == FALSE) &&
-						(event->oskey == FALSE)
+					    (event->shift == FALSE) &&
+					    (event->ctrl ==  FALSE) &&
+					    (event->oskey == FALSE)
 					) {
 						for(but= block->buttons.first; but; but= but->next) {
 

Modified: trunk/blender/source/blender/editors/interface/interface_panel.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_panel.c	2011-10-22 10:49:35 UTC (rev 41191)
+++ trunk/blender/source/blender/editors/interface/interface_panel.c	2011-10-22 11:34:01 UTC (rev 41192)
@@ -1042,7 +1042,7 @@
 				inside= 1;
 		
 		if(inside && event->val==KM_PRESS) {
-			if(event->type == AKEY && !ELEM4(1, event->ctrl, event->oskey, event->shift, event->alt)) {
+			if(event->type == AKEY && !ELEM4(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift, event->alt)) {
 				
 				if(pa->flag & PNL_CLOSEDY) {
 					if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my))

Modified: trunk/blender/source/blender/editors/physics/particle_edit.c
===================================================================
--- trunk/blender/source/blender/editors/physics/particle_edit.c	2011-10-22 10:49:35 UTC (rev 41191)
+++ trunk/blender/source/blender/editors/physics/particle_edit.c	2011-10-22 11:34:01 UTC (rev 41192)
@@ -3700,7 +3700,7 @@
 	RNA_collection_add(op->ptr, "stroke", &itemptr);
 
 	RNA_float_set_array(&itemptr, "mouse", mouse);
-	RNA_boolean_set(&itemptr, "pen_flip", event->shift != 0); // XXX hardcoded
+	RNA_boolean_set(&itemptr, "pen_flip", event->shift != FALSE); // XXX hardcoded
 
 	/* apply */
 	brush_edit_apply(C, op, &itemptr);

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2011-10-22 10:49:35 UTC (rev 41191)
+++ trunk/blender/source/blender/editors/transform/transform.c	2011-10-22 11:34:01 UTC (rev 41192)
@@ -1543,10 +1543,11 @@
 		{
 			if (kmi->propvalue == TFM_MODAL_SNAP_INV_ON && kmi->val == KM_PRESS)
 			{
-				if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) && event->ctrl) ||
-					(ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) ||
-					(ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) && event->alt) ||
-					(kmi->type == OSKEY && event->oskey)) {
+				if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) &&   event->ctrl)  ||
+				    (ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) ||
+				    (ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) &&     event->alt)   ||
+				    ((kmi->type == OSKEY) &&                         event->oskey) )
+				{
 					t->modifiers |= MOD_SNAP_INVERT;
 				}
 				break;

Modified: trunk/blender/source/blender/windowmanager/WM_types.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_types.h	2011-10-22 10:49:35 UTC (rev 41191)
+++ trunk/blender/source/blender/windowmanager/WM_types.h	2011-10-22 11:34:01 UTC (rev 41192)
@@ -98,6 +98,11 @@
 #define KM_ALT2		64
 #define KM_OSKEY2	128
 
+/* KM_MOD_ flags for wmKeyMapItem and wmEvent.alt/shift/oskey/ctrl  */
+/* note that KM_ANY and FALSE are used with these defines too */
+#define KM_MOD_FIRST  1
+#define KM_MOD_SECOND 2
+
 /* type: defined in wm_event_types.c */
 #define KM_TEXTINPUT	-2
 

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-10-22 10:49:35 UTC (rev 41191)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-10-22 11:34:01 UTC (rev 41192)
@@ -2615,35 +2615,39 @@
 			event.val= (type==GHOST_kEventKeyDown)?KM_PRESS:KM_RELEASE;
 			
 			/* exclude arrow keys, esc, etc from text input */
-			if(type==GHOST_kEventKeyUp || (event.ascii<32 && event.ascii>0))
-				event.ascii= '\0';
-			
+			if(type==GHOST_kEventKeyUp) {
+				if (event.ascii<32 && event.ascii > 0) {
+					event.ascii= '\0';
+				}
+
+				/* ghost should do this already for key up */
+				if (event.utf8_buf[0]) {
+					printf("%s: ghost on you're platform is misbehaving, utf8 events on key up!\n", __func__);
+				}
+				event.utf8_buf[0]= '\0';
+			}
+
 			/* modifiers */
-			if (event.type==LEFTSHIFTKEY || event.type==RIGHTSHIFTKEY) {
-				event.shift= evt->shift= (event.val==KM_PRESS);
-				if(event.val==KM_PRESS && (evt->ctrl || evt->alt || evt->oskey))
-				   event.shift= evt->shift = 3;		// define?
-			} 
-			else if (event.type==LEFTCTRLKEY || event.type==RIGHTCTRLKEY) {
-				event.ctrl= evt->ctrl= (event.val==KM_PRESS);
-				if(event.val==KM_PRESS && (evt->shift || evt->alt || evt->oskey))
-				   event.ctrl= evt->ctrl = 3;		// define?
-			} 
-			else if (event.type==LEFTALTKEY || event.type==RIGHTALTKEY) {
-				event.alt= evt->alt= (event.val==KM_PRESS);
-				if(event.val==KM_PRESS && (evt->ctrl || evt->shift || evt->oskey))
-				   event.alt= evt->alt = 3;		// define?
-			} 
-			else if (event.type==OSKEY) {
-				event.oskey= evt->oskey= (event.val==KM_PRESS);
-				if(event.val==KM_PRESS && (evt->ctrl || evt->alt || evt->shift))
-				   event.oskey= evt->oskey = 3;		// define?
-			}
-			else {
+			/* assigning both first and second is strange - campbell */
+			switch(event.type) {
+			case LEFTSHIFTKEY: case RIGHTSHIFTKEY:
+				event.shift= evt->shift= (event.val==KM_PRESS) ? ((evt->ctrl || evt->alt || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE;
+				break;
+			case LEFTCTRLKEY: case RIGHTCTRLKEY:
+				event.ctrl= evt->ctrl= (event.val==KM_PRESS) ? ((evt->shift || evt->alt || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE;
+				break;
+			case LEFTALTKEY: case RIGHTALTKEY:
+				event.alt= evt->alt= (event.val==KM_PRESS) ? ((evt->ctrl || evt->shift || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE;
+				break;
+			case OSKEY:
+				event.oskey= evt->oskey= (event.val==KM_PRESS) ? ((evt->ctrl || evt->alt || evt->shift) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE;
+				break;
+			default:
 				if(event.val==KM_PRESS && event.keymodifier==0)
 					evt->keymodifier= event.type; /* only set in eventstate, for next event */
 				else if(event.val==KM_RELEASE && event.keymodifier==event.type)
 					event.keymodifier= evt->keymodifier= 0;
+				break;
 			}
 
 			/* this case happens on some systems that on holding a key pressed,

Modified: trunk/blender/source/blender/windowmanager/intern/wm_keymap.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_keymap.c	2011-10-22 10:49:35 UTC (rev 41191)
+++ trunk/blender/source/blender/windowmanager/intern/wm_keymap.c	2011-10-22 11:34:01 UTC (rev 41192)
@@ -310,31 +310,15 @@
 	kmi->type= type;
 	kmi->val= val;
 	kmi->keymodifier= keymodifier;
-	
+
 	if(modifier == KM_ANY) {
 		kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= KM_ANY;
 	}
 	else {
-		
-		kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= 0;
-		
-		/* defines? */
-		if(modifier & KM_SHIFT)
-			kmi->shift= 1;
-		else if(modifier & KM_SHIFT2)
-			kmi->shift= 2;
-		if(modifier & KM_CTRL)
-			kmi->ctrl= 1;
-		else if(modifier & KM_CTRL2)
-			kmi->ctrl= 2;
-		if(modifier & KM_ALT)
-			kmi->alt= 1;
-		else if(modifier & KM_ALT2)
-			kmi->alt= 2;
-		if(modifier & KM_OSKEY)
-			kmi->oskey= 1;
-		else if(modifier & KM_OSKEY2)
-			kmi->oskey= 2;	
+		kmi->shift= (modifier & KM_SHIFT) ? KM_MOD_FIRST : ((modifier & KM_SHIFT2) ? KM_MOD_SECOND : FALSE);

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list