diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-06-11 10:24:00 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-06-11 10:24:00 +0300 |
commit | 3f648f5b423347fa31e60cf52701a10862a157f1 (patch) | |
tree | 1fae9fc722d34bc43b6d1756ae91c9157c86d4c5 /source/blender/editors/interface | |
parent | e43a948a2ca7aef365ac0e6808341215e35ee4ff (diff) |
Fix T77171: File selector doesn't tag preferences to be saved
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 14 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_layout.c | 5 |
2 files changed, 16 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index b37b2f2cd4b..336f942ad8c 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -585,7 +585,7 @@ static bool ui_but_dragedit_update_mval(uiHandleButtonData *data, int mx) return true; } -static void ui_rna_update_preferences_dirty(PointerRNA *ptr, PropertyRNA *prop) +static bool ui_rna_is_userdef(PointerRNA *ptr, PropertyRNA *prop) { /* Not very elegant, but ensures preference changes force re-save. */ bool tag = false; @@ -598,8 +598,18 @@ static void ui_rna_update_preferences_dirty(PointerRNA *ptr, PropertyRNA *prop) tag = true; } } + return tag; +} - if (tag) { +bool UI_but_is_userdef(const uiBut *but) +{ + /* This is read-only, RNA API isn't using const when it could. */ + return ui_rna_is_userdef((PointerRNA *)&but->rnapoin, but->rnaprop); +} + +static void ui_rna_update_preferences_dirty(PointerRNA *ptr, PropertyRNA *prop) +{ + if (ui_rna_is_userdef(ptr, prop)) { U.runtime.is_dirty = true; WM_main_add_notifier(NC_WINDOW, NULL); } diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 196fdf47bd3..6aefef197df 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -1069,7 +1069,8 @@ static uiBut *ui_item_with_label(uiLayout *layout, void UI_context_active_but_prop_get_filebrowser(const bContext *C, PointerRNA *r_ptr, PropertyRNA **r_prop, - bool *r_is_undo) + bool *r_is_undo, + bool *r_is_userdef) { ARegion *region = CTX_wm_menu(C) ? CTX_wm_menu(C) : CTX_wm_region(C); uiBlock *block; @@ -1078,6 +1079,7 @@ void UI_context_active_but_prop_get_filebrowser(const bContext *C, memset(r_ptr, 0, sizeof(*r_ptr)); *r_prop = NULL; *r_is_undo = false; + *r_is_userdef = false; if (!region) { return; @@ -1096,6 +1098,7 @@ void UI_context_active_but_prop_get_filebrowser(const bContext *C, *r_ptr = prevbut->rnapoin; *r_prop = prevbut->rnaprop; *r_is_undo = (prevbut->flag & UI_BUT_UNDO) != 0; + *r_is_userdef = UI_but_is_userdef(prevbut); return; } } |