Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-10-27 20:53:44 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-10-27 20:59:35 +0300
commitdd904f67614b51c3ade54d07f273944b5abab5b9 (patch)
tree122fdc5889a5859f0363848cc0b6bc642e8afd73 /source/blender/makesrna/intern/rna_wm_api.c
parentae55523013642f2897e840f30ad62c74d31df3e0 (diff)
WM: add utility to lookup a keymap item from an event
Useful for modal operators to be able to match events against regular keymaps.
Diffstat (limited to 'source/blender/makesrna/intern/rna_wm_api.c')
-rw-r--r--source/blender/makesrna/intern/rna_wm_api.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c
index 886258ee45f..1330250edab 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -366,6 +366,14 @@ static PointerRNA rna_KeyMap_item_find_from_operator(ID *id,
return kmi_ptr;
}
+static PointerRNA rna_KeyMap_item_match_event(ID *id, wmKeyMap *km, bContext *C, wmEvent *event)
+{
+ wmKeyMapItem *kmi = WM_event_match_keymap_item(C, km, event);
+ PointerRNA kmi_ptr;
+ RNA_pointer_create(id, &RNA_KeyMapItem, kmi, &kmi_ptr);
+ return kmi_ptr;
+}
+
static wmKeyMap *rna_keymap_new(
wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid, bool modal, bool tool)
{
@@ -1128,6 +1136,14 @@ void RNA_api_keymapitems(StructRNA *srna)
parm = RNA_def_pointer(func, "item", "KeyMapItem", "", "");
RNA_def_parameter_flags(parm, 0, PARM_RNAPTR);
RNA_def_function_return(func, parm);
+
+ func = RNA_def_function(srna, "match_event", "rna_KeyMap_item_match_event");
+ RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_CONTEXT);
+ parm = RNA_def_pointer(func, "event", "Event", "", "");
+ RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+ parm = RNA_def_pointer(func, "item", "KeyMapItem", "", "");
+ RNA_def_parameter_flags(parm, 0, PARM_RNAPTR);
+ RNA_def_function_return(func, parm);
}
void RNA_api_keymaps(StructRNA *srna)