]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/winuniv.cpp
Give wxScrolledWindow its own Layout method that takes into account
[wxWidgets.git] / src / univ / winuniv.cpp
index a09d562d1fc3e6f2153e3d103e01e63ed510afc4..33de11472160ddb1cf092b05a2e52c6d88e59f05 100644 (file)
@@ -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
 }