Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2010-01-27 20:01:41 +0300
committerMartin Poirier <theeth@yahoo.com>2010-01-27 20:01:41 +0300
commita46f36b19c46ab78e1ec8ce52b1a08512dff1c16 (patch)
tree2edd259ccf294c8e179a9d5e59895c6382b66061 /source/blender/windowmanager
parentc896f1aa434cba9151a35703fea88525942d84e9 (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.c8
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