forked from bartvdbraak/blender
rna: implementing function to remove keymap from keyconfig
Thanks Campbell Barton for reviewing.
This commit is contained in:
parent
60e1fc70d2
commit
c2afa5cfaf
@ -262,6 +262,18 @@ static wmKeyMap *rna_keymap_find_modal(wmKeyConfig *UNUSED(keyconf), const char
|
||||
return ot->modalkeymap;
|
||||
}
|
||||
|
||||
static void rna_KeyMap_remove(wmKeyConfig *keyconfig, ReportList *reports, PointerRNA *keymap_ptr)
|
||||
{
|
||||
wmKeyMap *keymap = keymap_ptr->data;
|
||||
|
||||
if (WM_keymap_remove(keyconfig, keymap) == FALSE) {
|
||||
BKE_reportf(reports, RPT_ERROR, "KeyConfig '%s' cannot be removed", keymap->idname);
|
||||
return;
|
||||
}
|
||||
|
||||
RNA_POINTER_INVALIDATE(keymap_ptr);
|
||||
}
|
||||
|
||||
static void rna_KeyConfig_remove(wmWindowManager *wm, ReportList *reports, PointerRNA *keyconf_ptr)
|
||||
{
|
||||
wmKeyConfig *keyconf = keyconf_ptr->data;
|
||||
@ -671,6 +683,12 @@ void RNA_api_keymaps(StructRNA *srna)
|
||||
parm = RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Added key map");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "remove", "rna_KeyMap_remove"); /* remove_keymap */
|
||||
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
||||
parm = RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "Removed key map");
|
||||
RNA_def_property_flag(parm, PROP_REQUIRED | PROP_NEVER_NULL | PROP_RNAPTR);
|
||||
RNA_def_property_clear_flag(parm, PROP_THICK_WRAP);
|
||||
|
||||
func = RNA_def_function(srna, "find", "rna_keymap_find"); /* find_keymap */
|
||||
parm = RNA_def_string(func, "name", "", 0, "Name", "");
|
||||
RNA_def_property_flag(parm, PROP_REQUIRED);
|
||||
|
@ -72,6 +72,7 @@ wmKeyMap *WM_keymap_find(struct wmKeyConfig *keyconf, const char *idname, int sp
|
||||
wmKeyMap *WM_keymap_find_all(const struct bContext *C, const char *idname, int spaceid, int regionid);
|
||||
wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap);
|
||||
wmKeyMap *WM_keymap_guess_opname(const struct bContext *C, const char *opname);
|
||||
int WM_keymap_remove(struct wmKeyConfig *keyconfig, struct wmKeyMap *keymap);
|
||||
|
||||
wmKeyMapItem *WM_keymap_item_find_id(struct wmKeyMap *keymap, int id);
|
||||
int WM_keymap_item_compare(struct wmKeyMapItem *k1, struct wmKeyMapItem *k2);
|
||||
|
@ -299,6 +299,21 @@ void WM_keymap_free(wmKeyMap *keymap)
|
||||
BLI_freelistN(&keymap->items);
|
||||
}
|
||||
|
||||
int WM_keymap_remove(wmKeyConfig *keyconf, wmKeyMap *keymap)
|
||||
{
|
||||
if (BLI_findindex(&keyconf->keymaps, keymap) != -1) {
|
||||
|
||||
WM_keymap_free(keymap);
|
||||
BLI_remlink(&keyconf->keymaps, keymap);
|
||||
MEM_freeN(keymap);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static void keymap_event_set(wmKeyMapItem *kmi, short type, short val, int modifier, short keymodifier)
|
||||
{
|
||||
kmi->type = type;
|
||||
|
Loading…
Reference in New Issue
Block a user