Fixed osgWidget event handling
This commit is contained in:
parent
711d69d2fd
commit
9147d30515
@ -317,7 +317,17 @@ bool WindowManager::pickAtXY(float x, float y, WidgetList& wl)
|
||||
// Iterate over every picked result and create a list of Widgets that belong
|
||||
// to that Window.
|
||||
for(Intersections::iterator i = intr.begin(); i != intr.end(); i++) {
|
||||
Window* win = dynamic_cast<Window*>(i->nodePath.back()->getParent(0));
|
||||
|
||||
Widget* widget = dynamic_cast<Widget*>(i->drawable.get());
|
||||
if(!widget) continue;
|
||||
|
||||
Window* win = 0;
|
||||
const osg::NodePath& nodePath = i->nodePath;
|
||||
for(osg::NodePath::const_reverse_iterator np_itr = nodePath.rbegin(); np_itr != nodePath.rend(); ++np_itr)
|
||||
{
|
||||
win = dynamic_cast<Window*>(*np_itr);
|
||||
if (win) break;
|
||||
}
|
||||
|
||||
// Make sure that our window is valid, and that our pick is within the
|
||||
// "visible area" of the Window.
|
||||
@ -335,9 +345,6 @@ bool WindowManager::pickAtXY(float x, float y, WidgetList& wl)
|
||||
// If we've found a new Widnow, break out!
|
||||
else if(activeWin != win) break;
|
||||
|
||||
Widget* widget = dynamic_cast<Widget*>(i->drawable.get());
|
||||
|
||||
if(!widget) continue;
|
||||
|
||||
// We need to return a list of every Widget that was picked, so
|
||||
// that the handler can operate on it accordingly.
|
||||
|
Loading…
Reference in New Issue
Block a user