diff options
author | Martin Poirier <theeth@yahoo.com> | 2010-01-27 20:01:41 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2010-01-27 20:01:41 +0300 |
commit | a46f36b19c46ab78e1ec8ce52b1a08512dff1c16 (patch) | |
tree | 2edd259ccf294c8e179a9d5e59895c6382b66061 /source/blender/windowmanager | |
parent | c896f1aa434cba9151a35703fea88525942d84e9 (diff) |
[#20792] MMB emulation, release broken
Store last mmb event value to make emulation work when modifier keys are released first.
This is done in a not so nice way for now. Eventually, I'd like for emulation keys to have their own data structures (user creatable and all that)
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index e770ced45e3..e130e6d2de9 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -808,20 +808,24 @@ int WM_userdef_event_map(int kmitype) static void wm_eventemulation(wmEvent *event) { + static int mmb_emulated = 0; /* this should be in a data structure somwhere */ + /* middlemouse emulation */ if(U.flag & USER_TWOBUTTONMOUSE) { - if(event->type == LEFTMOUSE && event->alt) { + if(event->type == LEFTMOUSE && (event->alt || mmb_emulated == KM_PRESS)) { event->type = MIDDLEMOUSE; event->alt = 0; + mmb_emulated = event->val; } } #ifdef __APPLE__ /* rightmouse emulation */ if(U.flag & USER_TWOBUTTONMOUSE) { - if(event->type == LEFTMOUSE && event->oskey) { + if(event->type == LEFTMOUSE && (event->oskey || mmb_emulated == KM_PRESS) { event->type = RIGHTMOUSE; event->oskey = 0; + mmb_emulated = event->val; } } #endif |