Browse Source

Fixed iconify callback not triggered by Alt+Tab.

Camilla Berglund 11 years ago
parent
commit
56e600d7a1
2 changed files with 15 additions and 0 deletions
  1. 2 0
      README.md
  2. 13 0
      src/win32_window.c

+ 2 - 0
README.md

@@ -47,6 +47,8 @@ guide in the GLFW documentation.
                    unfocused windows
                    unfocused windows
  - [Win32] Bugfix: Cursor was not properly re-centered over odd-sized windows
  - [Win32] Bugfix: Cursor was not properly re-centered over odd-sized windows
  - [Win32] Bugfix: Negative window positions were reported incorrectly
  - [Win32] Bugfix: Negative window positions were reported incorrectly
+ - [Win32] Bugfix: The iconify callback was not triggered when switching away
+                   from a full screen window using Alt+Tab
  - [Cocoa] Added dependency on CoreVideo framework for refresh rate retrieval
  - [Cocoa] Added dependency on CoreVideo framework for refresh rate retrieval
  - [Cocoa] Enabled Lion full screen for resizable windowed mode windows
  - [Cocoa] Enabled Lion full screen for resizable windowed mode windows
  - [Cocoa] Moved to Cocoa API for application transformation and activation
  - [Cocoa] Moved to Cocoa API for application transformation and activation

+ 13 - 0
src/win32_window.c

@@ -442,6 +442,19 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
             return 0;
             return 0;
         }
         }
 
 
+        case WM_ACTIVATEAPP:
+        {
+            if (!wParam && IsIconic(hWnd))
+            {
+                // This is a workaround for full screen windows losing focus
+                // through Alt+Tab leading to windows being told they're
+                // unfocused and restored and then never told they're iconified
+                _glfwInputWindowIconify(window, GL_TRUE);
+            }
+
+            return 0;
+        }
+
         case WM_SHOWWINDOW:
         case WM_SHOWWINDOW:
         {
         {
             _glfwInputWindowVisibility(window, wParam ? GL_TRUE : GL_FALSE);
             _glfwInputWindowVisibility(window, wParam ? GL_TRUE : GL_FALSE);