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.
This commit is contained in:
2014-09-16 14:28:58 +06:00
parent c9f0c20e48
commit 1e948b251d
4 changed files with 16 additions and 0 deletions

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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)