UI: support for custom keymaps for popovers

This commit is contained in:
2018-05-20 22:34:18 +02:00
parent 46514cf865
commit e7895bac07
8 changed files with 68 additions and 11 deletions

View File

@@ -2262,6 +2262,9 @@ static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers
if (action & WM_HANDLER_BREAK) {
/* not always_pass here, it denotes removed handler */
CLOG_INFO(WM_LOG_HANDLERS, 2, "handled! '%s'", kmi->idname);
if (handler->keymap_callback != NULL) {
handler->keymap_callback(keymap, kmi, handler->keymap_callback_user_data);
}
break;
}
else {
@@ -3166,6 +3169,15 @@ void WM_event_remove_keymap_handler(ListBase *handlers, wmKeyMap *keymap)
}
}
void WM_event_set_keymap_handler_callback(
wmEventHandler *handler,
void (keymap_tag)(wmKeyMap *keymap, wmKeyMapItem *kmi, void *user_data),
void *user_data)
{
handler->keymap_callback = keymap_tag;
handler->keymap_callback_user_data = user_data;
}
wmEventHandler *WM_event_add_ui_handler(
const bContext *C, ListBase *handlers,
wmUIHandlerFunc ui_handle, wmUIHandlerRemoveFunc ui_remove,