diff --git a/src/osgPresentation/SlideEventHandler.cpp b/src/osgPresentation/SlideEventHandler.cpp index 77359493b..04ac6bc9e 100644 --- a/src/osgPresentation/SlideEventHandler.cpp +++ b/src/osgPresentation/SlideEventHandler.cpp @@ -1087,8 +1087,11 @@ bool SlideEventHandler::selectLayer(int layerNum) { if (!_slideSwitch) return false; + bool withinSlide = true; + if (layerNum>=static_cast(_slideSwitch->getNumChildren())) { + withinSlide = false; layerNum = LAST_POSITION; } @@ -1106,14 +1109,19 @@ bool SlideEventHandler::selectLayer(int layerNum) OSG_INFO<<"Selected layer '"<<_slideSwitch->getChild(_activeLayer)->getName()<<"' num="<<_activeLayer<< std::endl; - return true; + return withinSlide; } bool SlideEventHandler::nextLayerOrSlide() { - OSG_INFO<<"nextLayerOrSlide()"<(_slideSwitch->getNumChildren())) ? dynamic_cast(_slideSwitch->getChild(_activeLayer)->getUserData()) : 0; if (la) { @@ -1200,6 +1206,7 @@ bool SlideEventHandler::nextLayer() } } + OSG_INFO<<"nextLayer() calling selectLayer("<<_activeLayer+1<<")"<