X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..9a7b7798282622e445efc3318b6c85ff0bed9af8:/src/generic/busyinfo.cpp?ds=sidebyside diff --git a/src/generic/busyinfo.cpp b/src/generic/busyinfo.cpp index 830546db0c..26c875b43a 100644 --- a/src/generic/busyinfo.cpp +++ b/src/generic/busyinfo.cpp @@ -1,15 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: busyinfo.cpp +// Name: src/generic/busyinfo.cpp // Purpose: Information window when app is busy // Author: Vaclav Slavik // Copyright: (c) 1999 Vaclav Slavik -// Licence: wxWindows Licence +// RCS-ID: $Id$ +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "busyinfo.h" -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ @@ -18,24 +15,38 @@ #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, -1, wxT("Busy"), + : wxFrame(parent, wxID_ANY, wxT("Busy"), wxDefaultPosition, wxDefaultSize, #if defined(__WXX11__) - wxTHICK_FRAME + wxRESIZE_BORDER #else wxSIMPLE_BORDER #endif | wxFRAME_TOOL_WINDOW) { wxPanel *panel = new wxPanel( this ); - wxStaticText *text = new wxStaticText(panel, -1, message); + wxStaticText *text = new wxStaticText(panel, wxID_ANY, message); panel->SetCursor(*wxHOURGLASS_CURSOR); text->SetCursor(*wxHOURGLASS_CURSOR); @@ -52,7 +63,7 @@ wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message) int nParentWidth = parent->GetClientSize().x; int nColor; - SetBackgroundColour("WHITE"); + SetBackgroundColour(wxT("WHITE")); nColor = (LONG)GetBackgroundColour().GetPixel(); ::WinSetPresParam( GetHwnd() @@ -60,7 +71,7 @@ wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message) ,sizeof(LONG) ,(PVOID)&nColor ); - panel->SetBackgroundColour("WHITE"); + panel->SetBackgroundColour(wxT("WHITE")); nColor = (LONG)panel->GetBackgroundColour().GetPixel(); ::WinSetPresParam( GetHwndOf(panel) @@ -81,7 +92,7 @@ wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message) ,nHeight ,SWP_SIZE | SWP_MOVE | SWP_ACTIVATE ); - text->SetBackgroundColour("WHITE"); + text->SetBackgroundColour(wxT("WHITE")); nColor = (LONG)text->GetBackgroundColour().GetPixel(); ::WinSetPresParam( GetHwndOf(text) @@ -104,19 +115,29 @@ wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message) wxBusyInfo::wxBusyInfo(const wxString& message, wxWindow *parent) { m_InfoFrame = new wxInfoFrame( parent, message); - m_InfoFrame->Show(TRUE); - wxYield(); + 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->Show(FALSE); + m_InfoFrame->Show(false); m_InfoFrame->Close(); - wxYield(); } -#endif - // wxUSE_BUSYINFO - +#endif // wxUSE_BUSYINFO