diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-05-15 02:44:56 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-05-15 02:47:07 +0300 |
commit | 72e484e88fa6f2e66de5c3673a2bce1b2f61e603 (patch) | |
tree | fff5e4f36e6438700de2a60836a43c7daa62178b /source/blender/editors/interface/interface_handlers.c | |
parent | a63be6c6c729a0047bb5cfeda2eca570053eac08 (diff) |
Fix preference dirty tagging for addons & keymaps
Diffstat (limited to 'source/blender/editors/interface/interface_handlers.c')
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index ca5bb945d99..e4adf757c80 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -554,13 +554,26 @@ static bool ui_but_dragedit_update_mval(uiHandleButtonData *data, int mx) static void ui_but_update_preferences_dirty(uiBut *but) { /* Not very elegant, but ensures preference changes force re-save. */ - if (but->rnaprop && (but->rnapoin.data == &U)) { - /* Exclude navigation from setting dirty. */ - extern PropertyRNA rna_Preferences_active_section; - if (!ELEM(but->rnaprop, &rna_Preferences_active_section)) { - U.runtime.is_dirty = true; - WM_main_add_notifier(NC_WINDOW, NULL); + bool tag = false; + if (but->rnaprop) { + if (but->rnapoin.data == &U) { + /* Exclude navigation from setting dirty. */ + extern PropertyRNA rna_Preferences_active_section; + if (!ELEM(but->rnaprop, &rna_Preferences_active_section)) { + tag = true; + } } + else { + StructRNA *base = RNA_struct_base(but->rnapoin.type); + if (ELEM(base, &RNA_AddonPreferences, &RNA_KeyConfigPreferences)) { + tag = true; + } + } + } + + if (tag) { + U.runtime.is_dirty = true; + WM_main_add_notifier(NC_WINDOW, NULL); } } |