From 881bb817630af3d88571b292f04c4ae43164ebec Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 28 Sep 2023 13:38:04 +1000 Subject: [PATCH] UI: don't access recent-search.txt when disabled or in background mode --- source/blender/editors/interface/interface_handlers.cc | 5 +++-- .../blender/editors/interface/interface_string_search.cc | 9 +++++++++ source/blender/makesdna/DNA_userdef_types.h | 6 +++--- source/blender/windowmanager/intern/wm_init_exit.cc | 5 ++++- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.cc b/source/blender/editors/interface/interface_handlers.cc index 0ff7df353cc..6bc194febbd 100644 --- a/source/blender/editors/interface/interface_handlers.cc +++ b/source/blender/editors/interface/interface_handlers.cc @@ -1253,8 +1253,9 @@ static void ui_apply_but_TEX(bContext *C, uiBut *but, uiHandleButtonData *data) if ((but->func_arg2 == nullptr) && (but->type == UI_BTYPE_SEARCH_MENU)) { uiButSearch *search_but = (uiButSearch *)but; but->func_arg2 = search_but->item_active; - - blender::ui::string_search::add_recent_search(search_but->item_active_str); + if ((U.flag & USER_FLAG_RECENT_SEARCHES_DISABLE) == 0) { + blender::ui::string_search::add_recent_search(search_but->item_active_str); + } } ui_apply_but_func(C, but); diff --git a/source/blender/editors/interface/interface_string_search.cc b/source/blender/editors/interface/interface_string_search.cc index ba8081e645e..bcc94c0298c 100644 --- a/source/blender/editors/interface/interface_string_search.cc +++ b/source/blender/editors/interface/interface_string_search.cc @@ -29,6 +29,7 @@ struct RecentCacheStorage { static RecentCacheStorage &get_recent_cache_storage() { + BLI_assert((U.flag & USER_FLAG_RECENT_SEARCHES_DISABLE) == 0); static RecentCacheStorage storage; return storage; } @@ -62,6 +63,10 @@ static std::optional get_recent_searches_file_path() void write_recent_searches_file() { + if (U.flag & USER_FLAG_RECENT_SEARCHES_DISABLE) { + return; + } + const std::optional path = get_recent_searches_file_path(); if (!path) { return; @@ -83,6 +88,10 @@ void write_recent_searches_file() void read_recent_searches_file() { + if (U.flag & USER_FLAG_RECENT_SEARCHES_DISABLE) { + return; + } + const std::optional path = get_recent_searches_file_path(); if (!path) { return; diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 8f0fd2208b8..de62076126d 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -1083,9 +1083,9 @@ typedef enum eUserPref_SpaceData_Flag { typedef enum eUserPref_Flag { USER_AUTOSAVE = (1 << 0), USER_FLAG_NUMINPUT_ADVANCED = (1 << 1), - USER_FLAG_RECENT_SEARCHES_DISABLE = (1 << 2), /* cleared */ - USER_FLAG_UNUSED_3 = (1 << 3), /* cleared */ - USER_FLAG_UNUSED_4 = (1 << 4), /* cleared */ + USER_FLAG_RECENT_SEARCHES_DISABLE = (1 << 2), + USER_FLAG_UNUSED_3 = (1 << 3), /* cleared */ + USER_FLAG_UNUSED_4 = (1 << 4), /* cleared */ USER_TRACKBALL = (1 << 5), USER_FLAG_UNUSED_6 = (1 << 6), /* cleared */ USER_FLAG_UNUSED_7 = (1 << 7), /* cleared */ diff --git a/source/blender/windowmanager/intern/wm_init_exit.cc b/source/blender/windowmanager/intern/wm_init_exit.cc index f2c1693d730..819096ee777 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.cc +++ b/source/blender/windowmanager/intern/wm_init_exit.cc @@ -359,7 +359,10 @@ void WM_init(bContext *C, int argc, const char **argv) ED_render_clear_mtex_copybuf(); wm_history_file_read(); - blender::ui::string_search::read_recent_searches_file(); + + if (!G.background) { + blender::ui::string_search::read_recent_searches_file(); + } STRNCPY(G.lib, BKE_main_blendfile_path_from_global());