]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dialog.cpp
remove 'extern' from IsKeyDown,... for bcc
[wxWidgets.git] / src / msw / dialog.cpp
index 658003fe30641651b69724c1d9b044fc60b210b2..480836f8f956fb45f304dc200d55fbe54e58b58b 100644 (file)
@@ -530,13 +530,28 @@ long wxDialog::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
         case WM_SETCURSOR:
             // we want to override the busy cursor for modal dialogs:
             // typically, wxBeginBusyCursor() is called and then a modal dialog
-            // is shown, but the modal dialog shouldn't have this cursor
-            if ( wxIsBusy() )
+            // is shown, but the modal dialog shouldn't have hourglass cursor
+            if ( IsModalShowing() && wxIsBusy() )
             {
-                rc = TRUE;
+                // set our cursor for all windows (but see below)
+                wxCursor cursor = m_cursor;
+                if ( !cursor.Ok() )
+                    cursor = wxCURSOR_ARROW;
 
+                ::SetCursor(GetHcursorOf(cursor));
+
+                // in any case, stop here and don't let wxWindow process this
+                // message (it would set the busy cursor)
                 processed = TRUE;
+
+                // but return FALSE to tell the child window (if the event
+                // comes from one of them and not from ourselves) that it can
+                // set its own cursor if it has one: thus, standard controls
+                // (e.g. text ctrl) still have correct cursors in a dialog
+                // invoked while wxIsBusy()
+                rc = FALSE;
             }
+            break;
     }
 
     if ( !processed )