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>2009-02-09 18:50:09 +0300
committerTon Roosendaal <ton@blender.org>2009-02-09 18:50:09 +0300
commitf33309b0285079c14a8f9fc913157129ff6cbc81 (patch)
treea9a1e7dd869b8c09a8e8c1411bf995ddeb5703c3 /source/blender/windowmanager
parentc58d336a33b4105530af326dccef077ba0274fa6 (diff)
2.5
- Added depsgraph tag for object-change in AnimData, so the new animsys doesn't have to all objects anymore. (Still WIP, depsgraph has to do this much better) - Bugfix in notifiers; only 1 notifier was handled for frame updates Result: 2 windows, displaying 2 scenes, now can be edited independently, and play independent. Not when they share data, of course. :)
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/WM_types.h4
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c34
2 files changed, 21 insertions, 17 deletions
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index 1ace7bce09c..9382e170a21 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -121,7 +121,7 @@ typedef void (*wmUIHandlerRemoveFunc)(struct bContext *C, void *userdata);
/* ************** Notifiers ****************** */
typedef struct wmNotifier {
- struct wmNotifier *prev, *next;
+ struct wmNotifier *next, *prev;
struct wmWindowManager *wm;
struct wmWindow *window;
@@ -162,9 +162,9 @@ typedef struct wmNotifier {
/* NC_SCREEN screen */
#define ND_SCREENBROWSE (1<<16)
-#define ND_SCENEBROWSE (2<<16)
/* NC_SCENE Scene */
+#define ND_SCENEBROWSE (1<<16)
#define ND_MARKERS (2<<16)
#define ND_FRAME (3<<16)
#define ND_RENDER_OPTIONS (4<<16)
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index dcca2fa60c9..886456733f9 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -162,29 +162,33 @@ void wm_event_do_notifiers(bContext *C)
wmWindow *win;
for(win= wm->windows.first; win; win= win->next) {
- ScrArea *sa;
- ARegion *ar;
+
+ /* filter out notifiers */
+ if(note->category==NC_SCREEN && note->reference && note->reference!=win->screen);
+ else if(note->category==NC_SCENE && note->reference && note->reference!=win->screen->scene);
+ else {
+ ScrArea *sa;
+ ARegion *ar;
- /* XXX context in notifiers? */
- CTX_wm_window_set(C, win);
+ /* XXX context in notifiers? */
+ CTX_wm_window_set(C, win);
- /* printf("notifier win %d screen %s\n", win->winid, win->screen->id.name+2); */
- ED_screen_do_listen(win, note);
+ /* printf("notifier win %d screen %s\n", win->winid, win->screen->id.name+2); */
+ ED_screen_do_listen(win, note);
- for(ar=win->screen->regionbase.first; ar; ar= ar->next) {
- ED_region_do_listen(ar, note);
- }
-
- for(sa= win->screen->areabase.first; sa; sa= sa->next) {
- ED_area_do_listen(sa, note);
- for(ar=sa->regionbase.first; ar; ar= ar->next) {
+ for(ar=win->screen->regionbase.first; ar; ar= ar->next) {
ED_region_do_listen(ar, note);
}
+
+ for(sa= win->screen->areabase.first; sa; sa= sa->next) {
+ ED_area_do_listen(sa, note);
+ for(ar=sa->regionbase.first; ar; ar= ar->next) {
+ ED_region_do_listen(ar, note);
+ }
+ }
}
}
- CTX_wm_window_set(C, NULL);
-
MEM_freeN(note);
}