Fix #36793: missing update on undo with proxy object that is not using a proxy group.

This commit is contained in:
Brecht Van Lommel
2013-09-23 21:55:56 +00:00
parent fc2dbc20ff
commit fb591ea913
2 changed files with 9 additions and 8 deletions

View File

@@ -2115,6 +2115,8 @@ void DAG_on_visible_update(Main *bmain, const short do_time)
if ((oblay & lay) & ~scene->lay_updated) {
if (ELEM6(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL, OB_LATTICE))
ob->recalc |= OB_RECALC_DATA;
if (ob->proxy && (ob->proxy_group == NULL))
ob->proxy->recalc |= OB_RECALC_DATA;
if (ob->dup_group)
dag_group_on_visible_update(ob->dup_group);
}

View File

@@ -2835,21 +2835,20 @@ void BKE_object_handle_update_ex(Scene *scene, Object *ob,
/* quick cache removed */
}
/* the no-group proxy case, we call update */
if (ob->proxy && ob->proxy_group == NULL) {
/* set pointer in library proxy target, for copying, but restore it */
ob->proxy->proxy_from = ob;
// printf("call update, lib ob %s proxy %s\n", ob->proxy->id.name, ob->id.name);
BKE_object_handle_update(scene, ob->proxy);
}
ob->recalc &= ~OB_RECALC_ALL;
}
/* the case when this is a group proxy, object_update is called in group.c */
if (ob->proxy) {
/* set pointer in library proxy target, for copying, but restore it */
ob->proxy->proxy_from = ob;
// printf("set proxy pointer for later group stuff %s\n", ob->id.name);
/* the no-group proxy case, we call update */
if (ob->proxy_group == NULL) {
// printf("call update, lib ob %s proxy %s\n", ob->proxy->id.name, ob->id.name);
BKE_object_handle_update(scene, ob->proxy);
}
}
}
/* WARNING: "scene" here may not be the scene object actually resides in.