]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/busyinfo.cpp
Fixed wxAtomicInc/Dec() to not use asm/atomic.h header on Linux - it's kernel interna...
[wxWidgets.git] / src / generic / busyinfo.cpp
index 42d406b79f782a8ece3781e40a2f2ffcacece9e4..26c875b43a67b70749519392ba4f0cbcbfe4a8e1 100644 (file)
@@ -1,8 +1,9 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        busyinfo.cpp
+// Name:        src/generic/busyinfo.cpp
 // Purpose:     Information window when app is busy
 // Author:      Vaclav Slavik
 // Copyright:   (c) 1999 Vaclav Slavik
+// RCS-ID:      $Id$
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 
 #if wxUSE_BUSYINFO
 
-#include "wx/stattext.h"
-#include "wx/panel.h"
-#include "wx/utils.h"
+// for all others, include the necessary headers
+#ifndef WX_PRECOMP
+    #include "wx/frame.h"
+    #include "wx/stattext.h"
+    #include "wx/panel.h"
+    #include "wx/utils.h"
+#endif
+
 #include "wx/busyinfo.h"
 
+class WXDLLEXPORT wxInfoFrame : public wxFrame
+{
+public:
+    wxInfoFrame(wxWindow *parent, const wxString& message);
+
+private:
+    DECLARE_NO_COPY_CLASS(wxInfoFrame)
+};
+
 
 wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message)
            : wxFrame(parent, wxID_ANY, wxT("Busy"),
                      wxDefaultPosition, wxDefaultSize,
 #if defined(__WXX11__)
-                     wxTHICK_FRAME
+                     wxRESIZE_BORDER
 #else
                      wxSIMPLE_BORDER
 #endif
@@ -100,9 +115,23 @@ wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message)
 wxBusyInfo::wxBusyInfo(const wxString& message, wxWindow *parent)
 {
     m_InfoFrame = new wxInfoFrame( parent, message);
+    if ( parent && parent->HasFlag(wxSTAY_ON_TOP) )
+    {
+        // we must have this flag to be in front of our parent if it has it
+        m_InfoFrame->SetWindowStyleFlag(wxSTAY_ON_TOP);
+    }
+
     m_InfoFrame->Show(true);
     m_InfoFrame->Refresh();
     m_InfoFrame->Update();
+
+#ifdef __WXGTK20__
+    // FIXME: this is pretty bad, as any call to Yield(), but without it, the
+    //         static text is never shown and neither gdk_display_flush() nor
+    //         gdk_display_sync() nor gdk_window_process_updates() helps
+    wxMilliSleep(100);
+    wxYield();
+#endif
 }
 
 wxBusyInfo::~wxBusyInfo()
@@ -111,6 +140,4 @@ wxBusyInfo::~wxBusyInfo()
     m_InfoFrame->Close();
 }
 
-#endif
-  // wxUSE_BUSYINFO
-
+#endif // wxUSE_BUSYINFO