bugfix [#21929] linking in groups into a linked in scene is possible and those groups can't be deleted

- Disallow this and report a warning in the console when it happens.
 - File selector operators now report in the global report console.
 - Cleared some warnings.
This commit is contained in:
Campbell Barton 2010-04-08 11:46:52 +00:00
parent df395faf22
commit 23e6ada74f
5 changed files with 18 additions and 5 deletions

@ -396,7 +396,7 @@ bPoseChannel *get_pose_channel(const bPose *pose, const char *name)
return NULL; return NULL;
if(pose->chanhash) if(pose->chanhash)
return BLI_ghash_lookup(pose->chanhash, name); return BLI_ghash_lookup(pose->chanhash, (void *)name);
return BLI_findstring(&((bPose *)pose)->chanbase, name, offsetof(bPoseChannel, name)); return BLI_findstring(&((bPose *)pose)->chanbase, name, offsetof(bPoseChannel, name));
} }

@ -625,14 +625,14 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, floa
} }
if(tot) { if(tot) {
#if 0
bglMats mats; /* ZBuffer depth vars */ bglMats mats; /* ZBuffer depth vars */
double ux, uy, uz; double ux, uy, uz;
float depth; float depth;
if(v3d->zbuf) if(v3d->zbuf)
bgl_get_mats(&mats); bgl_get_mats(&mats);
#endif
if(rv3d->rflag & RV3D_CLIPPING) if(rv3d->rflag & RV3D_CLIPPING)
for(a=0; a<6; a++) for(a=0; a<6; a++)
glDisable(GL_CLIP_PLANE0+a); glDisable(GL_CLIP_PLANE0+a);

@ -44,8 +44,8 @@
void RNA_api_keyingset(StructRNA *srna) void RNA_api_keyingset(StructRNA *srna)
{ {
FunctionRNA *func; // FunctionRNA *func;
PropertyRNA *parm; // PropertyRNA *parm;
} }
#endif #endif

@ -1240,6 +1240,10 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
handler->op->reports->printlevel = RPT_WARNING; handler->op->reports->printlevel = RPT_WARNING;
uiPupMenuReports(C, handler->op->reports); uiPupMenuReports(C, handler->op->reports);
/* XXX - copied from 'wm_operator_finished()' */
/* add reports to the global list, otherwise they are not seen */
addlisttolist(&CTX_wm_reports(C)->list, &handler->op->reports->list);
CTX_wm_window_set(C, win_prev); CTX_wm_window_set(C, win_prev);
} }

@ -1482,6 +1482,7 @@ static short wm_link_append_flag(wmOperator *op)
if(RNA_boolean_get(op->ptr, "relative_path")) flag |= FILE_RELPATH; if(RNA_boolean_get(op->ptr, "relative_path")) flag |= FILE_RELPATH;
if(RNA_boolean_get(op->ptr, "link")) flag |= FILE_LINK; if(RNA_boolean_get(op->ptr, "link")) flag |= FILE_LINK;
if(RNA_boolean_get(op->ptr, "instance_groups")) flag |= FILE_GROUP_INSTANCE; if(RNA_boolean_get(op->ptr, "instance_groups")) flag |= FILE_GROUP_INSTANCE;
return flag; return flag;
} }
@ -1554,6 +1555,14 @@ static int wm_link_append_exec(bContext *C, wmOperator *op)
flag = wm_link_append_flag(op); flag = wm_link_append_flag(op);
/* sanity checks for flag */
if(scene->id.lib && (flag & FILE_GROUP_INSTANCE)) {
/* TODO, user never gets this message */
BKE_reportf(op->reports, RPT_WARNING, "Scene '%s' is linked, group instance disabled", scene->id.name+2);
flag &= ~FILE_GROUP_INSTANCE;
}
/* tag everything, all untagged data can be made local /* tag everything, all untagged data can be made local
* its also generally useful to know what is new * its also generally useful to know what is new
* *