Reset operator properties for keymap items when operator idname is changed.
This means added operators in the keymap editor will now show options correctly (maybe not for old .B25.blend)
This commit is contained in:
@@ -255,6 +255,8 @@ EnumPropertyItem keymap_modifiers_items[] = {
|
||||
|
||||
#include "BKE_idprop.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
static wmOperator *rna_OperatorProperties_find_operator(PointerRNA *ptr)
|
||||
{
|
||||
wmWindowManager *wm= ptr->id.data;
|
||||
@@ -558,6 +560,8 @@ static void rna_wmKeyMapItem_idname_set(PointerRNA *ptr, const char *value)
|
||||
|
||||
WM_operator_bl_idname(idname, value);
|
||||
BLI_strncpy(kmi->idname, idname, sizeof(kmi->idname));
|
||||
|
||||
WM_keymap_properties_reset(kmi);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
@@ -112,6 +112,7 @@ wmKeyMap *WM_keymap_active(struct wmWindowManager *wm, struct wmKeyMap *keymap);
|
||||
int WM_keymap_user_init(struct wmWindowManager *wm, struct wmKeyMap *keymap);
|
||||
wmKeyMap *WM_keymap_copy_to_user(struct wmKeyMap *keymap);
|
||||
void WM_keymap_restore_to_default(struct wmKeyMap *keymap);
|
||||
void WM_keymap_properties_reset(struct wmKeyMapItem *kmi);
|
||||
|
||||
wmKeyMap *WM_modalkeymap_add(struct wmKeyConfig *keyconf, char *idname, struct EnumPropertyItem *items);
|
||||
wmKeyMap *WM_modalkeymap_get(struct wmKeyConfig *keyconf, char *idname);
|
||||
|
||||
@@ -55,6 +55,17 @@
|
||||
|
||||
/* ********************* key config ***********************/
|
||||
|
||||
void WM_keymap_properties_reset(wmKeyMapItem *kmi)
|
||||
{
|
||||
WM_operator_properties_free(kmi->ptr);
|
||||
MEM_freeN(kmi->ptr);
|
||||
|
||||
kmi->ptr = NULL;
|
||||
kmi->properties = NULL;
|
||||
|
||||
WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), kmi->idname);
|
||||
}
|
||||
|
||||
static void keymap_properties_set(wmKeyMapItem *kmi)
|
||||
{
|
||||
WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), kmi->idname);
|
||||
|
||||
Reference in New Issue
Block a user