+
+// Yield to other apps/messages and disable user input
+bool wxSafeYield(wxWindow *win)
+{
+ wxNode *node;
+ for ( node = wxTopLevelWindows.GetFirst();
+ node;
+ node = node->GetNext() )
+ ((wxWindow*)node->GetData())->Enable(FALSE);
+
+ // always enable ourselves
+ if(win) win->Enable(true);
+ bool rc = wxYield();
+
+ for ( node = wxTopLevelWindows.GetFirst();
+ node;
+ node = node->GetNext() )
+ ((wxWindow*)node->GetData())->Enable(TRUE);
+ return rc;
+}
+