]> git.saurik.com Git - wxWidgets.git/commitdiff
wxBeginBusyCursor now works (better)
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Feb 1999 22:51:14 +0000 (22:51 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Feb 1999 22:51:14 +0000 (22:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1766 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/utils.cpp
src/msw/window.cpp

index 0664c058379be3f9875dd5e258ce0750e2a5622f..0f5ebc51abc8cb85d755685c2973cf9607efa4ca 100644 (file)
@@ -273,7 +273,7 @@ wxShell(const wxString& command)
 }
 
 // Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX)
-long wxGetFreeMemory(void)
+long wxGetFreeMemory()
 {
 #if defined(__WIN32__) && !defined(__BORLANDC__) && !defined(__TWIN32__)
   MEMORYSTATUS memStatus;
@@ -290,7 +290,7 @@ static bool inTimer = FALSE;
 class wxSleepTimer: public wxTimer
 {
  public:
-  inline void Notify(void)
+  inline void Notify()
   {
     inTimer = FALSE;
     Stop();
@@ -321,7 +321,7 @@ void wxSleep(int nSecs)
 }
 
 // Consume all events until no more left
-void wxFlushEvents(void)
+void wxFlushEvents()
 {
 //  wxYield();
 }
@@ -360,7 +360,7 @@ void wxFatalError(const wxString& msg, const wxString& title)
 }
 
 // Emit a beeeeeep
-void wxBell(void)
+void wxBell()
 {
     // Removed by RD because IHMO syncronous sound is a Bad Thing.  MessageBeep
     // will do a similar thing anyway if there is no sound card...
@@ -512,44 +512,47 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c
 }
 #endif // wxUSE_RESOURCES
 
-// Old cursor
-static HCURSOR wxBusyCursorOld = 0;
-static int wxBusyCursorCount = 0;
+// ---------------------------------------------------------------------------
+// helper functiosn for showing a "busy" cursor
+// ---------------------------------------------------------------------------
+
+extern HCURSOR gs_wxBusyCursor = 0;     // new, busy cursor
+static HCURSOR gs_wxBusyCursorOld = 0;  // old cursor
+static int gs_wxBusyCursorCount = 0;
 
 // Set the cursor to the busy cursor for all windows
 void wxBeginBusyCursor(wxCursor *cursor)
 {
-  wxBusyCursorCount ++;
-  if (wxBusyCursorCount == 1)
-  {
-    wxBusyCursorOld = ::SetCursor((HCURSOR) cursor->GetHCURSOR());
-  }
-  else
-  {
-    (void)::SetCursor((HCURSOR) cursor->GetHCURSOR());
-  }
+    if ( gs_wxBusyCursorCount++ == 0 )
+    {
+        gs_wxBusyCursor = (HCURSOR)cursor->GetHCURSOR();
+        gs_wxBusyCursorOld = ::SetCursor(gs_wxBusyCursor);
+    }
+    //else: nothing to do, already set
 }
 
 // Restore cursor to normal
-void wxEndBusyCursor(void)
+void wxEndBusyCursor()
 {
-  if (wxBusyCursorCount == 0)
-    return;
+    wxCHECK_RET( gs_wxBusyCursorCount > 0,
+                 "no matching wxBeginBusyCursor() for wxEndBusyCursor()" );
 
-  wxBusyCursorCount --;
-  if (wxBusyCursorCount == 0)
-  {
-    ::SetCursor(wxBusyCursorOld);
-    wxBusyCursorOld = 0;
-  }
+    gs_wxBusyCursorCount--;
+    if ( --gs_wxBusyCursorCount == 0 )
+    {
+        ::SetCursor(gs_wxBusyCursorOld);
+
+        gs_wxBusyCursorOld = 0;
+    }
 }
 
 // TRUE if we're between the above two calls
-bool wxIsBusy(void)
+bool wxIsBusy()
 {
-  return (wxBusyCursorCount > 0);
+  return (gs_wxBusyCursorCount > 0);
 }
 
+// ---------------------------------------------------------------------------
 const char* wxGetHomeDir(wxString *pstr)
 {
   wxString& strDir = *pstr;
@@ -652,7 +655,8 @@ bool wxCheckForInterrupt(wxWindow *wnd)
     return TRUE;//*** temporary?
   }
   else{
-    wxError("wnd==NULL !!!");
+    wxFAIL_MSG("wnd==NULL !!!");
+
     return FALSE;//*** temporary?
   }
 }
@@ -706,7 +710,7 @@ void wxGetMousePosition( int* x, int* y )
 };
 
 // Return TRUE if we have a colour display
-bool wxColourDisplay(void)
+bool wxColourDisplay()
 {
   HDC dc = ::GetDC((HWND) NULL);
   bool flag;
@@ -720,7 +724,7 @@ bool wxColourDisplay(void)
 }
 
 // Returns depth of screen
-int wxDisplayDepth(void)
+int wxDisplayDepth()
 {
   HDC dc = ::GetDC((HWND) NULL);
   int planes = GetDeviceCaps(dc, PLANES);
index 273cc8c75904bde2b7d7f86c4d6e0f98a7e7345e..03542b94b68e6cce10037477aedac7436bcd9a8f 100644 (file)
@@ -231,6 +231,8 @@ void wxWindow::SetHWND(WXHWND hWnd)
 
 void wxWindow::Init()
 {
+    m_isWindow = TRUE;
+
     // Generic
     m_windowId = 0;
     m_isShown = TRUE;
@@ -1483,6 +1485,20 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
     case WM_GETDLGCODE:
         return MSWGetDlgCode();
 
+    case WM_SETCURSOR:
+        if ( wxIsBusy() )
+        {
+            extern HCURSOR gs_wxBusyCursor; // from msw\utils.cpp
+
+            ::SetCursor(gs_wxBusyCursor);
+
+            // returning TRUE stops the DefWindowProc() from further processing
+            // this message - exactly what we need because we've just set the
+            // cursor
+            return TRUE;
+        }
+        break;  // leave it to DefWindowProc()
+
     default:
         return MSWDefWindowProc(message, wParam, lParam );
     }