Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-04-21 03:34:26 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-04-21 03:35:50 +0300
commit1de3c81d268ba67128b2dd67335523a94320b0d2 (patch)
tree37ddb5144609188913218aab6281f3238a291979 /source/blender
parent543614a17d235ad6bf09a4cc82969bf92f16e1de (diff)
Fix T63431: crash adding driver to a keyframed property with Ctrl+D
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/animation/drivers.c13
-rw-r--r--source/blender/editors/space_graph/graph_buttons.c2
2 files changed, 13 insertions, 2 deletions
diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c
index d6564be9574..92c292f67e8 100644
--- a/source/blender/editors/animation/drivers.c
+++ b/source/blender/editors/animation/drivers.c
@@ -899,10 +899,21 @@ static bool add_driver_button_poll(bContext *C)
PointerRNA ptr = {{NULL}};
PropertyRNA *prop = NULL;
int index;
+ bool driven, special;
/* this operator can only run if there's a property button active, and it can be animated */
UI_context_active_but_prop_get(C, &ptr, &prop, &index);
- return (ptr.id.data && ptr.data && prop && RNA_property_animateable(&ptr, prop));
+
+ if (!(ptr.id.data && ptr.data && prop)) {
+ return false;
+ }
+ if (!RNA_property_animateable(&ptr, prop)) {
+ return false;
+ }
+
+ /* Don't do anything if there is an fcurve for animation without a driver. */
+ FCurve *fcu = rna_get_fcurve_context_ui(C, &ptr, prop, index, NULL, NULL, &driven, &special);
+ return (fcu == NULL || fcu->driver);
}
/* Wrapper for creating a driver without knowing what the targets will be yet (i.e. "manual/add later") */
diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c
index 8742f5d408c..20ddf434f5f 100644
--- a/source/blender/editors/space_graph/graph_buttons.c
+++ b/source/blender/editors/space_graph/graph_buttons.c
@@ -1255,7 +1255,7 @@ static void graph_panel_drivers_popover(const bContext *C, Panel *pa)
uiLayoutSetContextFromBut(layout, but);
/* Populate Panel - With a combination of the contents of the Driven and Driver panels */
- if (fcu) {
+ if (fcu && fcu->driver) {
ID *id = ptr.id.data;
/* Driven Property Settings */