X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f18f464cbad4254cc704ee2d3a873b069e710926..0b6db82f16ca890ec696d3ed71f1bdb56e649f10:/src/generic/scrlwing.cpp diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index 7add087eda..7c21cb2f1d 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -424,6 +424,9 @@ void wxScrollHelper::SetWindow(wxWindow *win) void wxScrollHelper::DoSetTargetWindow(wxWindow *target) { m_targetWindow = target; +#ifdef __WXMAC__ + target->MacSetClipChildren( true ) ; +#endif // install the event handler which will intercept the events we're // interested in (but only do it for our real window, not the target window @@ -646,8 +649,13 @@ void wxScrollHelper::AdjustScrollbars() // it here for now but it would be better to ensure that all ports // generate EVT_SIZE when scrollbars [dis]appear, emulating it if // necessary, and remove it later + // JACS: Stop potential infinite loop by limiting number of iterations + int iterationCount = 0; + const int iterationMax = 5; do { + iterationCount ++; + GetTargetSize(&w, 0); // scroll lines per page: if 0, no scrolling is needed @@ -759,7 +767,7 @@ void wxScrollHelper::AdjustScrollbars() oldh = h; GetTargetSize( &w, &h ); - } while ( w != oldw || h != oldh ); + } while ( (w != oldw || h != oldh) && (iterationCount < iterationMax) ); #ifdef __WXMOTIF__ // Sorry, some Motif-specific code to implement a backing pixmap @@ -1250,6 +1258,9 @@ bool wxGenericScrolledWindow::Create(wxWindow *parent, const wxString& name) { m_targetWindow = this; +#ifdef __WXMAC__ + MacSetClipChildren( true ) ; +#endif bool ok = wxPanel::Create(parent, id, pos, size, style|wxHSCROLL|wxVSCROLL, name);