wxBusyInfo now uses wxGenericStaticText under GTK+, more Refresh/Update updates

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59394 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2009-03-06 23:30:54 +00:00
parent c9c59db7d6
commit d02852036d
4 changed files with 46 additions and 27 deletions

View File

@@ -79,6 +79,10 @@ public:
virtual void RemoveGrab(); virtual void RemoveGrab();
virtual bool IsGrabbed() const { return m_grabbed; } virtual bool IsGrabbed() const { return m_grabbed; }
virtual void Refresh( bool eraseBackground = true,
const wxRect *rect = (const wxRect *) NULL );
// implementation from now on // implementation from now on
// -------------------------- // --------------------------

View File

@@ -24,6 +24,7 @@
#endif #endif
#include "wx/busyinfo.h" #include "wx/busyinfo.h"
#include "wx/generic/stattextg.h"
class WXDLLEXPORT wxInfoFrame : public wxFrame class WXDLLEXPORT wxInfoFrame : public wxFrame
{ {
@@ -46,7 +47,11 @@ wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message)
| wxFRAME_TOOL_WINDOW | wxSTAY_ON_TOP) | wxFRAME_TOOL_WINDOW | wxSTAY_ON_TOP)
{ {
wxPanel *panel = new wxPanel( this ); wxPanel *panel = new wxPanel( this );
#if __WXGTK__
wxGenericStaticText *text = new wxGenericStaticText(panel, wxID_ANY, message);
#else
wxStaticText *text = new wxStaticText(panel, wxID_ANY, message); wxStaticText *text = new wxStaticText(panel, wxID_ANY, message);
#endif
panel->SetCursor(*wxHOURGLASS_CURSOR); panel->SetCursor(*wxHOURGLASS_CURSOR);
text->SetCursor(*wxHOURGLASS_CURSOR); text->SetCursor(*wxHOURGLASS_CURSOR);

View File

@@ -777,6 +777,14 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long)
// overridden wxWindow methods // overridden wxWindow methods
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void wxTopLevelWindowGTK::Refresh( bool WXUNUSED(eraseBackground), const wxRect *WXUNUSED(rect) )
{
wxCHECK_RET( m_widget, wxT("invalid frame") );
gtk_widget_queue_draw( m_widget );
gdk_window_invalidate_rect( m_wxwindow->window, NULL, TRUE );
}
bool wxTopLevelWindowGTK::Show( bool show ) bool wxTopLevelWindowGTK::Show( bool show )
{ {
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") ); wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );

View File

@@ -3526,32 +3526,31 @@ bool wxWindowGTK::ScrollPages(int pages)
return DoScrollByUnits(ScrollDir_Vert, ScrollUnit_Page, pages); return DoScrollByUnits(ScrollDir_Vert, ScrollUnit_Page, pages);
} }
#include "wx/treectrl.h"
void wxWindowGTK::Refresh(bool WXUNUSED(eraseBackground), void wxWindowGTK::Refresh(bool WXUNUSED(eraseBackground),
const wxRect *rect) const wxRect *rect)
{ {
GtkWidget* widget; wxCHECK_RET( (m_widget != NULL), wxT("invalid window") );
if (m_wxwindow)
widget = m_wxwindow;
else if (m_widget)
widget = m_widget;
else
return;
if (!widget->window) if (!m_wxwindow)
return;
if (rect == NULL)
{ {
gdk_window_invalidate_rect( widget->window, NULL, TRUE ); if (rect)
gtk_widget_queue_draw_area( m_widget, rect->x, rect->y, rect->width, rect->height );
else
gtk_widget_queue_draw( m_widget );
} }
else else
{
// Just return if the widget or one of its ancestors isn't mapped
GtkWidget *w;
for (w = m_wxwindow; w != NULL; w = w->parent)
if (!GTK_WIDGET_MAPPED (w))
return;
if (rect)
{ {
int x = rect->x; int x = rect->x;
if (GetLayoutDirection() == wxLayout_RightToLeft) if (GetLayoutDirection() == wxLayout_RightToLeft)
x = GetClientSize().x - x - rect->width; x = GetClientSize().x - x - rect->width;
GdkRectangle r; GdkRectangle r;
r.x = rect->x; r.x = rect->x;
r.y = rect->y; r.y = rect->y;
@@ -3559,6 +3558,9 @@ void wxWindowGTK::Refresh(bool WXUNUSED(eraseBackground),
r.height = rect->height; r.height = rect->height;
gdk_window_invalidate_rect( m_wxwindow->window, &r, TRUE ); gdk_window_invalidate_rect( m_wxwindow->window, &r, TRUE );
} }
else
gdk_window_invalidate_rect( m_wxwindow->window, NULL, TRUE );
}
} }
void wxWindowGTK::Update() void wxWindowGTK::Update()
@@ -3570,7 +3572,7 @@ void wxWindowGTK::Update()
// This ensures nothing will overwrite the drawing we are about to do. // This ensures nothing will overwrite the drawing we are about to do.
gdk_display_sync(display); gdk_display_sync(display);
gdk_window_process_updates(m_widget->window, true); gdk_window_process_updates(m_widget->window, TRUE);
// Flush again, but no need to wait for it to finish // Flush again, but no need to wait for it to finish
gdk_display_flush(display); gdk_display_flush(display);