]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
cleanup mac
[wxWidgets.git] / src / msw / window.cpp
index f6e982303e365e63ba141e1a7b735964a927b27b..d8be1a890be8f0ba2332ef232eaccf256994497b 100644 (file)
@@ -2260,10 +2260,10 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg)
                             if ( !bCtrlDown )
                             {
                                 // this will contain the dialog code of this
-                                // window and all of its parent windows
+                                // window and all of its parent windows in turn
                                 LONG lDlgCode2 = lDlgCode;
 
-                                while ( win && !win->IsTopLevel() )
+                                while ( win )
                                 {
                                     if ( lDlgCode2 & DLGC_WANTMESSAGE )
                                     {
@@ -2273,6 +2273,13 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg)
                                         return false;
                                     }
 
+                                    // don't propagate keyboard messages beyond
+                                    // the first top level window parent
+                                    if ( win->IsTopLevel() )
+                                        break;
+
+                                    win = win->GetParent();
+
                                     lDlgCode2 = ::SendMessage
                                                   (
                                                     GetHwndOf(win),
@@ -2280,8 +2287,6 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg)
                                                     0,
                                                     0
                                                   );
-
-                                    win = win->GetParent();
                                 }
                             }
                             else // bCtrlDown
@@ -5015,7 +5020,7 @@ void wxWindowMSW::InitMouseEvent(wxMouseEvent& event,
     event.m_aux1Down = (flags & MK_XBUTTON1) != 0;
     event.m_aux2Down = (flags & MK_XBUTTON2) != 0;
 #endif // wxHAS_XBUTTON
-    event.m_altDown = ::GetKeyState(VK_MENU) < 0;
+    event.m_altDown = ::wxIsAltDown();
 
 #ifndef __WXWINCE__
     event.SetTimestamp(::GetMessageTime());
@@ -6056,9 +6061,9 @@ wxMouseState wxGetMouseState()
     ms.SetAux2Down(wxIsKeyDown(VK_XBUTTON2));
 #endif // wxHAS_XBUTTON
 
-    ms.SetControlDown(wxIsKeyDown(VK_CONTROL));
-    ms.SetShiftDown(wxIsKeyDown(VK_SHIFT));
-    ms.SetAltDown(wxIsKeyDown(VK_MENU));
+    ms.SetControlDown(wxIsCtrlDown ());
+    ms.SetShiftDown  (wxIsShiftDown());
+    ms.SetAltDown    (wxIsAltDown  ());
 //    ms.SetMetaDown();
 
     return ms;