forked from bartvdbraak/blender
0b03268c17
(patch co-reviewed by Nathan Letwory) Overview: GHOST using rawinput for keyboard input. GHOST window receives WM_INPUT only when it is the active window. Child window cannot be active, so when embedding blenderplayer, WM_INPUT is consumed by top level parent window (for Burster it is the web browser window). Patch register raw input device as 'inputsink' - it makes GHOST window receives all keyboard messages. Window procedure check if GHOST window is active or focused. ::TranslateMessage(&msg) generates WM_CHAR etc. messages from WM_KEYDOWN, WM_KEYUP etc. Because of using RawInput only WM_INPUT messages are processed, so we doesn't need WM_CHAR, WM_KEYDOWN etc. [this is why ::TranslateMessage is no longer getting called]. Note: It's responsibility of the parent window (aka the wrapper) to send WM_SETFOCUS to child window (embedded blenderplayer). However some parent windows (e.g. webbrowsers) will not send WM_SETFOCUS to the child window when someone clicks on it. In those cases the blenderplayer needs to be patched to call setFocus(&msg); in the event of WM_LBUTTONDOWN (see GHOST_SystemWin32.cpp) |
||
---|---|---|
.. | ||
audaspace | ||
boolop | ||
bsp | ||
container | ||
decimation | ||
elbeem | ||
ghost | ||
guardedalloc | ||
iksolver | ||
itasc | ||
memutil | ||
mikktspace | ||
moto | ||
opennl | ||
smoke | ||
string | ||
CMakeLists.txt | ||
SConscript |