diff options
Diffstat (limited to 'source/blender/windowmanager/intern/wm_event_system.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 7963bf16534..8bbbd1b60df 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -2875,11 +2875,14 @@ void wm_event_do_handlers(bContext *C) wmEventHandler sneaky_handler = {NULL}; if (ar->regiontype == RGN_TYPE_WINDOW) { WorkSpace *workspace = WM_window_get_active_workspace(win); - if (workspace->tool.keymap[0] && - workspace->tool.spacetype == sa->spacetype) - { + const bToolKey tkey = { + .space_type = sa->spacetype, + .mode = WM_toolsystem_mode_from_spacetype(workspace, win->scene, sa, sa->spacetype), + }; + bToolRef_Runtime *tref_rt = WM_toolsystem_runtime_find(workspace, &tkey); + if (tref_rt && tref_rt->keymap[0]) { wmKeyMap *km = WM_keymap_find_all( - C, workspace->tool.keymap, sa->spacetype, RGN_TYPE_WINDOW); + C, tref_rt->keymap, sa->spacetype, RGN_TYPE_WINDOW); if (km != NULL) { sneaky_handler.keymap = km; /* Handle widgets first. */ |