diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-07-01 08:13:33 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-07-01 08:16:23 +0300 |
commit | 8eae674eee85931d7553bcfea7de17813ac9e70f (patch) | |
tree | 195e9a50c5b84957e4ea2bebc1259e3bbe68beeb /source/blender/editors/interface/interface_handlers.c | |
parent | fc10a5cf9e008343ecb925fdb87a4faa18918359 (diff) |
Fix preferences setting dirty when editing keymap items
Diffstat (limited to 'source/blender/editors/interface/interface_handlers.c')
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 87d4bcbd1e8..b6c064ab1c1 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -551,12 +551,15 @@ static bool ui_but_dragedit_update_mval(uiHandleButtonData *data, int mx) return true; } -static void ui_but_update_preferences_dirty(uiBut *but) +static void ui_rna_update_preferences_dirty(PointerRNA *ptr, PropertyRNA *prop) { /* Not very elegant, but ensures preference changes force re-save. */ bool tag = false; - if (but->rnaprop) { - StructRNA *base = RNA_struct_base(but->rnapoin.type); + if (prop && !(RNA_property_flag(prop) & PROP_NO_DEG_UPDATE)) { + StructRNA *base = RNA_struct_base(ptr->type); + if (base == NULL) { + base = ptr->type; + } if (ELEM(base, &RNA_AddonPreferences, &RNA_KeyConfigPreferences, &RNA_KeyMapItem)) { tag = true; } @@ -568,6 +571,16 @@ static void ui_but_update_preferences_dirty(uiBut *but) } } +static void ui_but_update_preferences_dirty(uiBut *but) +{ + ui_rna_update_preferences_dirty(&but->rnapoin, but->rnaprop); +} + +static void ui_afterfunc_update_preferences_dirty(uiAfterFunc *after) +{ + ui_rna_update_preferences_dirty(&after->rnapoin, after->rnaprop); +} + /** \} */ /* -------------------------------------------------------------------- */ @@ -843,6 +856,8 @@ static void ui_apply_but_funcs_after(bContext *C) MEM_freeN(after.rename_orig); } + ui_afterfunc_update_preferences_dirty(&after); + if (after.undostr[0]) { ED_undo_push(C, after.undostr); } |