]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
added wxWindow::GetPrev/NextSibling()
[wxWidgets.git] / src / msw / window.cpp
index 8037b29d9d8fd5dde846251f2ef89cef3744307d..d8be1a890be8f0ba2332ef232eaccf256994497b 100644 (file)
@@ -1319,8 +1319,6 @@ wxBorder wxWindowMSW::TranslateBorder(wxBorder border) const
 #endif
     return border;
 #endif
-
-    return border;
 }
 
 
@@ -2261,9 +2259,13 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg)
                             wxWindow *win = this;
                             if ( !bCtrlDown )
                             {
-                                while ( win && !win->IsTopLevel() )
+                                // this will contain the dialog code of this
+                                // window and all of its parent windows in turn
+                                LONG lDlgCode2 = lDlgCode;
+
+                                while ( win )
                                 {
-                                    if ( lDlgCode & DLGC_WANTMESSAGE )
+                                    if ( lDlgCode2 & DLGC_WANTMESSAGE )
                                     {
                                         // as it wants to process Enter itself,
                                         // don't call IsDialogMessage() which
@@ -2271,7 +2273,20 @@ 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),
+                                                    WM_GETDLGCODE,
+                                                    0,
+                                                    0
+                                                  );
                                 }
                             }
                             else // bCtrlDown
@@ -5005,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());
@@ -6046,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;