From: Stefan Neis Date: Mon, 9 Jun 2003 18:27:31 +0000 (+0000) Subject: Fixed Refresh to clip update rectangles to the visible area of a X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/75625d796cb7ea32ecb2c0526159180cb2352680?hp=542e68c71931c7a83b75a0f1db4558f5c8fdb570 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. Change corresponds to changes on WX_2_4_BRANCH from 1.408.2.21 to 1.408.2.24. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21024 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index ca83cf7c87..7339c08f07 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -3605,6 +3605,18 @@ void wxWindowGTK::Refresh( bool eraseBackground, const wxRect *rect ) if (g_isIdle) wxapp_install_idle_handler(); + wxRect myRect(0,0,0,0); + if (m_wxwindow && rect) + { + myRect.SetSize(wxSize( m_wxwindow->allocation.width, + m_wxwindow->allocation.height)); + myRect.Intersect(*rect); + if (!myRect.width || !myRect.height) + // nothing to do, rectangle is empty + return; + rect = &myRect; + } + if (eraseBackground && m_wxwindow && m_wxwindow->window) { if (rect) diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index ca83cf7c87..7339c08f07 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -3605,6 +3605,18 @@ void wxWindowGTK::Refresh( bool eraseBackground, const wxRect *rect ) if (g_isIdle) wxapp_install_idle_handler(); + wxRect myRect(0,0,0,0); + if (m_wxwindow && rect) + { + myRect.SetSize(wxSize( m_wxwindow->allocation.width, + m_wxwindow->allocation.height)); + myRect.Intersect(*rect); + if (!myRect.width || !myRect.height) + // nothing to do, rectangle is empty + return; + rect = &myRect; + } + if (eraseBackground && m_wxwindow && m_wxwindow->window) { if (rect)