From 8fd6f6433f0c75c94389eb78a5a35e048de8e407 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Mon, 2 Feb 2009 14:13:14 +0000 Subject: 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. --- source/blender/windowmanager/wm.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source/blender/windowmanager/wm.h') 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); -- cgit v1.2.3