From b2a0b50a5a6bab6dcc539da74071482d98eefac8 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 27 Dec 2006 20:23:34 +0000 Subject: [PATCH] Improved handling of window input ranges for single window apps --- src/osgViewer/View.cpp | 3 +++ src/osgViewer/Viewer.cpp | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/osgViewer/View.cpp b/src/osgViewer/View.cpp index 195229ae0..40e67d49c 100644 --- a/src/osgViewer/View.cpp +++ b/src/osgViewer/View.cpp @@ -105,12 +105,14 @@ void View::setUpViewAcrossAllScreens() if (gw) { osg::notify(osg::INFO)<<" GraphicsWindow has been created successfully."<getEventQueue()->getCurrentEventState()->setWindowRectangle(0, 0, width, height ); } else { osg::notify(osg::NOTICE)<<" GraphicsWindow has not been created successfully."<setViewport(new osg::Viewport(0, 0, width, height)); } else @@ -147,6 +149,7 @@ void View::setUpViewAcrossAllScreens() { osg::notify(osg::INFO)<<" GraphicsWindow has been created successfully."<getEventQueue()->getCurrentEventState()->setWindowRectangle(0, 0, width, height ); gw->getEventQueue()->setUseFixedMouseInputRange(true); gw->getEventQueue()->getCurrentEventState()->setInputRange(inputRangeMinX, inputRangeMinY, inputRangeMinX+float(width),inputRangeMinY+float(height) ); inputRangeMinX += float(width); diff --git a/src/osgViewer/Viewer.cpp b/src/osgViewer/Viewer.cpp index 358422b96..b027371dd 100644 --- a/src/osgViewer/Viewer.cpp +++ b/src/osgViewer/Viewer.cpp @@ -299,8 +299,12 @@ void Viewer::frameEventTraversal() ++itr) { osgGA::GUIEventAdapter* event = itr->get(); - event->setInputRange(eventState->getXmin(), eventState->getYmin(), eventState->getXmax(), eventState->getYmax()); - + + if (getEventQueue()->getUseFixedMouseInputRange()) + { + event->setInputRange(eventState->getXmin(), eventState->getYmin(), eventState->getXmax(), eventState->getYmax()); + } + switch(event->getEventType()) { case(osgGA::GUIEventAdapter::PUSH): @@ -310,12 +314,17 @@ void Viewer::frameEventTraversal() eventState->setX(event->getX()); eventState->setY(event->getY()); eventState->setButtonMask(event->getButtonMask()); + // osg::notify(osg::NOTICE)<<" mouse x = "<getX()<<" y="<getY()<