diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index e7f5bb3b291..0054f151803 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -126,7 +126,8 @@ void WM_event_remove_handlers(struct bContext *C, ListBase *handlers); void WM_event_add_mousemove(struct bContext *C); int WM_modal_tweak_exit(struct wmEvent *evt, int tweak_event); -void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *data); +void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *reference); +void WM_main_add_notifier(unsigned int type, void *reference); void wm_event_add (struct wmWindow *win, struct wmEvent *event_to_add); /* XXX only for warning */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 086fdd3665b..4a8aac4525d 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -45,6 +45,7 @@ #include "BKE_context.h" #include "BKE_idprop.h" #include "BKE_global.h" +#include "BKE_main.h" #include "BKE_object.h" #include "BKE_report.h" #include "BKE_scene.h" @@ -118,6 +119,26 @@ void WM_event_add_notifier(const bContext *C, unsigned int type, void *reference note->reference= reference; } +void WM_main_add_notifier(unsigned int type, void *reference) +{ + Main *bmain= G.main; + wmWindowManager *wm= bmain->wm.first; + + if(wm) { + wmNotifier *note= MEM_callocN(sizeof(wmNotifier), "notifier"); + + note->wm= wm; + BLI_addtail(¬e->wm->queue, note); + + note->category= type & NOTE_CATEGORY; + note->data= type & NOTE_DATA; + note->subtype= type & NOTE_SUBTYPE; + note->action= type & NOTE_ACTION; + + note->reference= reference; + } +} + static wmNotifier *wm_notifier_next(wmWindowManager *wm) { wmNotifier *note= wm->queue.first;