diff options
author | Ton Roosendaal <ton@blender.org> | 2011-01-04 17:37:21 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2011-01-04 17:37:21 +0300 |
commit | 8b1bfbcfea8af306dbf42743b5f67d46159015c5 (patch) | |
tree | 8e0b3b9a2b193b679ffa0048dfacc7369481c169 /source/blender/windowmanager | |
parent | c2bc82c9fcd14bcaec14e54c867757baa45b52d6 (diff) |
Todo items:
- File Window: when opened with operator (save, load, etc), you
couldn't start a new one, causing memleaks. Now it nicely
refreshes file window for new operator.
Also means you can make CTRL+F3 screenies of filewindow now.
- CTRL+F3 screenshot had memleak on cancel.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 7ad52f8fcb1..b84a00097b1 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1893,14 +1893,20 @@ void WM_event_fileselect_event(bContext *C, void *ophandle, int eventval) void WM_event_add_fileselect(bContext *C, wmOperator *op) { - wmEventHandler *handler; + wmEventHandler *handler, *handlernext; wmWindow *win= CTX_wm_window(C); int full= 1; // XXX preset? - /* only allow file selector open per window bug [#23553] */ - for(handler= win->modalhandlers.first; handler; handler=handler->next) { - if(handler->type == WM_HANDLER_FILESELECT) - return; + /* only allow 1 file selector open per window */ + for(handler= win->modalhandlers.first; handler; handler=handlernext) { + handlernext= handler->next; + + if(handler->type == WM_HANDLER_FILESELECT) { + if(handler->op) + WM_operator_free(handler->op); + BLI_remlink(&win->modalhandlers, handler); + wm_event_free_handler(handler); + } } handler = MEM_callocN(sizeof(wmEventHandler), "fileselect handler"); |