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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user