diff options
author | Ton Roosendaal <ton@blender.org> | 2009-02-02 17:13:14 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-02-02 17:13:14 +0300 |
commit | 8fd6f6433f0c75c94389eb78a5a35e048de8e407 (patch) | |
tree | 1d968247d21df33379185564880a14932284f870 /source/blender/windowmanager/wm.h | |
parent | c67952a4757c2ec0c29de3f0cd4e8ca445f3ce1b (diff) |
2.5
Sanitized the 'tweak' event.
Original idea was to have WM event system generating it
automatically. However, I first tested it via a handler
and operator, to check what kind of configurations would
be useful. It appeared to not work nice, also because
that inserting a tweak operator in a keymap is confusing.
Now 'tweaks' are generated automatically, and can be
catched by keymaps as any event. The current definition
of tweak is:
- if Left/Middle/Rightmouse pressed
if event wasn't handled by window queue (modal handlers)
start checking mousepositions
- while mousepositions are checked
- escape on any event other than mouse
- on mouse events:
- add tweak event if mousemove > 10 pixels
- stop checking for tweak if mousebutton released
- Tweak events have a define indicating mousebutton used
EVT_TWEAK_L, EVT_TWEAK_M, EVT_TWEAK_R
- In keymap definitions you can use _S or _A to map to
action or select mouse userdef.
- Event value in keymap should be KM_ANY for all tweaks,
or use one of the eight directions:
EVT_GESTURE_E, _SE, _S, _SW, _W, _NW, _N, _NE
- And of course you can add modifier checks in keymaps for it.
- Because tweaks are a result of mouse events, the handlers get
both to evaluate. That means that RMB-select + tweak will work
correctly.
In case you don't want both to be handled, for example the
CTRL+LMB 'extrude' and CTRL+LMB-tweak 'lasso select', you will
need to set the first acting on a EVT_RELEASE, this event only
gets passed on when tweak fails.
The current system allows all options, configurable, we had in 2.48,
and many more! A diagram of what's possible is on the todo. :)
Also in this commit: lasso select editmesh failed with 'zbuffer
occluded select'. Also circle-select failed.
Diffstat (limited to 'source/blender/windowmanager/wm.h')
-rw-r--r-- | source/blender/windowmanager/wm.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h index 556a3fadcfb..fd5cbe3ff4f 100644 --- a/source/blender/windowmanager/wm.h +++ b/source/blender/windowmanager/wm.h @@ -55,6 +55,8 @@ void wm_operatortype_free(void); void wm_operatortype_init(void); void wm_window_keymap(wmWindowManager *wm); +void wm_tweakevent_test(bContext *C, wmEvent *event, int action); + /* wm_gesture.c */ #define WM_LASSO_MAX_POINTS 1024 void wm_gesture_draw(struct wmWindow *win); |