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:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-09-16 12:28:58 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-09-16 12:44:47 +0400
commit1e948b251d63cb9141ff71d24fbcf343d38c7da4 (patch)
tree822827473bfd5733a118baeef3536505cb04724e /source/blender
parentc9f0c20e4800a8179560ec678a8ab8cb48283cf2 (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/blender')
-rw-r--r--source/blender/editors/space_image/space_image.c6
-rw-r--r--source/blender/editors/space_node/space_node.c8
-rw-r--r--source/blender/editors/util/undo.c1
-rw-r--r--source/blender/windowmanager/WM_types.h1
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)