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:
2009-12-02 04:12:16 +00:00
parent fa2ec6af38
commit c758f6589e
3 changed files with 16 additions and 0 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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);