diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-09-16 12:28:58 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-09-16 12:44:47 +0400 |
commit | 1e948b251d63cb9141ff71d24fbcf343d38c7da4 (patch) | |
tree | 822827473bfd5733a118baeef3536505cb04724e /source | |
parent | c9f0c20e4800a8179560ec678a8ab8cb48283cf2 (diff) |
Fix T41818: Missing refresh on Undo for nodes (mask example)
Added a special notifier now NC_WM|ND_UNDO in order to deal with such cases
and now compositor/image will refresh when undo happens.
There are much more ways to fail compo to update the resul, like undoing
while it's not visible and so, but as mont29 said -- let's at least fix
obvious crap in the workflow.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_image/space_image.c | 6 | ||||
-rw-r--r-- | source/blender/editors/space_node/space_node.c | 8 | ||||
-rw-r--r-- | source/blender/editors/util/undo.c | 1 | ||||
-rw-r--r-- | source/blender/windowmanager/WM_types.h | 1 |
4 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 375a0ddeac3..ffe9f13af3f 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -539,6 +539,12 @@ static void image_listener(bScreen *sc, ScrArea *sa, wmNotifier *wmn) } break; } + case NC_WM: + if(wmn->data == ND_UNDO) { + ED_area_tag_redraw(sa); + ED_area_tag_refresh(sa); + } + break; } } diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 9eaee60bfce..875639da113 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -420,6 +420,9 @@ static void node_area_listener(bScreen *sc, ScrArea *sa, wmNotifier *wmn) } } break; + case ND_LAYER_CONTENT: + ED_area_tag_refresh(sa); + break; } break; @@ -507,6 +510,11 @@ static void node_area_listener(bScreen *sc, ScrArea *sa, wmNotifier *wmn) ED_area_tag_refresh(sa); } break; + case NC_WM: + if(wmn->data == ND_UNDO) { + ED_area_tag_refresh(sa); + } + break; } } diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c index 9461010f49f..189a938e3d8 100644 --- a/source/blender/editors/util/undo.c +++ b/source/blender/editors/util/undo.c @@ -213,6 +213,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) } WM_event_add_notifier(C, NC_WINDOW, NULL); + WM_event_add_notifier(C, NC_WM | ND_UNDO, NULL); if (win) { win->addmousemove = true; diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 090d9516f1f..ff252f0fc20 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -249,6 +249,7 @@ typedef struct wmNotifier { #define ND_DATACHANGED (3<<16) #define ND_HISTORY (4<<16) #define ND_JOB (5<<16) +#define ND_UNDO (6<<16) /* NC_SCREEN screen */ #define ND_SCREENBROWSE (1<<16) |