From d4092b8a52c837458f5ea223c35be6f1707256e1 Mon Sep 17 00:00:00 2001 From: David Rose Date: Wed, 24 Oct 2007 02:02:11 +0000 Subject: [PATCH] release mouse buttons when window focus is lost --- panda/src/windisplay/winGraphicsWindow.cxx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/panda/src/windisplay/winGraphicsWindow.cxx b/panda/src/windisplay/winGraphicsWindow.cxx index 924277ba70..bb7c004124 100644 --- a/panda/src/windisplay/winGraphicsWindow.cxx +++ b/panda/src/windisplay/winGraphicsWindow.cxx @@ -1727,13 +1727,22 @@ window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { #else // WANT_NEW_FOCUS_MANAGMENT { double message_time = get_message_time(); - for (int i = 0; i < num_virtual_keys; i++) - { - ButtonHandle bh = lookup_key(i); - if(bh != ButtonHandle::none()) - handle_keyrelease(bh,message_time); + int i; + for (i = 0; i < num_virtual_keys; i++) { + ButtonHandle bh = lookup_key(i); + if(bh != ButtonHandle::none()) { + handle_keyrelease(bh,message_time); + } } memset(_keyboard_state, 0, sizeof(BYTE) * num_virtual_keys); + + // Also up the mouse buttons. + for (i = 0; i < MouseButton::num_mouse_buttons; ++i) { + handle_keyrelease(MouseButton::button(i), message_time); + } + handle_keyrelease(MouseButton::wheel_up(), message_time); + handle_keyrelease(MouseButton::wheel_down(), message_time); + _lost_keypresses = true; } #endif // WANT_NEW_FOCUS_MANAGMENT