浏览代码

Changes to help support focus and window embeding in parent

Roger Hughston 18 年之前
父节点
当前提交
6b968ee0ee
共有 2 个文件被更改,包括 34 次插入3 次删除
  1. 30 3
      panda/src/windisplay/winGraphicsWindow.cxx
  2. 4 0
      panda/src/windisplay/winGraphicsWindow.h

+ 30 - 3
panda/src/windisplay/winGraphicsWindow.cxx

@@ -1852,8 +1852,6 @@ window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
           // on may be lost.
           _lost_keypresses = true;
         }
-        properties.set_foreground(false);
-        system_changed_properties(properties);
         break;
     
       case WM_SETFOCUS: 
@@ -1881,9 +1879,30 @@ window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
           windisplay_cat.debug()
             << "setfocus\n";
         }
+
+        if (_lost_keypresses) {
+          resend_lost_keypresses();
+        }
+        break;
+
+
+     case PM_ACTIVE:
+        if (windisplay_cat.is_debug()) {
+          windisplay_cat.debug()
+            << "PM_ACTIVE\n";
+        }
         properties.set_foreground(true);
         system_changed_properties(properties);
         break;
+
+      case PM_INACTIVE:
+        if (windisplay_cat.is_debug()) {
+          windisplay_cat.debug()
+            << "PM_INACTIVE\n";
+        }
+        properties.set_foreground(false);
+        system_changed_properties(properties);
+        break;
   }
 
   return DefWindowProc(hwnd, msg, wparam, lparam);
@@ -1976,7 +1995,15 @@ resend_lost_keypresses() {
               << "key has gone down: " << i << " (" << lookup_key(i) << ")\n";
           }
           
-          handle_keyresume(lookup_key(i), message_time);
+          // Roger
+          //handle_keyresume(lookup_key(i), message_time);
+          // resume does not seem to work and sending the pointer position seems to 
+          // weird ot some cursor controls
+           ButtonHandle key = lookup_key(i);
+           if (key != ButtonHandle::none())
+                _input_devices[0].button_down(key, message_time);
+
+
         } else {
           // The key is now released.
           if (windisplay_cat.is_debug()) {

+ 4 - 0
panda/src/windisplay/winGraphicsWindow.h

@@ -26,6 +26,10 @@
 
 class WinGraphicsPipe;
 
+#define PM_ACTIVE   (WM_APP+123)
+#define PM_INACTIVE  (WM_APP+124)
+
+
 ////////////////////////////////////////////////////////////////////
 //       Class : WinGraphicsWindow
 // Description : An abstract base class for glGraphicsWindow and