]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
Initialise font family when initializing from native font, since this
[wxWidgets.git] / src / msw / window.cpp
index 001ff1f48b4599108d86bc68f6dc2c37bcbf9a24..ff531d4eaa2bd075eae7b599fd1f889cc96db270 100644 (file)
@@ -1164,6 +1164,8 @@ WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const
                 break;
         }
 
+        // to make the dialog navigation work with the nested panels we must
+        // use this style
         if ( flags & wxTAB_TRAVERSAL )
         {
             *exstyle |= WS_EX_CONTROLPARENT;
@@ -2078,10 +2080,18 @@ bool wxWindowMSW::MSWProcessMessage(WXMSG* pMsg)
         // place edit control from being closed with Escape in a dialog
         if ( msg->message != WM_KEYDOWN || msg->wParam != VK_ESCAPE )
         {
-            if ( ::IsDialogMessage(GetHwnd(), msg) )
+            // ::IsDialogMessage() can enter in an infinite loop when
+            // WS_EX_CONTROLPARENT is specified and the currently focused
+            // window is disabled or hidden, so don't call it in this case
+            HWND hwndFocus = ::GetFocus();
+            if ( !hwndFocus ||
+                  ::IsWindowEnabled(hwndFocus) && ::IsWindowVisible(hwndFocus) )
             {
-                // IsDialogMessage() did something...
-                return TRUE;
+                if ( ::IsDialogMessage(GetHwnd(), msg) )
+                {
+                    // IsDialogMessage() did something...
+                    return TRUE;
+                }
             }
         }
     }