]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/app.cpp
* Fixes and new features in wxObject*Stream
[wxWidgets.git] / src / msw / app.cpp
index 47b65da5b4f91040d4f0f617c7603372e91da2e1..6a73f6d3222f42b32ba10ce9383beb8cfa21645f 100644 (file)
@@ -757,26 +757,29 @@ bool wxApp::ProcessMessage(WXMSG *Msg)
 
   HWND hWnd;
 
 
   HWND hWnd;
 
-  // Anyone for a message? Try youngest descendants first.
+  // Try translations first; find the youngest window with
+  // a translation table.
   for (hWnd = msg->hwnd; hWnd != NULL; hWnd = ::GetParent(hWnd))
   {
     wxWindow *wnd = wxFindWinFromHandle((WXHWND) hWnd);
     if (wnd)
     {
   for (hWnd = msg->hwnd; hWnd != NULL; hWnd = ::GetParent(hWnd))
   {
     wxWindow *wnd = wxFindWinFromHandle((WXHWND) hWnd);
     if (wnd)
     {
-       if (wnd->MSWProcessMessage(Msg))
+       if (wnd->MSWTranslateMessage(Msg))
          return TRUE;
          return TRUE;
-
-       // STOP if we've reached the top of the hierarchy!
-//       if (m_topWindow && (wnd == m_topWindow))
-//          return FALSE;
     }
   }
 
     }
   }
 
-  // TODO: Is this now obsolete, given that m_topWindow may not be defined?
-  // Does it do anything useful anyway?
-//  if (m_topWindow && m_topWindow->MSWProcessMessage(Msg))
-//     return TRUE;
-    return FALSE;
+  // Anyone for a non-translation message? Try youngest descendants first.
+  for (hWnd = msg->hwnd; hWnd != NULL; hWnd = ::GetParent(hWnd))
+  {
+    wxWindow *wnd = wxFindWinFromHandle((WXHWND) hWnd);
+    if (wnd)
+    {
+       if (wnd->MSWProcessMessage(Msg))
+         return TRUE;
+    }
+  }
+  return FALSE;
 }
 
 void wxApp::OnIdle(wxIdleEvent& event)
 }
 
 void wxApp::OnIdle(wxIdleEvent& event)