[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22527] branches/blender2.5/blender/source /blender: 2.5

Ton Roosendaal ton at blender.org
Sun Aug 16 19:42:09 CEST 2009


Revision: 22527
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22527
Author:   ton
Date:     2009-08-16 19:42:09 +0200 (Sun, 16 Aug 2009)

Log Message:
-----------
2.5

Muscle flexing commit; put the "any key modifier" to work, also exposed
(ugly) in keymap editor. Notes for it works:

- You can use any keyboard key to become modifier now (not mouse buttons)
- But, if this key was assigned to be a regular hotkey, that still gets
  triggered, obviously.
- So: only use unused keys for this, like "~" or other special ones?

For test fun: L+K now does animplay.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
    branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2009-08-16 16:38:32 UTC (rev 22526)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2009-08-16 17:42:09 UTC (rev 22527)
@@ -3363,6 +3363,7 @@
 	
 	/* play (forward and backwards) */
 	WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT, 0);
+	WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", KKEY, KM_PRESS, 0, LKEY);
 	RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "reverse", 1);
 
 	keymap_modal_set(wm);

Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c	2009-08-16 16:38:32 UTC (rev 22526)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c	2009-08-16 17:42:09 UTC (rev 22527)
@@ -5162,13 +5162,13 @@
 				}
 				
 				/* modifiers */
-				uiBlockBeginAlign(block);
 				uiDefButS(block, OPTION, 0, "Shift",	xstart, (int)te->ys+1, butw3+5, OL_H-1, &kmi->shift, 0, 0, 0, 0, "Modifier"); xstart+= butw3+5;
 				uiDefButS(block, OPTION, 0, "Ctrl",	xstart, (int)te->ys+1, butw3, OL_H-1, &kmi->ctrl, 0, 0, 0, 0, "Modifier"); xstart+= butw3;
 				uiDefButS(block, OPTION, 0, "Alt",	xstart, (int)te->ys+1, butw3, OL_H-1, &kmi->alt, 0, 0, 0, 0, "Modifier"); xstart+= butw3;
 				uiDefButS(block, OPTION, 0, "Cmd",	xstart, (int)te->ys+1, butw3, OL_H-1, &kmi->oskey, 0, 0, 0, 0, "Modifier"); xstart+= butw3;
 				xstart+= 5;
-				uiBlockEndAlign(block);
+				uiDefKeyevtButS(block, 0, "", xstart, (int)te->ys+1, butw3, OL_H-1, &kmi->keymodifier, "Key Modifier code");
+				xstart+= butw3+5;
 				
 				/* rna property */
 				if(kmi->ptr && kmi->ptr->data)

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-08-16 16:38:32 UTC (rev 22526)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-08-16 17:42:09 UTC (rev 22527)
@@ -691,8 +691,15 @@
 		if(winevent->alt != kmi->alt && !(winevent->alt & kmi->alt)) return 0;
 	if(kmi->oskey!=KM_ANY)
 		if(winevent->oskey != kmi->oskey && !(winevent->oskey & kmi->oskey)) return 0;
+	
 	if(kmi->keymodifier)
 		if(winevent->keymodifier!=kmi->keymodifier) return 0;
+		
+	/* key modifiers always check when event has it */
+	/* otherwise regular keypresses with keymodifier still work */
+	if(winevent->keymodifier)
+		if(ISKEYBOARD(winevent->type)) 
+			if(winevent->keymodifier!=kmi->keymodifier) return 0;
 	
 	return 1;
 }
@@ -1509,11 +1516,6 @@
 			else
 				event.type= MIDDLEMOUSE;
 			
-			if(event.val)
-				event.keymodifier= evt->keymodifier= event.type;
-			else
-				event.keymodifier= evt->keymodifier= 0;
-			
 			update_tablet_data(win, &event);
 			wm_event_add(win, &event);
 			
@@ -1552,6 +1554,12 @@
 				if(event.val==KM_PRESS && (evt->ctrl || evt->alt || evt->shift))
 				   event.oskey= evt->oskey = 3;		// define?
 			}
+			else {
+				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;
+			}
 			
 			/* if test_break set, it catches this. XXX Keep global for now? */
 			if(event.type==ESCKEY)

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c	2009-08-16 16:38:32 UTC (rev 22526)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_window.c	2009-08-16 17:42:09 UTC (rev 22527)
@@ -588,6 +588,8 @@
 					kdata.key= GHOST_kKeyCommand;
 					wm_event_add_ghostevent(win, GHOST_kEventKeyUp, &kdata);
 				}
+				/* keymodifier zero, it hangs on hotkeys that open windows otherwise */
+				win->eventstate->keymodifier= 0;
 				
 				/* entering window, update mouse pos. but no event */
 				GHOST_GetCursorPosition(g_system, &wx, &wy);





More information about the Bf-blender-cvs mailing list