From 9173c142d6547d882755221d9cb2d0d5ebc023d1 Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Wed, 20 Sep 2023 20:15:38 +0200 Subject: [PATCH] UI: File Loading Waiting Feedback When loading a blend file remove any open menus and show a "waiting" mouse cursor during the process. Pull Request: https://projects.blender.org/blender/blender/pulls/112636 --- .../blender/windowmanager/intern/wm_files.cc | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_files.cc b/source/blender/windowmanager/intern/wm_files.cc index 299ea1267d5..1317043b75b 100644 --- a/source/blender/windowmanager/intern/wm_files.cc +++ b/source/blender/windowmanager/intern/wm_files.cc @@ -692,6 +692,8 @@ static void wm_file_read_post(bContext *C, CTX_wm_window_set(C, static_cast(wm->windows.first)); } + WM_cursor_wait(true); + #ifdef WITH_PYTHON if (is_startup_file) { /* On startup (by default), Python won't have been initialized. @@ -785,6 +787,12 @@ static void wm_file_read_post(bContext *C, #endif } +#ifndef WITH_HEADLESS + if (!G.background) { + WM_redraw_windows(C); + } +#endif /* WITH_HEADLESS */ + /* report any errors. * currently disabled if addons aren't yet loaded */ if (addons_loaded) { @@ -818,6 +826,8 @@ static void wm_file_read_post(bContext *C, WM_toolsystem_init(C); } } + + WM_cursor_wait(false); } static void wm_read_callback_pre_wrapper(bContext *C, const char *filepath) @@ -1002,6 +1012,26 @@ bool WM_file_read(bContext *C, const char *filepath, ReportList *reports) /* so we can get the error message */ errno = 0; +#ifndef WITH_HEADLESS + if (!G.background) { + wmWindowManager *wm = CTX_wm_manager(C); + wmWindow *win = CTX_wm_window(C); + bool win_was_null = (win == nullptr); + if (win_was_null) { + win = static_cast(wm->windows.first); + CTX_wm_window_set(C, win); + } + if (win != nullptr) { + /* Redraw to remove any open menus. */ + WM_redraw_windows(C); + + if (win_was_null) { + CTX_wm_window_set(C, nullptr); + } + } + } +#endif /* WITH_HEADLESS */ + WM_cursor_wait(true); /* first try to append data from exotic file formats... */ @@ -1067,6 +1097,7 @@ bool WM_file_read(bContext *C, const char *filepath, ReportList *reports) bf_reports.duration.whole = PIL_check_seconds_timer() - bf_reports.duration.whole; file_read_reports_finalize(&bf_reports); + WM_cursor_wait(true); success = true; } } @@ -1171,6 +1202,8 @@ void wm_homefile_read_ex(bContext *C, char filepath_startup[FILE_MAX]; char filepath_userdef[FILE_MAX]; + WM_cursor_wait(true); + /* When 'app_template' is set: * '{BLENDER_USER_CONFIG}/{app_template}' */ char app_template_system[FILE_MAX]; @@ -1488,6 +1521,8 @@ void wm_homefile_read_ex(bContext *C, CTX_wm_window_set(C, nullptr); } } + + WM_cursor_wait(false); } void wm_homefile_read(bContext *C,