Fix preferences setting dirty when editing keymap items
This commit is contained in:
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
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue