diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-11-23 14:49:23 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-11-23 14:49:23 +0300 |
commit | f8d40d2da04e07481acbe8affc7249cb7165c649 (patch) | |
tree | f52c6f3fc37634bdba025e82677d516c626a812b | |
parent | e0fc6d0c3360c1e5b61bdeefeb92cd3325780fab (diff) |
2.5 internal bugfix: remove modal handlers before exiting the screen,
since these may be using it.
-rw-r--r-- | source/blender/editors/interface/interface_regions.c | 4 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 3 |
3 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 388b83cff11..2c4fb71af75 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -1321,9 +1321,7 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut void ui_popup_block_free(bContext *C, uiPopupBlockHandle *handle) { - /* XXX ton added, chrash on load file with popup open... need investigate */ - if(CTX_wm_screen(C)) - ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region); + ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region); MEM_freeN(handle); } diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index a150ca1f8a0..ba514f097e6 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -122,6 +122,8 @@ static void wm_window_match_init(bContext *C, ListBase *wmlist) for(win= wm->windows.first; win; win= win->next) { CTX_wm_window_set(C, win); /* needed by operator close callbacks */ + WM_event_remove_handlers(C, &win->handlers); + WM_event_remove_handlers(C, &win->modalhandlers); ED_screen_exit(C, win, win->screen); } } diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index dbc3d27be6a..78d70c96ad6 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -230,6 +230,9 @@ void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win) BLI_remlink(&wm->windows, win); wm_draw_window_clear(win); + CTX_wm_window_set(C, win); /* needed by handlers */ + WM_event_remove_handlers(C, &win->handlers); + WM_event_remove_handlers(C, &win->modalhandlers); ED_screen_exit(C, win, win->screen); wm_window_free(C, wm, win); |