fix drawing from Update() being overwritten, fixes wxBusyInfo not drawing properly without wxYield

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2009-02-01 06:20:54 +00:00
parent 6d8978f030
commit ab0c1a3c15
2 changed files with 10 additions and 15 deletions

View File

@@ -124,14 +124,6 @@ wxBusyInfo::wxBusyInfo(const wxString& message, wxWindow *parent)
m_InfoFrame->Show(true); m_InfoFrame->Show(true);
m_InfoFrame->Refresh(); m_InfoFrame->Refresh();
m_InfoFrame->Update(); 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() wxBusyInfo::~wxBusyInfo()

View File

@@ -3570,13 +3570,16 @@ void wxWindowGTK::Refresh(bool WXUNUSED(eraseBackground),
void wxWindowGTK::Update() void wxWindowGTK::Update()
{ {
GtkUpdate(); if (m_widget)
{
// when we call Update() we really want to update the window immediately on GdkDisplay* display = gtk_widget_get_display(m_widget);
// screen, even if it means flushing the entire queue and hence slowing down // Flush everything out to the server, and wait for it to finish.
// everything -- but it should still be done, it's just that Update() should // This ensures nothing will overwrite the drawing we are about to do.
// be called very rarely gdk_display_sync(display);
gdk_flush(); GtkUpdate();
// Flush again, but no need to wait for it to finish
gdk_display_flush(display);
}
} }
void wxWindowGTK::GtkUpdate() void wxWindowGTK::GtkUpdate()