diff --git a/modules/gfx/src/entity.cc b/modules/gfx/src/entity.cc index a352ad32d3aa016a5d53390de5a6893d3196375b..45dbe8f706f80cbb3e9050f937339b164d23b9ff 100644 --- a/modules/gfx/src/entity.cc +++ b/modules/gfx/src/entity.cc @@ -385,21 +385,30 @@ void Entity::CustomRenderPov(PovState& pov) mol::AtomHandle Entity::PickAtom(const geom::Line3& line, Real line_width) { mol::AtomHandle picked_atom; + if (!this->IsVisible()) + return picked_atom; for (RendererMap::iterator i=renderer_.begin(), e=renderer_.end(); i!=e; ++i) { impl::EntityRenderer* r=i->second; - r->PickAtom(line, line_width, picked_atom); + if (r->HasDataToRender() && r->IsEnabled()) { + r->PickAtom(line, line_width, picked_atom); + } } return picked_atom; } mol::BondHandle Entity::PickBond(const geom::Line3& line, Real line_width) { + mol::BondHandle picked_bond; + if (!this->IsVisible()) + return picked_bond; for (RendererMap::iterator i=renderer_.begin(), e=renderer_.end(); i!=e; ++i) { impl::EntityRenderer* r=i->second; - r->PickBond(line, line_width, picked_bond); + if (r->HasDataToRender() && r->IsEnabled()) { + r->PickBond(line, line_width, picked_bond); + } } return picked_bond; }