diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-02-20 06:29:29 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-02-20 06:37:15 +0300 |
commit | effe750ec103d56ff96f12ce64ac977a8ae51909 (patch) | |
tree | fd081fdade0458fa388b55d277034aa38588d146 /source/blender/windowmanager/WM_api.h | |
parent | 855b3e68ef272f6ddb3b496cf8e6d074733e99d4 (diff) |
WM: support dynamic keymap handlers
Add getter callback support for 'WM_HANDLER_TYPE_KEYMAP' type handlers
this is needed for key-maps which change based on the active tool.
Replaces 'sneaky_handler' hack which temporarily inserted a handler.
Diffstat (limited to 'source/blender/windowmanager/WM_api.h')
-rw-r--r-- | source/blender/windowmanager/WM_api.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index ae4f4cb338c..4b4473da625 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -198,12 +198,20 @@ struct wmEventHandler_Keymap *WM_event_add_keymap_handler_bb( struct wmEventHandler_Keymap *WM_event_add_keymap_handler_priority( ListBase *handlers, wmKeyMap *keymap, int priority); +typedef struct wmKeyMap *(wmEventHandler_KeymapDynamicFn)(wmWindowManager *wm, struct wmEventHandler_Keymap *handler) ATTR_WARN_UNUSED_RESULT; + +struct wmKeyMap *WM_event_get_keymap_from_toolsystem(struct wmWindowManager *wm, struct wmEventHandler_Keymap *handler); + +struct wmEventHandler_Keymap *WM_event_add_keymap_handler_dynamic( + ListBase *handlers, wmEventHandler_KeymapDynamicFn *keymap_fn, void *user_data); + void WM_event_remove_keymap_handler(ListBase *handlers, wmKeyMap *keymap); void WM_event_set_keymap_handler_callback( struct wmEventHandler_Keymap *handler, void (keymap_tag)(wmKeyMap *keymap, wmKeyMapItem *kmi, void *user_data), void *user_data); +wmKeyMap *WM_event_get_keymap_from_handler(wmWindowManager *wm, struct wmEventHandler_Keymap *handler); typedef int (*wmUIHandlerFunc)(struct bContext *C, const struct wmEvent *event, void *userdata); typedef void (*wmUIHandlerRemoveFunc)(struct bContext *C, void *userdata); |