Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2011-01-04 17:37:21 +0300
committerTon Roosendaal <ton@blender.org>2011-01-04 17:37:21 +0300
commit8b1bfbcfea8af306dbf42743b5f67d46159015c5 (patch)
tree8e0b3b9a2b193b679ffa0048dfacc7369481c169 /source/blender/windowmanager
parentc2bc82c9fcd14bcaec14e54c867757baa45b52d6 (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.c16
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");