X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/30827629fa11f6365f69bd2917e1a35d22c35363..434005ca85ce8b4e08092add395f26147004c298:/src/univ/winuniv.cpp diff --git a/src/univ/winuniv.cpp b/src/univ/winuniv.cpp index a09d562d1f..33de114721 100644 --- a/src/univ/winuniv.cpp +++ b/src/univ/winuniv.cpp @@ -763,9 +763,11 @@ int wxWindow::GetScrollRange(int orient) const void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) { + // use native scrolling when available and do it in generic way + // otherwise: #ifdef __WXX11__ - wxWindowX11::ScrollWindow( dx, dy, rect ); + wxWindowNative::ScrollWindow(dx, dy, rect); #else @@ -786,6 +788,19 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) Refresh(TRUE /* erase bkgnd */, &r); } + // scroll children accordingly: + wxPoint offset(dx, dy); + + for (wxWindowList::Node *node = GetChildren().GetFirst(); + node; node = node->GetNext()) + { + wxWindow *child = node->GetData(); + if ( child != m_scrollbarVert && child != m_scrollbarHorz && + (rect == NULL || rect->Intersects(child->GetRect())) ) + { + child->Move(child->GetPosition() + offset); + } + } #endif }