Fix preferences setting dirty when editing keymap items

This commit is contained in:
Campbell Barton 2019-07-01 15:13:33 +10:00
parent fc10a5cf9e
commit 8eae674eee
Notes: blender-bot 2023-02-14 08:28:46 +01:00
Referenced by issue #65629, Modifying keymap won't tag prefs dirty
1 changed files with 18 additions and 3 deletions

View File

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