Hello Robert, all,
As for fixing this in an osg application one idea for Win32 could be
to add a WM_ACTIVATE handler in
GraphicWindowWin32::handleNativeWindowingEvent. Note that this method
is virtual so the message can be handled by just deriving a class from
GraphicWindowWin32 so you do not have to modify any code inside the
osg library for this fix.
When the application get focus some calls to GetAsyncKeyState can be
made to check the status of the modifier keys and calls can be made to
EventQueue::keyPress/keyRelease to update the osg modifier key mask
accordingly. If you need to keep track of other keys that might have
been released or pressed when your application did not have focus you
have to call GetAsyncKeyState for them as well.
I am currently testing out a pretty small patch to
osgViewer::GraphicsWindowWin32 that will fix this issue. I decided to
fix it in the core, because otherwise I'd have to construct all my
GraphicsWindow objects myself (using a derived class) instead of using
the factory methods (which create a GraphicsWindowWin32 directly). And
fixing the problem at the root just seems like the right thing to do.
I'll submit the fix to osg-submissions once I'm done, hopefully this
will be considered a bug fix and will be integrated into 2.6.
Just a heads up.
J-S
--
______________________________________________________
Jean-Sebastien Guay [EMAIL PROTECTED]
http://www.cm-labs.com/
http://whitestar02.webhop.org/
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org