2.5
[blender.git] / source / blender / windowmanager / intern / wm_init_exit.c
index 3346f0607a90099d6767a1b406626dbbbd55334e..4d170ceeb46478e105d65ab377fea6ed0d81ddb7 100644 (file)
@@ -74,6 +74,8 @@
 
 #include "WM_api.h"
 #include "WM_types.h"
+
+#include "wm_cursors.h"
 #include "wm_event_system.h"
 #include "wm.h"
 #include "wm_files.h"
@@ -110,6 +112,7 @@ void WM_init(bContext *C)
 {
        
        wm_ghost_init(C);       /* note: it assigns C to ghost! */
+       wm_init_cursor_data();
        wm_operatortype_init();
        
        set_free_windowmanager_cb(wm_close_and_free);   /* library.c */
@@ -164,7 +167,6 @@ void WM_exit(bContext *C)
        /* modal handlers are on window level freed, others too? */
        if(C && C->wm) {
                for(win= C->wm->windows.first; win; win= win->next) {
-                       ScrArea *sa;
                        ARegion *ar;
                        
                        C->window= win; /* needed by operator close callbacks */
@@ -173,11 +175,7 @@ void WM_exit(bContext *C)
                        for(ar= win->screen->regionbase.first; ar; ar= ar->next)
                                WM_event_remove_handlers(C, &ar->handlers);
                        
-                       for(sa= win->screen->areabase.first; sa; sa= sa->next) {
-                               WM_event_remove_handlers(C, &sa->handlers);
-                               for(ar= sa->regionbase.first; ar; ar= ar->next) 
-                                       WM_event_remove_handlers(C, &ar->handlers);
-                       }
+                       ED_screen_exit(C, win, win->screen);
                }
        }
        wm_operatortype_free();