]> git.saurik.com Git - wxWidgets.git/commitdiff
reenabled WS_EX_CONTROLPARENT style together with a check that the focus window is...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 8 Jun 2002 21:32:36 +0000 (21:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 8 Jun 2002 21:32:36 +0000 (21:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15795 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/window.cpp

index e762e88e84693d3b6405a720b7aa54cc09b0b300..ff531d4eaa2bd075eae7b599fd1f889cc96db270 100644 (file)
@@ -1165,15 +1165,11 @@ WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const
         }
 
         // to make the dialog navigation work with the nested panels we must
-        // use this style but, unfortunately, it hangs NT4 in some situations
-        // so we shouldn't use it -- even though it means that keyboard accels
-        // in, e.g. wxWizard, don't work
-#if 0
+        // use this style
         if ( flags & wxTAB_TRAVERSAL )
         {
             *exstyle |= WS_EX_CONTROLPARENT;
         }
-#endif // 0
     }
 
     return style;
@@ -2084,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;
+                }
             }
         }
     }