diff --git a/include/wx/osx/nonownedwnd.h b/include/wx/osx/nonownedwnd.h index 85c0eb1cd1..a972612b2b 100644 --- a/include/wx/osx/nonownedwnd.h +++ b/include/wx/osx/nonownedwnd.h @@ -114,6 +114,8 @@ public: virtual void HandleResized( double timestampsec ); virtual void HandleMoved( double timestampsec ); virtual void HandleResizing( double timestampsec, wxRect* rect ); + + void WindowWasPainted(); virtual bool Destroy(); @@ -145,6 +147,8 @@ protected: static wxNonOwnedWindow *s_macDeactivateWindow; private : + static clock_t s_lastFlush; + wxRegion m_shape; #if wxUSE_GRAPHICS_CONTEXT wxGraphicsPath m_shapePath; diff --git a/src/osx/nonownedwnd_osx.cpp b/src/osx/nonownedwnd_osx.cpp index 1d643a0fdb..feea6b5d9e 100644 --- a/src/osx/nonownedwnd_osx.cpp +++ b/src/osx/nonownedwnd_osx.cpp @@ -39,6 +39,8 @@ wxWindow* g_MacLastWindow = NULL ; +clock_t wxNonOwnedWindow::s_lastFlush = 0; + // unified title and toolbar constant - not in Tiger headers, so we duplicate it here #define kWindowUnifiedTitleAndToolbarAttribute (1 << 7) @@ -483,10 +485,18 @@ void wxNonOwnedWindow::DoGetClientSize( int *width, int *height ) const *height = h ; } +void wxNonOwnedWindow::WindowWasPainted() +{ + s_lastFlush = clock(); +} void wxNonOwnedWindow::Update() { - m_nowpeer->Update(); + if ( clock() - s_lastFlush > CLOCKS_PER_SEC / 30 ) + { + s_lastFlush = clock(); + m_nowpeer->Update(); + } } WXWindow wxNonOwnedWindow::GetWXWindow() const diff --git a/src/osx/window_osx.cpp b/src/osx/window_osx.cpp index 012deb900d..2c13ea8cb5 100644 --- a/src/osx/window_osx.cpp +++ b/src/osx/window_osx.cpp @@ -2099,6 +2099,11 @@ bool wxWindowMac::MacDoRedraw( long time ) } m_updateRegion = formerUpdateRgn; + + wxNonOwnedWindow* top = MacGetTopLevelWindow(); + if (top) + top->WindowWasPainted() ; + return handled; }