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:
authorNathan Letwory <nathan@letworyinteractive.com>2010-09-18 02:12:23 +0400
committerNathan Letwory <nathan@letworyinteractive.com>2010-09-18 02:12:23 +0400
commita06c46d8dd552a651c90f0ca9805bfbba04cb193 (patch)
tree93c6dd1140ead737eb683d74a22c668cfb8f7025 /source/blender/windowmanager/intern/wm_event_system.c
parentb4a4c330540deeb7ea9e5f749e9fbf0768731b68 (diff)
Apply patch [#23846] Fix for [#23698] in File Browser system. Properly removes handler and sfile when File selector disapears.
Patch by Alexander Kuznetsov Reported by Chidozie Oku From patch description: " Handler is now released on every exit from File Selector. For example pressing ctrl-up and then changing editor type to another also releases the handler. When an area is changed from SPACE_FILE, ED_fileselect_exit is called for clean up. It takes function of freeing folder list and files (before it was done in cancel or exec functions) because they must be released on every exit anyway. op!=null means cancel or exec was not executed so a handler was not released. ED_fileselect_exit then releases the handler without changing screens. " Thanks!
Diffstat (limited to 'source/blender/windowmanager/intern/wm_event_system.c')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index c32fb372ffd..9e7606a9f14 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1224,18 +1224,20 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
case EVT_FILESELECT_EXEC:
case EVT_FILESELECT_CANCEL:
+ case EVT_FILESELECT_EXTERNAL_CANCEL:
{
/* XXX validate area and region? */
bScreen *screen= CTX_wm_screen(C);
-
- if(screen != handler->filescreen)
- ED_screen_full_prevspace(C, CTX_wm_area(C));
- else
- ED_area_prevspace(C, CTX_wm_area(C));
-
- /* remlink now, for load file case */
+
+ /* remlink now, for load file case before removing*/
BLI_remlink(handlers, handler);
+ if(event->val!=EVT_FILESELECT_EXTERNAL_CANCEL)
+ if(screen != handler->filescreen)
+ ED_screen_full_prevspace(C, CTX_wm_area(C));
+ else
+ ED_area_prevspace(C, CTX_wm_area(C));
+
wm_handler_op_context(C, handler);
/* needed for uiPupMenuReports */