diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-03-01 04:35:48 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-03-01 04:41:40 +0300 |
commit | 69665bc7f06d727499596c87f1c08c1fc064efba (patch) | |
tree | 7c22f9d74760275552e0b3d8610469c9a4c9db31 /source/blender/editors/transform | |
parent | 795effcbc815ae8c54bf59d31f3315a46e576c86 (diff) |
RNA: move cursor into own struct
Without this it's impractical to subscribe to any change to the cursor.
Fixes T61969 by having gizmos update on any change to the cursor.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform_gizmo_3d.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/source/blender/editors/transform/transform_gizmo_3d.c b/source/blender/editors/transform/transform_gizmo_3d.c index e1066315508..2e6a399d0ea 100644 --- a/source/blender/editors/transform/transform_gizmo_3d.c +++ b/source/blender/editors/transform/transform_gizmo_3d.c @@ -1227,25 +1227,29 @@ static void gizmo_xform_message_subscribe( TransformOrientationSlot *orient_slot = BKE_scene_orientation_slot_get(scene, orient_flag); PointerRNA orient_ref_ptr; RNA_pointer_create(&scene->id, &RNA_TransformOrientationSlot, orient_slot, &orient_ref_ptr); + const ToolSettings *ts = scene->toolsettings; PointerRNA scene_ptr; RNA_id_pointer_create(&scene->id, &scene_ptr); { - const ToolSettings *ts = scene->toolsettings; extern PropertyRNA rna_Scene_transform_orientation_slots; - extern PropertyRNA rna_Scene_cursor_location; const PropertyRNA *props[] = { &rna_Scene_transform_orientation_slots, - ((ts->transform_pivot_point == V3D_AROUND_CURSOR) || (orient_slot->type == V3D_ORIENT_CURSOR)) ? - &rna_Scene_cursor_location : NULL, }; for (int i = 0; i < ARRAY_SIZE(props); i++) { - if (props[i]) { - WM_msg_subscribe_rna(mbus, &scene_ptr, props[i], &msg_sub_value_gz_tag_refresh, __func__); - } + WM_msg_subscribe_rna(mbus, &scene_ptr, props[i], &msg_sub_value_gz_tag_refresh, __func__); } } + if ((ts->transform_pivot_point == V3D_AROUND_CURSOR) || + (orient_slot->type == V3D_ORIENT_CURSOR)) + { + /* We could be more specific here, for now subscribe to any cursor change. */ + PointerRNA cursor_ptr; + RNA_pointer_create(&scene->id, &RNA_View3DCursor, &scene->cursor, &cursor_ptr); + WM_msg_subscribe_rna(mbus, &cursor_ptr, NULL, &msg_sub_value_gz_tag_refresh, __func__); + } + { extern PropertyRNA rna_TransformOrientationSlot_type; extern PropertyRNA rna_TransformOrientationSlot_use; |