Commit: 3e77baafa77477247f88269d5b46a4be928850b2
Author: Julian Eisel
Date:   Sun Apr 9 14:30:26 2017 +0200
Branches: workspaces
https://developer.blender.org/rB3e77baafa77477247f88269d5b46a4be928850b2

Minor fix for notifiers & cleanup

===================================================================

M       source/blender/editors/screen/screen_edit.c
M       source/blender/editors/screen/screen_ops.c
M       source/blender/editors/space_view3d/space_view3d.c
M       source/blender/makesrna/intern/rna_wm.c
M       source/blender/windowmanager/WM_types.h
M       source/blender/windowmanager/intern/wm_event_system.c

===================================================================

diff --git a/source/blender/editors/screen/screen_edit.c 
b/source/blender/editors/screen/screen_edit.c
index 19eb6b3c117..ca63de31578 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -1253,6 +1253,8 @@ bScreen *screen_change_prepare(bScreen *screen_old, 
bScreen *screen_new, Main *b
 void screen_changed_update(bContext *C, wmWindow *win, bScreen *sc)
 {
        Scene *scene = WM_window_get_active_scene(win);
+       WorkSpace *workspace = BKE_workspace_active_get(win->workspace_hook);
+       WorkSpaceLayout *layout = BKE_workspace_layout_find(workspace, sc);
 
        CTX_wm_window_set(C, win);  /* stores C->wm.screen... hrmf */
 
@@ -1260,7 +1262,7 @@ void screen_changed_update(bContext *C, wmWindow *win, 
bScreen *sc)
 
        BKE_screen_view3d_scene_sync(sc, scene); /* sync new screen with scene 
data */
        WM_event_add_notifier(C, NC_WINDOW, NULL);
-       WM_event_add_notifier(C, NC_SCREEN | ND_SCREENSET, sc);
+       WM_event_add_notifier(C, NC_SCREEN | ND_LAYOUTSET, layout);
 
        /* makes button hilites work */
        WM_event_add_mousemove(C);
diff --git a/source/blender/editors/screen/screen_ops.c 
b/source/blender/editors/screen/screen_ops.c
index 38162c0d94b..269f80fbe49 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -3897,7 +3897,7 @@ static int screen_new_exec(bContext *C, wmOperator 
*UNUSED(op))
        WorkSpaceLayout *layout_new;
 
        layout_new = ED_workspace_layout_duplicate(workspace, layout_old, win);
-       WM_event_add_notifier(C, NC_SCREEN | ND_SCREENBROWSE, layout_new);
+       WM_event_add_notifier(C, NC_SCREEN | ND_LAYOUTBROWSE, layout_new);
 
        return OPERATOR_FINISHED;
 }
@@ -3922,7 +3922,7 @@ static int screen_delete_exec(bContext *C, wmOperator 
*UNUSED(op))
        WorkSpace *workspace = CTX_wm_workspace(C);
        WorkSpaceLayout *layout = BKE_workspace_layout_find(workspace, sc);
 
-       WM_event_add_notifier(C, NC_SCREEN | ND_SCREENDELETE, layout);
+       WM_event_add_notifier(C, NC_SCREEN | ND_LAYOUTDELETE, layout);
 
        return OPERATOR_FINISHED;
 }
diff --git a/source/blender/editors/space_view3d/space_view3d.c 
b/source/blender/editors/space_view3d/space_view3d.c
index 6bdaf00b4c6..00cb6728e10 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -858,6 +858,7 @@ static void view3d_main_region_listener(bScreen 
*UNUSED(sc), ScrArea *sa, ARegio
                        break;
                case NC_SCENE:
                        switch (wmn->data) {
+                               case ND_SCENEBROWSE:
                                case ND_LAYER_CONTENT:
                                        if (wmn->reference)
                                                view3d_recalc_used_layers(ar, 
wmn, wmn->reference);
@@ -1044,15 +1045,9 @@ static void view3d_main_region_listener(bScreen 
*UNUSED(sc), ScrArea *sa, ARegio
                                case ND_SKETCH:
                                        ED_region_tag_redraw(ar);
                                        break;
-                               /* XXX */
-//                             case ND_SCREENBROWSE:
-//                             case ND_SCREENDELETE:
-                               case ND_SCREENSET:
-                                       /* screen was changed, need to update 
used layers due to NC_SCENE|ND_LAYER_CONTENT */
-                                       /* updates used layers only for View3D 
in active screen */
-                                       if (wmn->reference) {
-                                               view3d_recalc_used_layers(ar, 
wmn, scene);
-                                       }
+                               case ND_LAYOUTBROWSE:
+                               case ND_LAYOUTDELETE:
+                               case ND_LAYOUTSET:
                                        WM_manipulatormap_tag_refresh(mmap);
                                        ED_region_tag_redraw(ar);
                                        break;
diff --git a/source/blender/makesrna/intern/rna_wm.c 
b/source/blender/makesrna/intern/rna_wm.c
index 9cdd1c3d5a0..19283c27d3b 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -742,7 +742,7 @@ static void rna_workspace_screen_update(bContext *C, 
PointerRNA *ptr)
        /* exception: can't set screens inside of area/region handlers,
         * and must use context so notifier gets to the right window */
        if (layout_new) {
-               WM_event_add_notifier(C, NC_SCREEN | ND_SCREENBROWSE, 
layout_new);
+               WM_event_add_notifier(C, NC_SCREEN | ND_LAYOUTBROWSE, 
layout_new);
                BKE_workspace_temp_layout_store_set(win->workspace_hook, NULL);
        }
 }
diff --git a/source/blender/windowmanager/WM_types.h 
b/source/blender/windowmanager/WM_types.h
index 23e1b71d812..053810172ed 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -259,13 +259,13 @@ typedef struct wmNotifier {
 #define ND_UNDO                                (6<<16)
 
        /* NC_SCREEN */
-#define ND_SCREENBROWSE                (1<<16)
-#define ND_SCREENDELETE                (2<<16)
+#define ND_LAYOUTBROWSE                (1<<16)
+#define ND_LAYOUTDELETE                (2<<16)
 #define ND_SCREENCAST          (3<<16)
 #define ND_ANIMPLAY                    (4<<16)
 #define ND_GPENCIL                     (5<<16)
 #define ND_EDITOR_CHANGED      (6<<16) /*sent to new editors after switching 
to them*/
-#define ND_SCREENSET           (7<<16)
+#define ND_LAYOUTSET           (7<<16)
 #define ND_SKETCH                      (8<<16)
 #define ND_WORKSPACE_SET       (9<<16)
 
diff --git a/source/blender/windowmanager/intern/wm_event_system.c 
b/source/blender/windowmanager/intern/wm_event_system.c
index 5614cd92903..84a57d2ba1c 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -303,7 +303,7 @@ void wm_event_do_notifiers(bContext *C)
                                                if (G.debug & G_DEBUG_EVENTS)
                                                        printf("%s: Workspace 
set %p\n", __func__, note->reference);
                                        }
-                                       else if (note->data == ND_SCREENBROWSE) 
{
+                                       else if (note->data == ND_LAYOUTBROWSE) 
{
                                                bScreen *ref_screen = 
BKE_workspace_layout_screen_get(note->reference);
 
                                                /* free popup handlers only 
[#35434] */
@@ -314,7 +314,7 @@ void wm_event_do_notifiers(bContext *C)
                                                if (G.debug & G_DEBUG_EVENTS)
                                                        printf("%s: screen set 
%p\n", __func__, note->reference);
                                        }
-                                       else if (note->data == ND_SCREENDELETE) 
{
+                                       else if (note->data == ND_LAYOUTDELETE) 
{
                                                WorkSpace *workspace = 
WM_window_get_active_workspace(win);
                                                WorkSpaceLayout *layout = 
note->reference;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to