Fixed Refresh to clip update rectangles to the visible area of a

(scrolled) window. If there are many invisible/partly visible
        rectangles in the update region GTK+-1.2.10 starts complaining
        about bad match errors and soon crashes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@20966 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis
2003-06-06 20:12:39 +00:00
parent 6bc7d0dda4
commit bcacb15d36
2 changed files with 20 additions and 0 deletions

View File

@@ -3627,6 +3627,16 @@ void wxWindowGTK::Refresh( bool eraseBackground, const wxRect *rect )
#ifndef __WXGTK20__
if (g_isIdle)
wxapp_install_idle_handler();
wxRect myRect (0, 0, m_wxwindow->allocation.width,
m_wxwindow->allocation.height);
if (rect){
myRect.Intersect(*rect);
if (!myRect.width || !myRect.height)
// nothing to do, rectangle is empty
return;
rect = &myRect;
}
if (eraseBackground && m_wxwindow && m_wxwindow->window)
{

View File

@@ -3627,6 +3627,16 @@ void wxWindowGTK::Refresh( bool eraseBackground, const wxRect *rect )
#ifndef __WXGTK20__
if (g_isIdle)
wxapp_install_idle_handler();
wxRect myRect (0, 0, m_wxwindow->allocation.width,
m_wxwindow->allocation.height);
if (rect){
myRect.Intersect(*rect);
if (!myRect.width || !myRect.height)
// nothing to do, rectangle is empty
return;
rect = &myRect;
}
if (eraseBackground && m_wxwindow && m_wxwindow->window)
{