/////////////////////////////////////////////////////////////////////////////
-// 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 defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "busyinfo.h"
-#endif
-
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#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
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()
m_InfoFrame->Close();
}
-#endif
- // wxUSE_BUSYINFO
-
+#endif // wxUSE_BUSYINFO