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-07-01 08:13:33 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-07-01 08:16:23 +0300
commit8eae674eee85931d7553bcfea7de17813ac9e70f (patch)
tree195e9a50c5b84957e4ea2bebc1259e3bbe68beeb /source/blender/editors/interface/interface_handlers.c
parentfc10a5cf9e008343ecb925fdb87a4faa18918359 (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.c21
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);
}