From 4fceaf3848b6ff926a8f0ffdb8f5a7b1537da57b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 18 Dec 2018 11:57:12 +1100 Subject: Fix gizmos showing for non-visible objects Active object gizmos were showing even when the object wasn't visible (local view or with their object type disabled). --- .../editors/space_view3d/view3d_gizmo_camera.c | 25 ++++++++++++++-------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'source/blender/editors/space_view3d/view3d_gizmo_camera.c') diff --git a/source/blender/editors/space_view3d/view3d_gizmo_camera.c b/source/blender/editors/space_view3d/view3d_gizmo_camera.c index 3c29d4c407b..ace22094e53 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_camera.c +++ b/source/blender/editors/space_view3d/view3d_gizmo_camera.c @@ -70,12 +70,16 @@ static bool WIDGETGROUP_camera_poll(const bContext *C, wmGizmoGroupType *UNUSED( return false; } - Object *ob = CTX_data_active_object(C); - if (ob && ob->type == OB_CAMERA) { - Camera *camera = ob->data; - /* TODO: support overrides. */ - if (camera->id.lib == NULL) { - return true; + ViewLayer *view_layer = CTX_data_view_layer(C); + Base *base = BASACT(view_layer); + if (base && BASE_VISIBLE(v3d, base)) { + Object *ob = base->object; + if (ob->type == OB_CAMERA) { + Camera *camera = ob->data; + /* TODO: support overrides. */ + if (camera->id.lib == NULL) { + return true; + } } } return false; @@ -83,7 +87,8 @@ static bool WIDGETGROUP_camera_poll(const bContext *C, wmGizmoGroupType *UNUSED( static void WIDGETGROUP_camera_setup(const bContext *C, wmGizmoGroup *gzgroup) { - Object *ob = CTX_data_active_object(C); + ViewLayer *view_layer = CTX_data_view_layer(C); + Object *ob = OBACT(view_layer); float dir[3]; const wmGizmoType *gzt_arrow = WM_gizmotype_find("GIZMO_GT_arrow_3d", true); @@ -132,7 +137,8 @@ static void WIDGETGROUP_camera_refresh(const bContext *C, wmGizmoGroup *gzgroup) return; struct CameraWidgetGroup *cagzgroup = gzgroup->customdata; - Object *ob = CTX_data_active_object(C); + ViewLayer *view_layer = CTX_data_view_layer(C); + Object *ob = OBACT(view_layer); Camera *ca = ob->data; PointerRNA camera_ptr; float dir[3]; @@ -234,7 +240,8 @@ static void WIDGETGROUP_camera_message_subscribe( const bContext *C, wmGizmoGroup *gzgroup, struct wmMsgBus *mbus) { ARegion *ar = CTX_wm_region(C); - Object *ob = CTX_data_active_object(C); + ViewLayer *view_layer = CTX_data_view_layer(C); + Object *ob = OBACT(view_layer); Camera *ca = ob->data; wmMsgSubscribeValue msg_sub_value_gz_tag_refresh = { -- cgit v1.2.3