#include "wx/cursor.h"
 #include "wx/utils.h"
+#include "wx/app.h"
 
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
         case wxCURSOR_CROSS:            gdk_cur = GDK_CROSSHAIR; break;
         case wxCURSOR_SIZEWE:           gdk_cur = GDK_SB_H_DOUBLE_ARROW; break;
         case wxCURSOR_SIZENS:           gdk_cur = GDK_SB_V_DOUBLE_ARROW; break;
+        case wxCURSOR_ARROWWAIT:
         case wxCURSOR_WAIT:
         case wxCURSOR_WATCH:            gdk_cur = GDK_WATCH; break;
         case wxCURSOR_SIZING:           gdk_cur = GDK_SIZING; break;
     wxSetCursor( gs_savedCursor );
     gs_savedCursor = wxNullCursor;
 
-    wxYield();
+    if (wxTheApp)
+        wxTheApp->SendIdleEvents();
 }
 
 void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) )
 
     wxSetCursor( wxCursor(wxCURSOR_WATCH) );
 
-    wxYield();
+    if (wxTheApp)
+        wxTheApp->SendIdleEvents();
 }
 
 bool wxIsBusy()