Changed the osgUI behaviour so that events are set to be handled by Widgets that have focus even if they don't directly use them.
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14425 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
@@ -3092,16 +3092,11 @@ void SlideShowConstructor::addVolume(const std::string& filename, const Position
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
ModelData modelData;
|
||||
addModel(model.get(), positionData, modelData, scriptData);
|
||||
|
||||
#if 1
|
||||
osgUI::Widget* widget = vs.valid() ? osgDB::readFile<osgUI::Widget>("ui/VolumeSettings.lua") : 0;
|
||||
if (widget)
|
||||
{
|
||||
OSG_NOTICE<<"Addig widget"<<std::endl;
|
||||
OSG_NOTICE<<"Adding widget"<<std::endl;
|
||||
|
||||
widget->setVisible(false);
|
||||
vs->setName("VolumeSettings");
|
||||
@@ -3129,6 +3124,10 @@ void SlideShowConstructor::addVolume(const std::string& filename, const Position
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
ModelData modelData;
|
||||
addModel(model.get(), positionData, modelData, scriptData);
|
||||
}
|
||||
|
||||
bool SlideShowConstructor::attachTexMat(osg::StateSet* stateset, const ImageData& imageData, float s, float t, bool textureRectangle)
|
||||
|
||||
@@ -214,12 +214,14 @@ void Widget::traverseImplementation(osg::NodeVisitor& nv)
|
||||
|
||||
// signify that event has been taken by widget with focus
|
||||
|
||||
bool widgetsWithFocusSetHandled = getHasEventFocus();
|
||||
|
||||
osgGA::EventQueue::Events& events = ev->getEvents();
|
||||
for(osgGA::EventQueue::Events::iterator itr = events.begin();
|
||||
itr != events.end();
|
||||
++itr)
|
||||
{
|
||||
if (handle(ev, itr->get()))
|
||||
if (handle(ev, itr->get()) || widgetsWithFocusSetHandled)
|
||||
{
|
||||
(*itr)->setHandled(true);
|
||||
ev->setEventHandled(true);
|
||||
|
||||
@@ -391,6 +391,8 @@ PropertyAdjustmentCallback::PropertyAdjustmentCallback(const PropertyAdjustmentC
|
||||
|
||||
bool PropertyAdjustmentCallback::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&, osg::Object* object, osg::NodeVisitor*)
|
||||
{
|
||||
if (ea.getHandled()) return false;
|
||||
|
||||
osgVolume::VolumeTile* tile = dynamic_cast<osgVolume::VolumeTile*>(object);
|
||||
osgVolume::Layer* layer = tile ? tile->getLayer() : 0;
|
||||
osgVolume::Property* property = layer ? layer->getProperty() : 0;
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
#include <osgVolume/Property>
|
||||
#include <osgDB/ObjectWrapper>
|
||||
#include <osgDB/InputStream>
|
||||
#include <osgDB/OutputStream>
|
||||
|
||||
namespace osgVolume_SampleRatioProperty
|
||||
{
|
||||
REGISTER_OBJECT_WRAPPER( osgVolume_SampleRatioProperty,
|
||||
new osgVolume::SampleRatioProperty,
|
||||
osgVolume::SampleRatioProperty,
|
||||
"osg::Object osgVolume::Property osgVolume::ScalarProperty osgVolume::SampleRatioProperty" )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
namespace osgVolume_SampleRatioWhenMovingProperty
|
||||
{
|
||||
REGISTER_OBJECT_WRAPPER( osgVolume_SampleRatioWhenMovingProperty,
|
||||
new osgVolume::SampleRatioWhenMovingProperty,
|
||||
osgVolume::SampleRatioWhenMovingProperty,
|
||||
"osg::Object osgVolume::Property osgVolume::ScalarProperty osgVolume::SampleRatioWhenMovingProperty" )
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user