Index: deepskyobj.h =================================================================== --- deepskyobj.h (revision 4432) +++ deepskyobj.h (working copy) @@ -58,6 +58,8 @@ bool isVisible() const { return visible; } void setVisible(bool _visible) { visible = _visible; } + bool isClickable() const { return clickable; } + void setClickable(bool _clickable) { clickable = _clickable; } virtual const char* getObjTypeName() const = 0; @@ -88,6 +90,7 @@ std::string* infoURL; bool visible : 1; + bool clickable : 1; }; typedef std::vector DeepSkyCatalog; Index: deepskyobj.cpp =================================================================== --- deepskyobj.cpp (revision 4432) +++ deepskyobj.cpp (working copy) @@ -33,7 +33,8 @@ radius(1), absMag(DSO_DEFAULT_ABS_MAGNITUDE), infoURL(NULL), - visible(true) + visible(true), + clickable(true) { } @@ -181,5 +182,11 @@ setVisible(visible); } + bool clickable = true; + if (params->getBoolean("Clickable", clickable)) + { + setClickable(clickable); + } + return true; } Index: universe.cpp =================================================================== --- universe.cpp (revision 4432) +++ universe.cpp (working copy) @@ -787,7 +787,7 @@ void DSOPicker::process(DeepSkyObject* const & dso, double, float) { - if (!(dso->getRenderMask() & renderFlags)) + if (!(dso->getRenderMask() & renderFlags) || !dso->isVisible() || !dso->isClickable()) return; Vec3d relativeDSOPos = dso->getPosition() - pickOrigin; @@ -857,7 +857,7 @@ double distance, float) { - if (distance > maxDistance || !(dso->getRenderMask() & renderFlags)) + if (distance > maxDistance || !(dso->getRenderMask() & renderFlags) || !dso->isVisible() || !dso->isClickable()) return; double distanceToPicker = 0.0;