Improve pick-callback enabled testing.
This commit is contained in:
@@ -107,7 +107,11 @@ osg::Vec2d eventToWindowCoords(const osgGA::GUIEventAdapter& ea)
|
|||||||
if (_buttons.find(button) == _buttons.end()) {
|
if (_buttons.find(button) == _buttons.end()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!anyBindingEnabled(_bindingsDown)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
fireBindingList(_bindingsDown);
|
fireBindingList(_bindingsDown);
|
||||||
_repeatTime = -_repeatInterval; // anti-bobble: delay start of repeat
|
_repeatTime = -_repeatInterval; // anti-bobble: delay start of repeat
|
||||||
return true;
|
return true;
|
||||||
@@ -136,7 +140,7 @@ osg::Vec2d eventToWindowCoords(const osgGA::GUIEventAdapter& ea)
|
|||||||
virtual bool hover( const osg::Vec2d& windowPos,
|
virtual bool hover( const osg::Vec2d& windowPos,
|
||||||
const Info& )
|
const Info& )
|
||||||
{
|
{
|
||||||
if (_hover.empty()) {
|
if (!anyBindingEnabled(_hover)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -165,3 +165,18 @@ void clearBindingList(const SGBindingList& aBindings)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool anyBindingEnabled(const SGBindingList& aBindings)
|
||||||
|
{
|
||||||
|
if (aBindings.empty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_FOREACH(SGBinding_ptr b, aBindings) {
|
||||||
|
if (!b->test()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -171,4 +171,10 @@ SGBindingList readBindingList(const simgear::PropertyList& aNodes, SGPropertyNod
|
|||||||
*/
|
*/
|
||||||
void clearBindingList(const SGBindingList& aBindings);
|
void clearBindingList(const SGBindingList& aBindings);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check if at least one binding in the list is enabled. Returns false if bindings
|
||||||
|
* list is empty, or all bindings are conditinally disabled.
|
||||||
|
*/
|
||||||
|
bool anyBindingEnabled(const SGBindingList& bindings);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user