]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/cursor.cpp
Avoid overflowing the wake up when handling events in Unix console apps.
[wxWidgets.git] / src / gtk / cursor.cpp
index 73983f1351956e6939b2ce3fb64f83935162f22e..615677e506dae78a9e5c979ef65419958152203c 100644 (file)
@@ -390,20 +390,15 @@ const wxCursor wxBusyCursor::GetBusyCursor()
     return wxCursor(wxCURSOR_WATCH);
 }
 
-static void UpdateCursors(const wxWindowList& list, GdkDisplay*& display)
+static void UpdateCursors(GdkDisplay** display)
 {
-    wxWindowList::const_iterator i = list.begin();
-    for (size_t n = list.size(); n--; ++i)
+    wxWindowList::const_iterator i = wxTopLevelWindows.begin();
+    for (size_t n = wxTopLevelWindows.size(); n--; ++i)
     {
         wxWindow* win = *i;
-        if (display == NULL && win->m_widget)
-        {
-            GdkWindow* w = gtk_widget_get_window(win->m_widget);
-            if (w)
-                display = gdk_drawable_get_display(w);
-        }
-        win->GTKUpdateCursor(true, false);
-        UpdateCursors(win->GetChildren(), display);
+        win->GTKUpdateCursor();
+        if (display && *display == NULL && win->m_widget)
+            *display = gtk_widget_get_display(win->m_widget);
     }
 }
 
@@ -414,8 +409,7 @@ void wxEndBusyCursor()
 
     g_globalCursor = gs_savedCursor;
     gs_savedCursor = wxNullCursor;
-    GdkDisplay* unused = NULL;
-    UpdateCursors(wxTopLevelWindows, unused);
+    UpdateCursors(NULL);
 }
 
 void wxBeginBusyCursor(const wxCursor* cursor)
@@ -423,13 +417,13 @@ void wxBeginBusyCursor(const wxCursor* cursor)
     if (gs_busyCount++ > 0)
         return;
 
-    wxASSERT_MSG( !gs_savedCursor.Ok(),
+    wxASSERT_MSG( !gs_savedCursor.IsOk(),
                   wxT("forgot to call wxEndBusyCursor, will leak memory") );
 
     gs_savedCursor = g_globalCursor;
     g_globalCursor = *cursor;
     GdkDisplay* display = NULL;
-    UpdateCursors(wxTopLevelWindows, display);
+    UpdateCursors(&display);
     if (display)
         gdk_display_flush(display);
 }
@@ -442,6 +436,5 @@ bool wxIsBusy()
 void wxSetCursor( const wxCursor& cursor )
 {
     g_globalCursor = cursor;
-    GdkDisplay* unused = NULL;
-    UpdateCursors(wxTopLevelWindows, unused);
+    UpdateCursors(NULL);
 }