diff options
author | Ton Roosendaal <ton@blender.org> | 2009-01-31 19:54:37 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-01-31 19:54:37 +0300 |
commit | 59534ac58976515500fc174883d9a6f6d3217d62 (patch) | |
tree | f3055a92785103959724588e64c172095202c5a6 /source/blender/windowmanager | |
parent | db2bb765f9d2a0ea7209cab7a720c1cbbc2c5683 (diff) |
2.5
Edit Mesh
Added the two other 'select similar' ops, for edge and face.
For testing fun I've put these ones as first keys using the
modifier order feature. So it's now:
SHIFT+G : similar vertex
CTRL+SHIFT+G: similar edge
SHIFT+CTRL+G: similar face
Not very useful here; but I think this can work well to map
a double amount of options under mouseclicks. Power user
config stuff!
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index faa8eda2f17..0da13fa119f 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -496,14 +496,16 @@ static int wm_eventmatch(wmEvent *winevent, wmKeymapItem *kmi) if(kmi->val!=KM_ANY) if(winevent->val!=kmi->val) return 0; + + /* modifiers also check bits, so it allows modifier order */ if(kmi->shift!=KM_ANY) - if(winevent->shift!=kmi->shift) return 0; + if(winevent->shift != kmi->shift && !(winevent->shift & kmi->shift)) return 0; if(kmi->ctrl!=KM_ANY) - if(winevent->ctrl!=kmi->ctrl) return 0; + if(winevent->ctrl != kmi->ctrl && !(winevent->ctrl & kmi->ctrl)) return 0; if(kmi->alt!=KM_ANY) - if(winevent->alt!=kmi->alt) return 0; + if(winevent->alt != kmi->alt && !(winevent->alt & kmi->alt)) return 0; if(kmi->oskey!=KM_ANY) - if(winevent->oskey!=kmi->oskey) return 0; + if(winevent->oskey != kmi->oskey && !(winevent->oskey & kmi->oskey)) return 0; if(kmi->keymodifier) if(winevent->keymodifier!=kmi->keymodifier) return 0; @@ -1149,12 +1151,23 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata) /* modifiers */ if (event.type==LEFTSHIFTKEY || event.type==RIGHTSHIFTKEY) { event.shift= evt->shift= event.val; - } else if (event.type==LEFTCTRLKEY || event.type==RIGHTCTRLKEY) { + if(event.val && (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; - } else if (event.type==LEFTALTKEY || event.type==RIGHTALTKEY) { + if(event.val && (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; - } else if (event.type==COMMANDKEY) { + if(event.val && (evt->ctrl || evt->shift || evt->oskey)) + event.alt= evt->alt = 3; // define? + } + else if (event.type==COMMANDKEY) { event.oskey= evt->oskey= event.val; + if(event.val && (evt->ctrl || evt->alt || evt->shift)) + event.oskey= evt->oskey = 3; // define? } /* if test_break set, it catches this. Keep global for now? */ |