forked from bartvdbraak/blender
Bugfix #20752: Background Image Panel Properties Keyframing?
Added a check in RNA_property_animateable() which checks if the base ID-block can have animation data or not. Screen data currently cannot have animation data, so this solves that problem (where there were non-functional entries there in the menu).
This commit is contained in:
parent
f268ab1eba
commit
2cb23d03ef
@ -43,7 +43,10 @@ struct AnimMapper;
|
||||
/* ************************************* */
|
||||
/* AnimData API */
|
||||
|
||||
/* Get AnimData from the given ID-block. */
|
||||
/* Check if the given ID-block can have AnimData */
|
||||
short id_type_can_have_animdata(struct ID *id);
|
||||
|
||||
/* Get AnimData from the given ID-block */
|
||||
struct AnimData *BKE_animdata_from_id(struct ID *id);
|
||||
|
||||
/* Add AnimData to the given ID-block */
|
||||
|
@ -60,8 +60,8 @@
|
||||
|
||||
/* Getter/Setter -------------------------------------------- */
|
||||
|
||||
/* Internal utility to check if ID can have AnimData */
|
||||
static short id_has_animdata (ID *id)
|
||||
/* Check if ID can have AnimData */
|
||||
short id_type_can_have_animdata (ID *id)
|
||||
{
|
||||
/* sanity check */
|
||||
if (id == NULL)
|
||||
@ -99,7 +99,7 @@ AnimData *BKE_animdata_from_id (ID *id)
|
||||
* types that do to be of type IdAdtTemplate, and extract the
|
||||
* AnimData that way
|
||||
*/
|
||||
if (id_has_animdata(id)) {
|
||||
if (id_type_can_have_animdata(id)) {
|
||||
IdAdtTemplate *iat= (IdAdtTemplate *)id;
|
||||
return iat->adt;
|
||||
}
|
||||
@ -117,7 +117,7 @@ AnimData *BKE_id_add_animdata (ID *id)
|
||||
* types that do to be of type IdAdtTemplate, and add the AnimData
|
||||
* to it using the template
|
||||
*/
|
||||
if (id_has_animdata(id)) {
|
||||
if (id_type_can_have_animdata(id)) {
|
||||
IdAdtTemplate *iat= (IdAdtTemplate *)id;
|
||||
|
||||
/* check if there's already AnimData, in which case, don't add */
|
||||
@ -145,7 +145,7 @@ void BKE_free_animdata (ID *id)
|
||||
/* Only some ID-blocks have this info for now, so we cast the
|
||||
* types that do to be of type IdAdtTemplate
|
||||
*/
|
||||
if (id_has_animdata(id)) {
|
||||
if (id_type_can_have_animdata(id)) {
|
||||
IdAdtTemplate *iat= (IdAdtTemplate *)id;
|
||||
AnimData *adt= iat->adt;
|
||||
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "BLI_dynstr.h"
|
||||
#include "BLI_ghash.h"
|
||||
|
||||
#include "BKE_animsys.h"
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_idprop.h"
|
||||
#include "BKE_main.h"
|
||||
@ -1110,6 +1111,10 @@ int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index)
|
||||
|
||||
int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop)
|
||||
{
|
||||
/* check that base ID-block can support animation data */
|
||||
if (!id_type_can_have_animdata(ptr->id.data))
|
||||
return 0;
|
||||
|
||||
prop= rna_ensure_property(prop);
|
||||
|
||||
if(!(prop->flag & PROP_ANIMATEABLE))
|
||||
|
Loading…
Reference in New Issue
Block a user