diff options
author | Julian Eisel <julian@blender.org> | 2020-03-06 18:22:28 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2020-03-06 18:27:13 +0300 |
commit | d5572eacc5958db38ac4a4a32eddb3a2cd24bf68 (patch) | |
tree | 5252d8f509dae02bf9c137a1710c073d5bbac592 /source/blender/windowmanager/intern/wm_window.c | |
parent | b242cc67928a6858a835c088e4d3ea8822c83168 (diff) |
Cleanup: Reduce context usage in UI functions
Part of https://developer.blender.org/T74429.
There's a chance that this causes some issues becaue in some cases we
change from getting the window from context to getting it from somewhere
else.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_window.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 148195df372..57612964295 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -283,10 +283,8 @@ static int find_free_winid(wmWindowManager *wm) } /* don't change context itself */ -wmWindow *wm_window_new(bContext *C, wmWindow *parent) +wmWindow *wm_window_new(const Main *bmain, wmWindowManager *wm, wmWindow *parent) { - Main *bmain = CTX_data_main(C); - wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = MEM_callocN(sizeof(wmWindow), "window"); BLI_addtail(&wm->windows, win); @@ -300,14 +298,14 @@ wmWindow *wm_window_new(bContext *C, wmWindow *parent) } /* part of wm_window.c api */ -wmWindow *wm_window_copy(bContext *C, +wmWindow *wm_window_copy(Main *bmain, + wmWindowManager *wm, wmWindow *win_src, const bool duplicate_layout, const bool child) { - Main *bmain = CTX_data_main(C); wmWindow *win_parent = (child) ? win_src : win_src->parent; - wmWindow *win_dst = wm_window_new(C, win_parent); + wmWindow *win_dst = wm_window_new(bmain, wm, win_parent); WorkSpace *workspace = WM_window_get_active_workspace(win_src); WorkSpaceLayout *layout_old = WM_window_get_active_layout(win_src); WorkSpaceLayout *layout_new; @@ -339,15 +337,16 @@ wmWindow *wm_window_copy_test(bContext *C, const bool duplicate_layout, const bool child) { + Main *bmain = CTX_data_main(C); wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win_dst; - win_dst = wm_window_copy(C, win_src, duplicate_layout, child); + win_dst = wm_window_copy(bmain, wm, win_src, duplicate_layout, child); WM_check(C); if (win_dst->ghostwin) { - WM_event_add_notifier(C, NC_WINDOW | NA_ADDED, NULL); + WM_event_add_notifier_ex(wm, CTX_wm_window(C), NC_WINDOW | NA_ADDED, NULL); return win_dst; } else { @@ -394,7 +393,7 @@ void wm_quit_with_optional_confirmation_prompt(bContext *C, wmWindow *win) CTX_wm_window_set(C, win); if (U.uiflag & USER_SAVE_PROMPT) { - if (wm_file_or_image_is_modified(C) && !G.background) { + if (wm_file_or_image_is_modified(CTX_data_main(C), CTX_wm_manager(C)) && !G.background) { wm_window_raise(win); wm_confirm_quit(C); } @@ -809,8 +808,9 @@ void wm_window_ghostwindows_remove_invalid(bContext *C, wmWindowManager *wm) */ wmWindow *WM_window_open(bContext *C, const rcti *rect) { + wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win_prev = CTX_wm_window(C); - wmWindow *win = wm_window_new(C, win_prev); + wmWindow *win = wm_window_new(CTX_data_main(C), wm, win_prev); win->posx = rect->xmin; win->posy = rect->ymin; @@ -823,7 +823,7 @@ wmWindow *WM_window_open(bContext *C, const rcti *rect) return win; } else { - wm_window_close(C, CTX_wm_manager(C), win); + wm_window_close(C, wm, win); CTX_wm_window_set(C, win_prev); return NULL; } @@ -881,7 +881,7 @@ wmWindow *WM_window_open_temp(bContext *C, /* add new window? */ if (win == NULL) { - win = wm_window_new(C, win_prev); + win = wm_window_new(bmain, wm, win_prev); win->posx = rect.xmin; win->posy = rect.ymin; @@ -1573,6 +1573,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr C_void_ptr */ static int wm_window_timer(const bContext *C) { + Main *bmain = CTX_data_main(C); wmWindowManager *wm = CTX_wm_manager(C); wmTimer *wt, *wtnext; wmWindow *win; @@ -1591,10 +1592,10 @@ static int wm_window_timer(const bContext *C) wt->ntime = wt->stime + wt->timestep * ceil(wt->duration / wt->timestep); if (wt->event_type == TIMERJOBS) { - wm_jobs_timer(C, wm, wt); + wm_jobs_timer(wm, wt); } else if (wt->event_type == TIMERAUTOSAVE) { - wm_autosave_timer(C, wm, wt); + wm_autosave_timer(bmain, wm, wt); } else if (wt->event_type == TIMERNOTIFIER) { WM_main_add_notifier(POINTER_AS_UINT(wt->customdata), NULL); |